目录
@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