一、请求参数处理
1.SpringMvc对请求参数的处理
@RequestParam:获取请求的参数
如何获取SpringMVC中请求中的信息
默认情况下,可以直接在方法的参数中填写跟请求一样的名称,此时会默认接受参数
如果有值,直接赋值,如果没有,那么直接给空值
@RequestParam:获取请求中的参数值,使用此注解之后,参数的名称不需要跟请求 的名称一致,但是必须要写
此注解还包含三个参数:
value:表示要获取的参数值
required:表示此参数是否必须,默认是true,如果不写参数那么会报错, 如果值为false,那么不写参数不会有任何错误
defaultValue:如果在使用的时候没有传递参数,那么定义默认值即可
示例:
@RequestMapping("/bobo") public String bobo(@RequestParam(value = "username", defaultValue = "徐庶") String name) { System.out.println(name); return "index.jsp"; }
@RequestHeader:获取请求头信息
如果需要获取请求头信息该如何处理呢?
可以使用@RequestHeader注解,
如果要获取请求头中没有的信息,那么此时会报错
同样,此注解中也包含三 个参数,跟@RequestParam一样 value required defalutValue
示例:
@RequestMapping("/header") public String header(@RequestHeader("Host") String host){ System.out.println(host); return "/index.jsp"; }
@CookieValue:获取cookie中的值
如果需要获取cookie信息该如何处理呢?
可以使用@CookieValue注解
如果要获取cookie中没有的信息,那么此时会报错
同样,此注解中也包含三 个参数,跟@RequestParam一样 value required defalutValue
示例:
@RequestMapping("/cookie") public String cookie(@CookieValue("JSESSIONID") String jsessionId){ System.out.println(jsessionId); return "/index.jsp"; }
2.乱码问题的解决
我们在表单或者发送请求的时候,经常会遇到中文乱码的问题
那么 如何解决乱码问题呢?
GET请求:修改tomcat的server.xml,在Connector标签后面+ URIEncoding=“utf-8”
POST请求:编写过滤器进行实现
在web.xml中加入过滤器进行实现POST请求
注:此过滤器要写在其他过滤器前面,否则不起作用
<!-- 解决编码识别问题--> <filter> <filter-name>characterEncodingFileter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <!-- encoding 编码格式--> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <!-- 同时开启请求和响应的编码设置 --> <init-param> <param-name>transformWsdlLocations</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFileter</filter-name> <servlet-name>springmvc</servlet-name> </filter-mapping>
3.SpringMvc对原生API的支持
springMvc中的handler可以接收如下的servletAPI:
1.HttpServletRequest
2.HttpServletResponse
3.HttpSession
4.java.security.Principal
5.Locale
6.InputStream
7.OutputStream
8.Reader
9.Writer
通过导入Tomcat中lib文件下的service和jsp包 导入依赖
示例:
@RequestMapping("/servlet") public String servlet(String username , HttpServletRequest request, HttpServletResponse response){ System.out.println(username); String name = request.getParameter("name"); System.out.println(name); request.setAttribute("name",name); return "/index.jsp"; }