spring mvc:基于MVC思想的应用框架的快速入门( 七 )
修改tomcat配置文件添加编码与工程编码一致 , 如下:
<Connector URIEncoding=''utf-8'' connectionTimeout=''20000'' port=''8080'' protocol=''HTTP/1.1'' redirectPort=''8443''/>
另外一种方法对参数进行重新编码:
String userName new
String(request.getParamter(''userName'').getBytes(''ISO8859-1''),''utf-8'')
ISO8859-1是tomcat默认编码 , 需要将tomcat编码后的内容按utf-8编码
传递自定义pojo(pojo里面还有pojo)作为参数
package com.huanfeng.ssm.pojo; public class QueryVo { private Items items; public Items getItems() { return items; } public void setItems(Items items) { this.items = items; } }比如现在参数是pojo:
@RequestMapping(valuehttp://news.hoteastday.com/a/= ''/updateitem.action'') public ModelAndView updateitem(QueryVo vo){ //修改 itemService.updateItemsById(items); ModelAndView mav = new ModelAndView(); mav.setViewName(''success''); return mav; }那么我们就需要将参数的名称和pojo中的一致 , 原来的参数名为:
商品名称 商品价格 如果此时要是使用QueryVo那么就不能完成自动的映射 , 因为二者并不是一致的 , 所以需要修改成下面的形式:
商品名称 商品价格 自定义传参
在以上我们学习了诸多的参数绑定 , 只要我们保证清楚参数和pojo的参数名是一致的 , 那么就可以解决这个问题 , 这些都是自动的参数绑定 , spring可以帮助我们完成 , 但是有的参数是不可以绑定的 , 可能会出问题:
由于日期数据有很多种格式 , springmvc没办法把字符串转换成日期类型 。 所以需要自定义参数绑定 。
前端控制器接收到请求后 , 找到注解形式的处理器适配器 , 对RequestMapping标记的方法进行适配 , 并对方法中的形参进行参数绑定 。 可以在springmvc处理器适配器上自定义转换器Converter进行参数绑定 。
一般使用<mvc:annotation-driven/>注解驱动加载处理器适配器 , 可以在此标签上进行配置 。
conversionServiceFactoryBean表示转换器工厂 , 这里我们可以在list中配置多个转换器 , 这里只配置一个DateConveter , 然后将转换器注入给Converters
转换器的具体转换操作需要我们自己来实现 , 我们这里实现了Converter,就表示一个转换器了 , 然后转换器中泛型<S,T>,S表示请求传递的类型(一般是String),T表示我们想转成的类型 , 这里我们使用Data , 这样在item的pojo中 , 只有time是这个类型 , 也就是只有页面传递过来的time会作为source传进来 , 我们可以内部处理它 , 然后将它返回 , 这样它就会自动被赋值给pojo了 。
package com.huanfeng.ssm.conversion; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.core.convert.converter.Converter; public class DateConveter implements Converter{ public Date convert(String source) { System.out.println(source); try { if(null != source){ DateFormat df = new SimpleDateFormat(''yyyy-MM-dd HH:mm:ss''); return df.parse(source); } } catch (Exception e) { } return null; } }我们可以看到
- 华为发布首个基于5G MEC云边端协同的工业视觉解决方案
- 嘻哈飞车族腻害,高人都是这样玩SpringBoot整合RabbitMQ
- 上海市浦东模范中学|[浦东]浦东模范中学:“基于素养培育 构建四适课堂”浦兴学区语文主题研讨活动
- 行业互联网华为发布首个基于5G MEC云边端协同的工业视觉解决方案
- 上海市浦东新区竹园小学|[浦东]竹园小学:基于标准 落实要求 均衡导向 集群发展-学校沪东校区接受浦东新区小学沪东学区化课程与教学调研纪实
- 和讯名家 苹果在赌什么?
- 和讯名家苹果在赌什么?
- 柠檬少年CHCC2020干货 | 达实智能杨雪来:基于物联网技术的达实智慧医院整体解决方案
- 英特尔|英特尔披露基于Ice Lake微架构Xeon处理器的安全新特性
- 行业互联网贸泽电子与BittWare签订全球分销协议 分销基于英特尔和Xilinx FPGA的加速卡
