springmvc参数绑定

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。

代码如下：

Copy
@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 取参数的方法就可以进一步简化。

Copy
/
/接收简单的数据
@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 属性一致。

Copy
//接收pojo 类型的数据 pojo(简单的java对象)
@RequestMapping("/quick4")
//定义一个参数名和提交的数据的key一致
public String quick4(User user){
System.out.println(user);
return "success";
}

3.2 解决 post 乱码问题

当 post 请求时，数据会出现乱码，我们可以设置一个过滤器来进行编码的过滤。
在 web.xml 中加入

Copy
<!‐‐ 解决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 重定向

Copy
@RequestMapping("/quick5")
public String quick5(){
System.out.println("quick5");
return "redirect:/index.jsp";
}

forward 转发

Copy
/
/转发
@RequestMapping("/quick6")
public String quick6(){
System.out.println("quick5");
return "forward:/index.jsp";
}