5.请求数据的乱码问题
<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>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
6.参数绑定注解
当提交的参数名称和方法中参数名称不一致时,使用@requestPram.
即可以通过name来提交参数值
@ResponseBody
public void save15(@RequestParam("name") String username ) {
System.out.println(username);
}
在这个注解中有三个参数使用:
value:即想要替代的参数
requried:有没有必要提供参数
defaultvalue:t提供默认参数
7.获得Restful风格的参数
Restful风格是一种软件架构风格,设计风格,而不是标准,只是提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件,基于这个风格设计的软件可以更简洁更有层次,更易实现缓存机制。
Restful风格的请求是使用“url+请求方式”,表示一次请求目的的,HTTP协议中,四个表示操作方式的动词如下;
GET:用于获取资源
POST:用于新建资源
PUT:用于更新资源
DELETE:用于删除资源
@RequestMapping("/quick16/{username}")
@ResponseBody
public void save16(@PathVariable("username") String username ) {
System.out.println(username);
}
8.自定义类型转换器
SpringMVC默认提供了一些常用的类型转换器,例如提交的字符串可以转换为int类型的数据。但是这些默认的转换器并不能完美的转换我们需要的数据类型。
1.自定义转换器类实现Converter接口
public class DataConverter implements Converter<String,Date> {
@Override
public Date convert(String s) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = simpleDateFormat.parse(s);
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}
2.在配置文件中声明转换器
3.在< annotation-driven >中引用转换器
<mvc:annotation-driven conversion-service="conversionService"/>
9.获得Servlet相关的API
SpringMVC支持使用原始ServletAPI对象作为控制器方法的参数进行注入,常用的对象如下:
- HTTPServletRequest
- HttpServletresponse
- HttpSession
@RequestMapping("/quick18")
@ResponseBody
public void save18(HttpServletResponse response, HttpServletRequest request, HttpSession session) {
System.out.println(request);
System.out.println(response);
System.out.println(session);
}
10.获取请求头信息
@RequestHeader
@RequestMapping("/quick19")
@ResponseBody
public void save19(@RequestHeader(value = "User-Agent") String user_agent) {
System.out.println(user_agent);
}
@CookieValue
@RequestMapping("/quick20")
@ResponseBody
public void save20(@CookieValue(value = "JSESSIONID") String jSessionId) {
System.out.println(jSessionId);
}