配置全局乱码过滤器
参数绑定注解@RequestParam
注解@RequestParam的参数使用说明
获得Restful风格的参数
自定义类型转换器
自定义转换器的开发步骤:
获得Servlet相关API
请求数据的乱码问题
当postt请求时,数据会出现乱码,我们可以设置一个过滤器来进行编码的过滤。
在web.xml中配置过滤器即可
<!--配置过滤的filter-->
<filter>
<!--起个名字 -->
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<!-- 将字符集设置utf-8 -->
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<!--所有文件都进行过滤扫描 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
当请求的参数名称与Controller的业务方法参数名称不一致是,就需要通过@RequestParam注解显式的绑定
业务方法中的参数为username,请求的参数为name,两者不一致,所以需要进行绑定,使用**@RequestParam(value="name")进**行
value:与请求参数名称
required:指在指定的请求参数是否必须包括,默认是true,默认值下提交时如果没有此参数则报错
defaultValue:放没有指定参数时,则使用的默认值赋值
Restful是一种软件架构风格、设置风格,而不是标准,只是提供了一组设计原则和约束条件。主要用于客服端和服务器交互的软件,基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存机制等
Restful风格的请求是使用**“url+请求方式**”表示一次请求的目的地,HTTP协议里面四个表示操作方式的动词如下
例如:
上述url地址/user/1中的1就是要获得的请求参数,在SpringMVC中可以使用占位符进行参数绑定。地址/user/1可以写成/user/{id},占位符{id}对应的就是1的值。在业务方法中我们可以使用**@PathVariable注解进行占位符的匹配获取工作。**
//配置类,使用注解把这个类放到容器中
@Controller
@RequestMapping(value="/user")
public class userController {
//localhost:8080/quick17/zhangsan
@RequestMapping(value = "/quick17/{username}",method=RequestMethod.GET)
@ResponseBody
public void save17(@PathVariable(value = "username") String username) {
System.out.println(username);
}
}
控制台就会打印出张三
SpringMVC默认已经提供了一些常用的类型转换器,例如客户端提交得字符串转化为int型进行参数设置但不是所有的数据类型都提供了转换器,没有提供的就需要自定义转换器,例如:日期类型的数据就需要自定义转换器。
①定义转换器类实现Converter接口
在converter包下。
package com.converter;
import org.springframework.core.convert.converter.Converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
//Converter<s,d>String类型转date类型
public class DateConverter implements Converter<String, Date> {
public Date convert(String dateStr) {
//将日期的字符串转换成日期对象 返回
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = format.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}
②在配置文件中声明转换器
spring-mvc.xml中
<!--申明转换器 -->
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<list>
<bean class="com.converter.DateConverter"/>
</list>
</property>
</bean>
③在<annotation-driven>中引用转换器
也在spring-mvc.xml中
<!-- mvc配置注解驱动-->
<mvc:annotation-driven conversion-service="conversionService"/>
SpringMVC支持使用原始ServletAPI对象作为控制器方法的参数进行注入,常用的对象如下:
会打印一些地址。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_60719453/article/details/125960711
内容来源于网络,如有侵权,请联系作者删除!