• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Springboot-Web开发一

武飞扬头像
Rk..
帮助1

目录

1、SpringMVC自动配置

2、简单功能分析

2.1、静态资源访问

        1、静态资源目录

2.2、自定义首页

2.3自定义 Favicon(网站图标)

2.4、静态资源配置原理

3、请求参数处理

1、rest使用与原理

2、请求参数

        2.1、@PathVariable("xxx")  

        2.2、@RequestHeader("xxx")

        2.3、@RequestParam("xxx")

        2.4、@MatrixVariable("xxx")矩阵变量

4、响应数据与内容协商

1、响应JSON

        1.1、引入jackson.jar

        1.2、给类加上RestController或者给方法上加上@ResponseBody注解

2、 响应xml

        2.1、引入xml jar包

        2.2、使用postman测试返回json和xml


1、SpringMVC自动配置

Spring Boot 自动配置好了SpringMVC

 以下是SpringBoot对SpringMVC的默认配置:(WebMvcAutoConfiguration

Inclusion of ContentNegotiatingViewResolver and BeanNameViewResolver beans.

        自动配置了ViewResolver(视图解析器:根据方法的返回值得到视图对象(View),视图对象决定如何渲染(转发?重定向?))
        ContentNegotiatingViewResolver:组合所有的视图解析器的;
        如何定制:我们可以自己给容器中添加一个视图解析器;自动的将其组合进来;
Support for serving static resources, including support for WebJars (see below).静态资源文件夹路径,webjars

Static index.html support. 静态首页访问

Custom Favicon support (see below). favicon.ico

自动注册了 of Converter, GenericConverter, Formatter beans.

        Converter:转换器; public String hello(User user):类型转换使用Converter
        Formatter 格式化器; 2017.12.17===Date;

2、简单功能分析

2.1、静态资源访问

        1、静态资源目录

        只要静态资源放在类路径下: /static (or /public or /resources or /META-INF/resources

学新通

        访问 : 当前项目根路径/ 静态资源名

                      http://localhost:8080/1.jpg

        原理: 静态映射/**

        请求进来,先去找Controller看能不能处理。不能处理的所有请求又都交给静态资源处理器。静态资源也找不到则响应404页面。

修改静态资源默认路径:

spring:

  mvc:
    static-path-pattern: /rk/**

        访问 : 当前项目根路径/ rk/ 静态资源名   

                     http://localhost:8080/rk/1.jpg

2.2、自定义首页

静态资源路径下 index.html

    • 可以配置静态资源路径
    • 但是不可以配置静态资源的访问前缀。否则导致 index.html不能被默认访问
      1.  
        spring:
      2.  
        # mvc:
      3.  
        # static-path-pattern: /res/** 这个会导致welcome page功能失效

2.3自定义 Favicon(网站图标)

        favicon.ico放在静态资源目录下即可

2.4、静态资源配置原理

  • pringBoot启动默认加载 xxxAutoConfiguration 类(自动配置类)
  • SpringMVC功能的自动配置类 WebMvcAutoConfiguration,生效
  • 学新通

 @ConditionalOnMissingBean({xxx.class}):表示没有xxx.class该组件才会注入到容器中          

3、请求参数处理

1、rest使用与原理

  • @xxxMapping;
  • Rest风格支持(使用HTTP请求方式动词来表示对资源的操作
    • 以前:/getUser   获取用户  /deleteUser 删除用户   /editUser  修改用户   /saveUser 保存用户
    • 现在: /user GET-获取用户 DELETE-删除用户 PUT-修改用户 POST-保存用户
    • 核心Filter;HiddenHttpMethodFilter
      • 用法: 表单method=post,隐藏域 _method=put
      • SpringBoot中手动开启

前端页面:

  1.  
    <body>
  2.  
    测试REST风格
  3.  
    <form action="/user" method="post">
  4.  
    <input value="REST-POST 提交" type="submit">
  5.  
    </form>
  6.  
    <form action="/user" method="get">
  7.  
    <input value="REST-GET 提交" type="submit">
  8.  
    </form>
  9.  
    <form action="/user" method="post">
  10.  
    <input name="_method" type="hidden" value="PUT">
  11.  
    <input value="REST-PUT 提交" type="submit">
  12.  
    </form>
  13.  
    <form action="/user" method="post">
  14.  
    <input name="_method" type="hidden" value="DELETE">
  15.  
    <input value="REST-DELETE 提交" type="submit">
  16.  
    </form>
  17.  
    </body>

后端controller:

  1.  
    public class restController {
  2.  
    @RequestMapping(value = "/user",method = RequestMethod.GET)
  3.  
    public String getUser(){
  4.  
    return "GET-张三";
  5.  
    }
  6.  
     
  7.  
    @RequestMapping(value = "/user",method = RequestMethod.POST)
  8.  
    public String saveUser(){
  9.  
    return "POST-张三";
  10.  
    }
  11.  
     
  12.  
     
  13.  
    @RequestMapping(value = "/user",method = RequestMethod.PUT)
  14.  
    public String putUser(){
  15.  
    return "PUT-张三";
  16.  
    }
  17.  
     
  18.  
    @RequestMapping(value = "/user",method = RequestMethod.DELETE)
  19.  
    public String deleteUser(){
  20.  
    return "DELETE-张三";
  21.  
    }
  22.  
    }

2、请求参数

           2. 1、@PathVariable("xxx")  

     可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable(“xxx“)

    @PathVariable Map<String,String>//获取所有URL中的参数

学新通

        访问路径URL中的参数必须要和@PathVariable("xxx")中的参数名一样,否则获取不到值

 学新通

       2. 2、@RequestHeader("xxx")

                获取请求头xxx的信息

                @RequestHeader Map<String,String>  这个是获取所有请求头的信息

学新通

  1.  
    @RestController
  2.  
    public class ParameterTest {
  3.  
    @GetMapping("/luolin/{id}/rk/{username}")
  4.  
    public Map<String,Object> getParam(
  5.  
    @RequestHeader("User-Agent")String header,//只获取User-Agent这一个
  6.  
    @RequestHeader Map<String,String>header2//获取所有的请求头
  7.  
    ){
  8.  
    Map<String,Object> map=new HashMap<>();
  9.  
    map.put("header",header);
  10.  
    map.put("header2",header2);
  11.  
    return map;
  12.  
    }
  13.  
    }

学新通        2. 3、@RequestParam("xxx")

                获取表单中传递过来的参数就是URL中age=5&sex=男,这样的参数

                @RequestParam Map<String,String> //获取表单中所有的参数

  1.  
    @RestController
  2.  
    public class ParameterTest {
  3.  
    @GetMapping("/luolin/{id}/rk/{username}")
  4.  
    public Map<String,Object> getParam(
  5.  
    @PathVariable Map<String,String> parms,//获取所有URL中传递过来的参
  6.  
    @RequestParam("age") Integer age,//获取表单中传递的参数
  7.  
    @RequestParam("sex") String sex
  8.  
    ){
  9.  
    Map<String,Object> map=new HashMap<>();
  10.  
    map.put("parms",parms);
  11.  
    map.put("age",age);
  12.  
    map.put("sex",sex);
  13.  
    return map;
  14.  
    }
  15.  
    }

学新通

       2. 4、@MatrixVariable("xxx")矩阵变量

                矩阵变量,Springboot默认是禁用了矩阵变量功能,需要在手动开启

  1.  
    @Configuration
  2.  
    public class WebConfig implements WebMvcConfigurer {
  3.  
    @Override//实现了WebMvcConfigurer接口,重写了ConfigurePathMatch方法
  4.  
    public void configurePathMatch(PathMatchConfigurer configurer) {
  5.  
    UrlPathHelper urlPathHelper=new UrlPathHelper();
  6.  
    //不移除;后面的内容 矩阵变量功能就可以生效
  7.  
    urlPathHelper.setRemoveSemicolonContent(false);
  8.  
    configurer.setUrlPathHelper(urlPathHelper);
  9.  
    }
  10.  
    }

使用:

  1.  
    ///school/student;name=rk;age=20;hoby=study,playgame,listen"
  2.  
    @GetMapping("/school/{path}")//注意path是路变量
  3.  
    public Map student(
  4.  
    @MatrixVariable("name") String name,
  5.  
    @MatrixVariable("age") Integer age,
  6.  
    @MatrixVariable("hoby")List<String> hoby){
  7.  
    Map<String,Object> map=new HashMap<>();
  8.  
    map.put("username",name);
  9.  
    map.put("userage",age);
  10.  
    map.put("userhoby",hoby);
  11.  
    return map;
  12.  
    }

学新通

4、响应数据与内容协商

学新通

1、响应JSON

        1.1、引入jackson.jar

  1.  
     
  2.  
    <dependency>
  3.  
    <groupId>org.springframework.boot</groupId>
  4.  
    <artifactId>spring-boot-starter-json</artifactId>
  5.  
    <version>2.3.4.RELEASE</version>
  6.  
    <scope>compile</scope>
  7.  
    </dependency>

        1.2、给类加上RestController或者给方法上加上@ResponseBody注解

  1.  
    @Controller
  2.  
    public class TestController {
  3.  
    @ResponseBody
  4.  
    @GetMapping("/test/book")
  5.  
    public book test(){
  6.  
    book book1=new book();
  7.  
    book1.setId(1);
  8.  
    book1.setName("雪中悍刀行");
  9.  
    book1.setPrice(234);
  10.  
    return book1;
  11.  
    }
  12.  
    }

 学新通

2、 响应xml

        2.1、引入xml jar包

  1.  
    <dependency>
  2.  
    <groupId>com.fasterxml.jackson.dataformat</groupId>
  3.  
    <artifactId>jackson-dataformat-xml</artifactId>
  4.  
    </dependency>

        2.2、使用postman测试返回json和xml

学新通

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbicag
系列文章
更多 icon
同类精品
更多 icon
继续加载