【Spring】SpringMVC中浅析数据的传递方式
包括了基本数据类型的传递和 Date数据类型的传递。关于SpringMVC的配置可以参见基于注解实现SpringMVC+MySQL
假设有表单页面如下:
<h1>登录</h1> <form action="login.do" method="post"> 帐号:<input type="text" name="uname"/><br><br> 密码:<input type="password" name="upass"/><br><br> <input type="submit" value="登录"/> </form>
那么后台的Controller获取数据有三种方式
第一种:
通过@RequestParam注解
@RequestMapping("/login.do") public String login1(@RequestParam("uname") String userName,@RequestParam("upass") String userPass){ System.out.println("登录的用户:"+userName+",他的密码是:"+userPass); return null; } /* * 我们也可以在接受数据的指定默认值,在接受用户登录的时候指定默认值显然不合适,下面只是为了距离,如:
@RequestMapping("/login.do") public String login1(@RequestParam(value="uname",required=false,defaultValue="jame") String userName,@RequestParam(value="upass",required=false,defaultValue="123456") String userPass){ System.out.println("登录的用户:"+userName+",他的密码是:"+userPass); return null; } */
第二种:
将参数的名称和表单中参数的名称写成一致
@RequestMapping("/login.do") public String login2(String uname,String upass){ System.out.println("第二种方式获取: 登录的用户:"+uname+",他的密码是:"+upass); return null; }
第三种:
将表单中的参数封装为一个bean类,其中的属性必须和表中需要传递参数的名称一致
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package cn.xdl.controller; public class UserBean { private String uname; private String upass; public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } public String getUpass() { return upass; } public void setUpass(String upass) { this.upass = upass; } public UserBean(String uname, String upass) { super(); this.uname = uname; this.upass = upass; } public UserBean() { super(); // TODO Auto-generated constructor stub } @Override public String toString() { return "UserBean [uname=" + uname + ", upass=" + upass + "]"; } }
Controller如下:
@RequestMapping("/login.do") public String login3(UserBean ub){ System.out.println("第三种方式获取:"+ub); return null; }
下面介绍SpringMVC中Date数据类型的传递
在控制器中加入如下代码:
@InitBinder public void initBinder(ServletRequestDataBinder bin){ /* * SimpleDateFormat位于java.text.SimpleDateFormat * 该对象除了使用给定的日期模式构造对象,还提供了两个常用的方法, * public final String format(Date date) -- 继承自该类的父类,用于将Date对象转化为字符串 * public Date parse(String source) -- 继承自该类的父类,用于将字符串转化为Date对象 */ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); CustomDateEditor cust = new CustomDateEditor(sdf,true); bin.registerCustomEditor(Date.class,cust); }
这样注解之后,前端传过来的String类型的数据就可以在控制器方法参数中自动转化为Date类型数据:
@RequestMapping(value="/index2") public String helloaction2(Date date){ //这里的参数自动将String转化为date类型 return "index"; }
原文链接:http://blog.csdn.net/javaloveiphone/article/details/53745068