Web入门

  • SpringBoot将传统Web开发的mvc、json、tomcat等框架整合,提供了spring-boot-starter-web组件,简化了Web应用配置。
  • 创建SpringBoot项目勾选Spring Web选项后,会自动将spring-boot-starter-web组件加入到项目中。
  • spring-boot-starter-web启动器主要包括web、webmvc、json、tomcat等基础依赖组件,作用是提供Web开发场景所需的所有底层依赖
  • webmvc为Web开发的基础框架,json为JSON数据解析组件,tomcat为自带的容器依赖

控制器Controller

  • SpringBoot提供了@Controller@RestController两种注解来标识此类负责接收和处理HTTP请求。、
  • 如果请求的是页面和数据,使用@Controller注解即可;
  • 如果只是请求数据,则可以使用@RestController注解

@Controller的用法

  • @Controller通常与Thymeleaf模版引擎结合使用。
  • @Controller主要用于前后端不分离的项目

@RestController的用法

默认情况下,@RestController注解会将返回的对象数据转换为JSON格式

路由映射

@RequestMapping

  • @RequestMapping注解主要负责URL的路由映射,它可以添加在Controller类或者具体的方法上
  • 如果添加在Controller类上,则这个Controller中的所有路由映射都将会加上此映射规则,如果添加在方法上,则只对当前方法生效
  • @RequestMapping注解包含很多属性参数来定义HTTP的请求映射规则。常用参数如下

    • value:请求URL的路径,支持URL模版、正则表达式

      @RequestMapping("/user")

      @RequestMapping支持使用通配符匹配URL,用于统一映射某些URL规则类似的请求

      @RequestMapping("/getJson/*.json")

      这样当在浏览器中请求/getJson/a.json或/getJson/b.json时都会匹配到后台的json方法

    • method:HTTP请求方法
      HTTP请求有GET、POST、PUT、DELETE等方式。@RequestMapping注解提供了method参数制定的Method类型,包括RequestMethod.GET、RequestMethod.Post等值,分别对应HTTP请求的Method

      @RequestMapping(value = "/getData", method = RequestMethod.GET)
      public String getData(){
          return "hello";
      }

      Method匹配也可以使用@GetMapping@PostMapping等注解代替。(更常用)

    • consumes:请求的媒体类型(Content-Type),如application/json
    • produces:响应的媒体类型
    • params:请求的参数
    • headers:请求头的值

参数传递

  • @RequestParam将请求参数绑定到控制器的方法参数上,接收的参数来自HTTP请求体或请求url的QueryString,当请求的参数名称与Controller的业务方法参数名称一致时,@RequestParam可以省略
    如果在GET请求中携带参数,则参数名需要跟访问方法的入参对得上

    // http://localhost:8080/hello?msg=zhangsan     get请求传递的参数msg与hello方法中的入参名匹配
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String hello(String msg){
        return "hello," + msg;
    }

    如果接口方法入参的参数名与请求中携带的参数名不一致,则需要使用@RequestParam来进行映射

    // http://localhost:8080/hello?msg=zhangsan     get请求传递的参数msg与hello方法中的入参名匹配
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    // 这里方法的参数名与请求携带的参数名不一致,所以需要进行映射,将msg映射到message上
    public String hello(@RequestParam("msg") String message){
        return "hello," + message;
    }

    如果该参数是可选的,则可以加上require=false属性

    // http://localhost:8080/hello?msg=zhangsan     get请求传递的参数msg与hello方法中的入参名匹配
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String hello(@RequestParam(value = "msg", require = false) String message){
        return "hello," + message;
    }
  • @PathVaraible用来处理动态的URL,URL的值可以作为控制器中处理方法的参数
  • @RequestBody接收的参数是来自requestBody中,即请求体。一般用于处理非Content-Type:application/x-www-form-urlencoded编码格式的数据
    如在接收json格式的数据时,则需要在方法的入参中填写该注解

    @RequestMapping(value = "/hello", method = RequestMethod.POST)
    public String hello(@RequestBody Users users){
        return users.toString();
    }

image-20220901210232255

过滤规则

如果需要为静态资源指定访问的路径,那么就需要设置过滤规则

过滤规则需要在application.properties中配置

# 默认的过滤规则(不写也存在)
spring.mvc.static-path-pattern=/**

如果要修改访问路径,则在/前进行修改**

如我要将访问路径变成localhost:8080/images/ji.jpg,那么需要进行以下修改

spring.mvc.static-path-pattern=/images/**

image-20220902103634725

可以看到访问路径已经发生了变化

如果你不想把static文件夹作为放置静态文件的文件夹,而是想另外指定一个路径来存放静态文件,那么也需要在配置文件中进行配置

如:我要创建一个statics文件夹作为存放静态资源的目录,而不是放在static

spring.web.resources.static-locations=classpath:/statics

修改完后把ji.jpg剪切到statics中,再通过浏览器进行访问

image-20220902104246688

可以看到对访问路径的修改生效了

最后修改:2022 年 09 月 05 日
如果觉得我的文章对你有用,能不能v我50参加疯狂星期四