参数绑定
绑定过程
1. 从客户端请求key/value数据。
2. 经过参数绑定,将key/value数据绑定到controller方法的形参上。
3. springmvc中,接收页面提交的数据是通过方法形参来接收。
支持的数据类型
默认支持的类型
直接在controller方法形参上定义下边类型的对象,就可以使用这些对象
1. HttpServletRequest:通过request对象获取请求信息。
2. HttpServletResponse:通过response处理响应信息。
3. HttpSession:通过Session对象获得Session中存放的对象。
4. Model/ModelMap:model是一个接口,modelMap是一个接口实现。作用是将数据填充到request域中。
简单数据类型
1. 规则:要求request传入参数名称和controller方法的形参名称一致,方可绑定成功。
2. @RequestParam
1) 使用@RequestParam,不用限制request传入参数名称和controller方法的形参名称一致
2) 通过required属性指定参数是否必须要传入,如果设置为true,则必须传入参数。
Pojo绑定
1. 规则:页面中name和controller的pojo形参中的属性名称一致,将页面中数据绑定到pojo。
1) 页面定义:
2) controller的pojo形参的定义:
自定义日期参数类型绑定(自定义converter)
1. 配置自定义转换器:将自定义的Conversion注入到适配器中。
1) 配置自定义Conversion的bean。
2) 将转换器注入到处理器适配器中。
2. 自定义日期类型绑定实现类:需要实现Convert接口。
Controller方法返回值(3种)
ModelAndView
需要方法结束时,定义ModelAndView,将model和view分别进行设置。
String
1. 表示返回逻辑视图名。
真正视图(jsp路径)=前缀+逻辑视图名+后缀
2. redirect重定向
redirect重定向特点:浏览器地址栏中的url会变化。修改提交的request数据无法传到重定向的地址。因为重定向后重新进行request(request无法共享)
return “redirect:XXX.action”;
3、forward页面转发
通过forward进行页面转发,浏览器地址栏url不变,request可以共享。
return "froward:xxx.action";
Void
在controller方法形参上可以定义request和response,使用request或response指定响应结果:
1、使用request转向页面,如下:
request.getRequestDispatcher("页面路径").forward(request, response);
2、也可以通过response页面重定向:
response.sendRedirect("url")
3、也可以通过response指定响应结果,例如响应json数据如下:
response.setCharacterEncoding("utf-8");
response.setContentType("application/json;charset=utf-8");
response.getWriter().write("json串");
Springmvc与struts2
| SpringMVC | Struts2 |
接收参数 | 方法形参 | 成员变量 |
是否可以单例 | 可以 | 不可 |
速度 | 不慢 | struts2速度慢,在于使用struts标签,如果使用struts建议使用jstl |