又回来写博客啦!之前博客停止了一段时间,原因是觉得当时自己什么都不懂,就觉得不知道到底怎么写,写不出什么东西来,
(当然现在懂的也不多,比起之前是好多了)在回来继续写是因为搞清楚一个问题,那就是博客就是用来写总结性的东西,帮我梳理学习过程中要注意的地方,加强对学习的东西的理解。写工作中遇到的问题,用来记录与回顾。如果能够帮助别人解决问题那当然是极好的,但它首先是为自己服务的,所以不需要像很多大牛一样,写的让人膜拜,能帮助到我学习总结就好,坚持!说不定哪天我也成为大牛呢!
今天写的是对对springmvc参数绑定的使用理解,springMvc是一个十分方便好用的框架,使用过之后更加能够感觉到,其中一个很方便的功能就是参数绑定。
- 参数绑定的过程 :从客户端请求Key/value数据,经过参数绑定,将数据绑定到controller的参数中,在进行处理,springmvc中,接受页面提交的数据是通过方法形参来接受,而不是在controller类定义成员接受。 处理器适配器调用springmvc提供参数绑定组件将key/value数据转换成controller方法的形参,也就是converter转换器。特殊情况下需要自定义converter.日期数据绑定需要自定义converter。
- 默认支持的类型:直接在controller方法的形参中定义下边类型的对象,就可以使用这些对象,直接进行参数绑定,也就是说,参数绑定的前提是你的controller方法形参中得现有下面类型的对象。1.httpservletrequest,通过request对象获取请求信息。2.httpservletresponse。通过response处理响应信息。3.httpsession对象得到session中存放的对象。4.model/modelmap,将Model数据填充到request域。
- 简单类型的绑定:通过@RequestParam对简单类型的参数进行绑定。
如果不使用@RequestParam,要求request传入参数名称和controller方法的形参名称一致,方可绑定成功。
如果使用@RequestParam,不用限制request传入参数名称和controller方法的形参名称一致。 - 这里就是使用requestparam将items_id与id进行参数绑定。
- Pojp绑定。页面中提交的数据和controller的pojo形参中的属性名称一致,将页面中数据绑定到pojo。这里用我个人网站之前的注册用户为例子。
function getNewUserData() {
var jsonStr = "{"; // json格式开始
jsonStr+="\"usercode\":\""+$("#newusercode").val()+
"\",\"username\":\""+$("#newusername").val()+
"\",\"password\":\""+$("#newpassword").val()+
/* "\",\"generation\":\"" +$("#newrabbitkind").val() + */
"\"}";
var jsonObj = jQuery.parseJSON(jsonStr);
return jsonObj;
}
function newusercode2(){
if($("#newpassword").val()!=$("#newpassword2").val())
{
alert("两次密码不同!");
}
else if(!checkusercode($("#newusercode").val()))
{
alert("账户允许是30位以内的字母和数字");
}
else
{
$.post("updateuser.action",getNewUserData(),function(data,textStatus){
if(data=="操作成功")
CloseDiv('regieterdiv','fade2');
else
alert(data);
}
,"text");
}
}
public class User {
private String usercode;
private String password;
private String username;
private Date createtime;
private Date lasttime;
private Integer logintimes;
可以看到客户端提交的参数名称和我pojo里面的参数名称是对应的,我们使用ajax将这个json数据传到后台controller中
@RequestMapping("updateuser.action")//更新插入用户
public void updateuser(HttpServletRequest request,HttpServletResponse response,UserCustom record)
{
System.out.println("注册用户");
String result="操作成功";
String psdString=md5(record.getPassword(),"jacksung",2);
User userlist=userMapper.selectByPrimaryKey(record.getUsercode());
if(userlist!=null)
{
result="账户名已存在";
}
else if(psdString==null)
result="密码格式错误";
else if(psdString=="")
result="请输入密码";
else if(record.getUsercode()=="")
result="请输入账号";
else if(record.getUsername()=="")
result="请输入使用者";
else
{
record.setPassword(psdString);
record.setLogintimes(0);
record.setCreatetime(new Date());
userMapper.insert(record);
}
try {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/json");
response.getWriter().write(result);
response.getWriter().flush();
response.getWriter().close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
通过这个方法,就可以方便快捷的将客户端注册的用户信息直接传到控制类当中进行操作。