常用注解、HttpMessageConverter

目录

@RequestMapping

请求类型

pararms接收参数

中文乱码

自定义字符编码过滤器

内置字符编码过滤器

支持Ant风格资源地址

@PathVariable

@RequestParam

请求参数GET

表单参数POST

@ModelAttribute

HttpMessageConverter

@ResponseBody

@ResquestBody

基本用法

重要用法


@RequestMapping

使用@RequestMapping要在springmvc.xml中加入<mvc:annotation-driven />

用于映射请求路径

可以添加在类或方法上

请求类型

请求类型包括GET、POST、PUT、DELETE等

默认支持GET和POST两种方式

简写:@GetMapping、@PostMapping、@PutMapping、@DeleteMapping

@PostMapping("/buy")

等价

@RequestMapping("/buy",method = RequestMethod.POST)

pararms接收参数

提交的参数名和目标方法的形参名保持一致,会自动传递给目标方法上的形参

中文乱码

Tomcat10及以上版本,无乱码

get乱码

post乱码:request.setCharacterEncoding("UTF-8");

自定义字符编码过滤器

Filter在Servlet之前执行
有多个filter,按顺序执行,要把字符编码过滤器放最前面

    <filter>
        <filter-name>MyCharacterFilter</filter-name>
        <filter-class>com.mvc.filter.MyCharacterFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>MyCharacterFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

内置字符编码过滤器

只需要配置xml

<filter>
    <filter-name>CharacterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
    <!--让请求体的编码方式强行使用encoding字符集-->
    <init-param>
      <param-name>forceRequestEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
    <!--让响应体的编码方式强行使用encoding字符集-->
    <init-param>
      <param-name>forceResponseEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

支持Ant风格资源地址

** 通配符 在使用的时候,左右不能出现字符,只能是/

spring5及以前,/**/test是可以的

spring6及以后,/**/test是错误的,** 通配符 只能作为路径的末尾出现

@PathVariable

从URI中获取参数

可以把value省略

@RequestParam

从请求携带的参数中获取(查询或表单)

适用于参数少的情况,参数多可以使用对象参数接收

如果希望将请求参数的值都获取到,可以使用map,但是有多个值(List)只会取第一个,因为map的key是唯一的

如果提交类型是数组,也可以采用String来接受,会用逗号,分开

@RequestParam 这个注解是可以省略的,如果方法形参的名字和提交数据时的name相同,则 @RequestParam 可以省略。

但有一个前提:如果你采用的是Spring6+版本

你需要在pom.xml文件中指定编译参数'-parameter',配置如下:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.12.1</version>
            <configuration>
                <source>21</source>
                <target>21</target>
                <compilerArgs>
                    <arg>-parameters</arg>
                </compilerArgs>
            </configuration>
        </plugin>
    </plugins>
</build>

请求参数GET

表单参数POST

1. 方法的形参用对应的类型来指定即可, SpringMVC会自动的进行封装
2. 表单请求参数名和对象的字段名保持一致
3. 如果属性是对象,通过 对象名.字段名,参数名是 pet.id和pet.name
4、框架会自动调用构造函数和对应的set()方法,如果请求参数是name,执行setName()

 

@ModelAttribute

执行其他方法时,都会先执行添加@ModelAttribute的方法

HttpMessageConverter

@ResponseBody

java对象直接以json格式返回给浏览器,必须引入可以处理json的依赖,例如:jackson

@RestController = @Controller + @Responsebody,放在类上

@ResquestBody

基本用法

POST将数据放在请求体里

将请求体传递给java程序,用String类型变量来接受

重要用法

如果请求体提交的数据是JSON格式,那么可以将JSON格式字符串转成java对象

必须引入可以处理json的依赖

使用的消息转换器是:MappingJackson2HttpMessageConverter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值