Springmvc参数绑定
- 【应用】能够使用SpringMVC获取基本类型参数
- 【应用】能够使用SpringMVC获取POJO类型参数
1、默认支持的参数类型
处理器形参中添加如下类型的参数,处理适配器会默认识别并进行赋值。
HttpServletRequest
通过request对象获取请求信息
HttpServletResponse
通过response处理响应信息
HttpSession
通过session对象得到session中存放的对象
Model/ModelMap
Model
Model对象可以向页面传递数据,其本质都是使用Request对象向jsp传递数据。
ModelMap
ModelMap是Model接口的实现类,也可以通过ModelMap向页面传递数据
使用Model和ModelMap的效果一样,如果直接使用Model,springmvc会实例化ModelMap。
代码如下:
@RequestMapping("/quick1")
//绑定默认参数 注入Servlet 相关API
public void quick1(HttpServletRequest request , HttpServletResponse response) throws
ServletException, IOException {
//向 request域中放数据
request.setAttribute("msg","大家好");
//转发
request.getRequestDispatcher("/WEB‐INF/jsp/success.jsp").forward(request, response);
}
@RequestMapping("/quick2")
//通过参数 注入原生的对象
public String quick2(Model model){
//向model放数据 等价于 向request域中放数据
model.addAttribute("msg","好好学习");
return "success";
}
2、绑定简单类型
当请求的参数名称和处理器形参名称一致时会将请求参数与形参进行绑定。
这样,从Request取参数的方法就可以进一步简化。
/
/接收简单的数据
@RequestMapping("/quick3")
//定义一个参数名和提交的数据的key一致
public String quick3(int id ,String name){
System.out.println(id);
System.out.println(name);
return "success";
}
2.1.@RequestParam
- 使用@RequestParam常用于处理简单类型的绑定。
- value:参数名字,即入参的请求参数名字,如value=“itemId”表示请求的参数中的名字为itemId的参数的值
将传入。 - required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报错
- HTTP Status 400 - Required Integer parameter ‘XXXX’ is not present
- defaultValue:默认值,表示如果请求中没有同名参数时的默认值
3、绑定pojo类型
3.1 使用pojo接收表单数据
如果提交的参数很多,或者提交的表单中的内容很多的时候,可以使用简单类型接受数据,也可以使用pojo接收数
据。 要求:pojo对象中的属性名和表单中input的name属性一致。
//接收pojo 类型的数据 pojo(简单的java对象)
@RequestMapping("/quick4")
//定义一个参数名和提交的数据的key一致
public String quick4(User user){
System.out.println(user);
return "success";
}
3.2 解决post乱码问题
当post请求时,数据会出现乱码,我们可以设置一个过滤器来进行编码的过滤。
在web.xml中加入
<!‐‐ 解决post乱码问题 ‐‐>
<filter>
<filter‐name>encoding</filter‐name>
<filter‐class>org.springframework.web.filter.CharacterEncodingFilter</filter‐class>
<!‐‐ 设置编码参是UTF8 ‐‐>
<init‐param>
<param‐name>encoding</param‐name>
<param‐value>UTF‐8</param‐value>
</init‐param>
</filter>
<filter‐mapping>
<filter‐name>encoding</filter‐name>
<url‐pattern>/*</url‐pattern>
</filter‐mapping>
4、Controller方法返回值
4.1 返回字符串形式
直接返回字符串:此种方式会将返回的字符串与视图解析器的前后缀拼接后跳转。
redirect重定向
@RequestMapping("/quick5")
public String quick5(){
System.out.println("quick5");
return "redirect:/index.jsp";
}
forward 转发
/
/转发
@RequestMapping("/quick6")
public String quick6(){
System.out.println("quick5");
return "forward:/index.jsp";
}