SSM整合之参数绑定
来源:互联网 发布:支配集网络matlab算法 编辑:程序博客网 时间:2024/06/05 14:42
参数绑定
1、springmvc参数绑定过程
从客户端请求key/value数据,经过参数绑定,将key/value数据绑定到Controller的形参上
springmvc中,接收页面提交的数据是通过方法的形参来接收,而不是在Controller类定义成员变量接收!
2、默认支持的类型
直接在Controller方法的形参上定义下面类型的对象,就可以使用它们。在参数绑定的过程中,如果遇到下面的类型,就直接进行绑定
HttpServletRequest
通过request对象获取请求信息
HttpServletResponse
通过response处理响应信息
HttpSession
通过session对象得到session中存放的对象
Model/ModelMap
model是一个接口,modelMap是一个接口实现
作用:将model数据,填充到request域
3、简单类型
如:
@RequestMapping(value = "/editItems",method = {RequestMethod.POST,RequestMethod.GET}) public String editItems(Model model,Integer id) throws Exception{ //调用service 根据商品ID查询商品信息 ItemsCustom itemsCustom = itemsService.findItemsById(id); //通过形参中的model将model的数据传到页面 //相当于modelandview的addObject model.addAttribute("itemsCustom",itemsCustom); return "items/editItems"; }可以直接在接收参数的括号里添加变量(形参变量),接收简单类型的数据,在这里,request传入的参数名要和Controller形参定义的变量名一致
我们可以通过@RequestParam 对简单类型的参数进行绑定,可以不用限制request传入的参数名要和Controller形参定义的变量名一致
用法:
@RequestMapping(value = "/editItems",method = {RequestMethod.POST,RequestMethod.GET}) //@RequestParam 指定request传入的参数名,即可和形参进行绑定 public String editItems(Model model, @RequestParam(value = "id")Integer items_id) throws Exception{ //调用service 根据商品ID查询商品信息 ItemsCustom itemsCustom = itemsService.findItemsById(items_id); //通过形参中的model将model的数据传到页面 //相当于modelandview的addObject model.addAttribute("itemsCustom",itemsCustom); return "items/editItems"; }
还可以通过@RequestParam里的required属性指定参数是否必须要传入:
// 通过required属性指定参数是否必须要传入 public String editItems(Model model, @RequestParam(value = "id",required = true)Integer items_id) throws Exception{
defaultValue还可以设定默认值
4、绑定pojo
页面中input标签的name属性Controller的pojo形参中的属性名一致,可将页面中的数据,直接绑定至pojo内
页面定义:
<tr><td>商品名称</td><td><input type="text" name="name" value="${itemsCustom.name }"/></td></tr><tr><td>商品价格</td><td><input type="text" name="price" value="${itemsCustom.price }"/></td></tr>
pojo类形参定义:
private String name; private Float price;
才可成功绑定
5、自定义参数绑定
对于Controller形参中的pojo对象,如果属性中有日期类型,就需要自定义参数绑定。
将请求的日期数据串转换成日期的类型。要转换的日期类型要和pojo中日期属性的类型保持一致。
pojo:
private Date createtime;自定义参数绑定要将日期串转成java.util.date类型
需要向处理器适配器中注入自定义的参数帮固定组件
自定义的日期转换器:
public class CustomDateConverter implements Converter<String,Date> { @Override public Date convert(String s) { //将日期串转换成日期类型 格式(yyyy-MM-dd HH:mm:ss) SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { return simpleDateFormat.parse(s); } catch (ParseException e) { e.printStackTrace(); } //若参数绑定失败,则返回空值 return null; }}配置方式
在springmvc.xml的适配器映射器扫描器中配置:
<mvc:annotation-driven conversion-service="conversionService"></mvc:annotation-driven>定义converter:
<!-- 自定义参数绑定 --> <bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"> <!-- 转换器 --> <property name="converters"> <list> <!-- 日期类型转换 --> <bean class="com.alex.ssm.controller.converter.CustomDateConverter"/> </list> </property> </bean>
”
即可实现自定义的参数绑定
问题
1、post乱码
在web.xml中添加post乱码过滤器
<!-- post乱码过滤器 --> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
阅读全文
0 0
- SSM整合之参数绑定
- SSM整合之高级参数绑定
- SSM( Spring、SpringMVC、MyBatis )整合、SpringMVC参数绑定
- SSM参数绑定机制
- 【ssm框架】Controller层之参数自动绑定
- SSM整合之配置文件
- SSM之框架整合
- SSM之整合Redis
- SSM之WEB整合SpringMVC
- 整合ssm框架之配置文件
- JavaEE之SSM整合示例
- ssm整合之四 分页
- SSM整合之数据校验
- SSM整合之分组校验
- SSM整合之异常处理
- SSM整合之RESTful支持
- SSM整合之拦截器
- ssm controller 绑定参数 根据url 读取参数
- mac Android Studio安装kotlin插件
- 本人2011级学生TXH大佬写的超短的SAP网络流程序
- BZOJ2809(Apio2012)[dispatching]--左偏树
- 欢迎使用CSDN-markdown编辑器
- C#184课的主要内容
- SSM整合之参数绑定
- 异常
- linq to sql
- LeetCode-2. Add Two Numbers
- css实战之css画图
- 面试题35—第一个只出现一次的字符
- Win7 U盘安装Ubuntu16.04 双系统详细教程
- MySQL 事务没有提交导致 锁等待 Lock wait timeout exceeded
- Unity Shader入门精要学习笔记