springmvc学习----3.请求处理
程序员文章站
2023-12-31 09:04:22
请求处理...
请求处理
/**
* 获取请求信息
* @RequestParam:获取请求参数,若方法参数和请求参数则可以不使用此注解,springmvc会自动封装
* 使用注解可以指定获取那个参数的值,如果没带则会报400,可以设置required=false来避免
* defaultValue可以指定默认值
* @RequestHeader:根据key获取请求头中的值,例如:User-Agent,但是如果请求头中没有这个参数就会报错
* @CookieValue:根据key获取cookie的值,例如:JSESSIONID
*/
@RequestMapping("/handler01")
public String handler01(
@RequestParam(value = "username",required = false,defaultValue = "null") String username,
@RequestHeader(value = "User-Agent",required = false,defaultValue = "null") String userAgent,
@CookieValue(value = "JSESSIONID",required = false,defaultValue = "null")String JSESSIONID) {
System.out.println("获取到的值:"+username);
System.out.println("userAgent:"+userAgent);
System.out.println("JSESSIONID:"+JSESSIONID);
return "success";
}
/**
* 如果参数是pojo,则spring会自动封装对象,每一个属性按照name尝试赋值
*/
@RequestMapping("/handler02")
public String handler02(Person person) {
System.out.println(person);
return "success";
}
/**
* 在方法中也可以传入一些原生API
* 例如:request,response,session,Principal
* Locale,InputStream,OutputStream,Reader,Writer
* @throws Exception
*/
@RequestMapping("/handler03")
public String handler03(HttpServletRequest request,HttpServletResponse response) throws Exception {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
request.setAttribute("msg", "你好");
return "success";
}
但是如果页面传过来的数据为中文,则可能会出现乱码的情况:
- 请求乱码
- GET请求:修改tomcat安装目录下的server.xml配置,在8080端口标签处添加属性:URIEncoding=“UTF-8”
- POST请求:在第一次获取请求参数之前设置:request.setCharacterEncoding(“UTF-8”)
- 响应乱码
- response.setContentType(“text/html;charset=utf-8”)
所以我们可以先一个过滤器来处理乱码问题,而spring已经帮我们写好了这个过滤器:CharacterEncodingFilter,注意这个过滤器最好配置在其他过滤器前面,否则可能不起作用
- response.setContentType(“text/html;charset=utf-8”)
<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>
<init-param>
<param-name>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>
<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>
本文地址:https://blog.csdn.net/weixin_44246189/article/details/107367301
推荐阅读
-
springmvc学习----3.请求处理
-
SpringMVC处理multipart请求的示例代码
-
SpringMVC处理multipart请求的示例代码
-
Java进阶篇5_SpringMVC的简介、SpringMVC的组件解析、SpringMVC的数据响应、SpringMVC获取请求数据、SpringMVC拦截器、SpringMVC异常处理机制
-
请求从Servlet到SpringMVC的处理过程
-
SpringMVC中如何解决POST请求中文乱码问题GET的又如何处理
-
springmvc 处理http get/post请求中文乱码的问题
-
SpringMVC是如何处理请求的?
-
SpringMVC学习(一)——环境搭建、请求参数
-
手牵手学习react之如何封装请求及处理跨域(五)