山西运城市建设局网站,手机搭建网站教程视频教程,wordpress文章类型查询,济宁网站建设有限公司spring参数绑定过程 从客户端请求key/value数据#xff0c;经过参数绑定#xff0c;将key/value数据绑定到controller方法的形参上。springmvc中#xff0c;接收页面提交的数据是通过方法形参来接收。而不是在controller类定义成员变更接收。 默认支持的类型直接在controll…spring参数绑定过程 从客户端请求key/value数据经过参数绑定将key/value数据绑定到controller方法的形参上。springmvc中接收页面提交的数据是通过方法形参来接收。而不是在controller类定义成员变更接收。 默认支持的类型 直接在controller方法形参上定义下边类型的对象就可以使用这些对象。在参数绑定过程中如果遇到下边类型直接进行绑定。 1、HttpServletRequest 通过request对象获取请求信息。 2、HttpServletResponse 通过response处理响应信息 3、HttpSession 通过session对象得到session中存放的对象 4、Model/ModelMap model是一个接口modelMap是一个接口实现。用将model数据填充到request域。 简单类型 通过RequestParam对简单类型的参数进行绑定。如果不使用RequestParam要求request传入参数名称和controller方法的形参名称一致方可绑定成功如果使用RequestParam不用限制request传入参数名称和controller方法的形参名称一致。通过required属性指定参数是否必须要传入如果设置为true没有传入参数则会报错。 POJO绑定 1、简单的POJO 将pojo对象中的属性名于传递进来的属性名对应如果传进来的参数名称和对象中的属性名称一致则将参数值设置在pojo对象中 2、复杂的POJO 与简单的POJO差不过只是在页面上将页面属性设置为pojo类型的属性如 1 input typetext nameitems.name / 自定义参数绑定实现日期类型绑定 对于controller形参中pojo对象如果属性中有日期类型需要自定义参数绑定。将请求日期数据串传成 日期类型要转换的日期类型和pojo中日期属性的类型保持一致。 自定义日期类型绑定 1 public class CustomDateConverter implements ConverterString,Date{2 3 Override4 public Date convert(String source) {5 //将实际的字符串转为date类型6 SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);7 try {8 //转换成功直接返回9 return sdf.parse(source);
10 } catch (ParseException e) {
11 // TODO Auto-generated catch block
12 e.printStackTrace();
13 }
14 //转换失败返回null
15 return null;
16 }
17
18 } 配置方式springmvc.xml 1 mvc:annotation-driven conversion-serviceconversionService/2 !-- 自定义参数绑定 --3 bean idconversionService classorg.springframework.format.support.FormattingConversionServiceFactoryBean4 !-- 转换器 --5 property nameconverters6 list7 !-- 日期类型转换 --8 bean classcom.luchao.converter.CustomDateConverter/9 /list
10 /property
11 /bean 集合类型绑定 1、数组绑定 如果要批量删除删除用户在页面选择多个商品批量删除。 将页面选择(多选)的商品id传到controller方法的形参方法形参使用数组接收页面请求的多个商品id。 如下代码 1 // 批量删除
2 RequestMapping(value/deleteItems)
3 public void deleteItems(String[] item_ids) throws Exception {
4 for (String string : item_ids) {
5 System.out.println(string);
6 }
7 } 2、list绑定 通常在需要批量提交数据时将提交的数据绑定到listpojo中比如成绩录入录入多门课成绩批量提交。 页面属性 c:forEach items${itemsList } varitem varStatusstatus
tr tdinput nameitemsList[${status.index }].name value${item.name }//tdtdinput nameitemsList[${status.index }].price value${item.price }//tdtdinput nameitemsList[${status.index }].createtime valuefmt:formatDate value${item.createtime} patternyyyy-MM-dd HH:mm:ss///tdtdinput nameitemsList[${status.index }].detail value${item.detail }//td/tr
/c:forEach controller中将包装list集合的POJO作为参数。 3、Map绑定 页面属性 tr
td学生信息/td
td
姓名inputtypetextnameitemInfo[name]/
年龄inputtypetextnameitemInfo[price]/
/td
/tr controller中将包装Map集合的POJO作为参数。 如果出现乱码问题需要添加一个拦截器spring已经帮我们实现配置如下web.xml 1 filter2 filter-nameCharacterEncodingFilter/filter-name3 filter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-class4 init-param5 param-nameencoding/param-name6 param-valueutf-8/param-value7 /init-param8 /filter9 filter-mapping
10 filter-nameCharacterEncodingFilter/filter-name
11 url-pattern/*/url-pattern
12 /filter-mapping 另外也可以将tomcat配置文件添加编码与工程编码一致如下 1 Connector URIEncodingutf-8 connectionTimeout20000 port8080 protocolHTTP/1.1 redirectPort8443/ 另外一种方法对参数进行重新编码 1 String userName new
2 String(request.getParamter(userName).getBytes(ISO8859-1),utf-8) ISO8859-1是tomcat默认编码需要将tomcat编码后的内容按utf-8编码。最后一种实现比较麻烦。 现在对SpringMVC已经有了一定的认识比较其与struts2的一些特点可以加强认识。 1、springmvc基于方法开发的struts2基于类开发的。 springmvc将url和controller方法映射。映射成功后springmvc生成一个Handler对象对象中只包括了一个method。方法执行结束形参数据销毁。springmvc的controller开发类似service开发。 2、springmvc可以进行单例开发并且建议使用单例开发struts2通过类的成员变量接收参数无法使用单例只能使用多例。 3、经过实际测试struts2速度慢在于使用struts标签如果使用struts建议使用jstl。 转载于:https://www.cnblogs.com/lcngu/p/5510362.html