在基于springmvc的web项目中,后台获取前台提交的数据方式有多种。
1、通过注解ModelAttribute直接映射表单中的参数到POJO。在from中的action写提交的路径,然后再input的name写参数的名称。
<form action="user/register.do" method="post" id="registerForm">
<div>
<input type="text" name="email" class="email" placeholder="输入邮箱地址" οncοntextmenu="return false" οnpaste="return false" />
</div>
<div>
<input type="text" name="username" class="username" placeholder="您的用户名" autocomplete="off"/>
</div>
<div>
<input type="password" name="password" class="password" placeholder="输入密码" οncοntextmenu="return false" οnpaste="return false" />
</div>
<div>
<input type="password" name="confirm_password" class="confirm_password" placeholder="再次输入密码" οncοntextmenu="return false" οnpaste="return false" />
</div>
<div>
<input type="text" name="mobilePhone" class="mobilePhone" placeholder="输入手机号码" autocomplete="off" id="number"/>
</div>
<div>
<input type="text" class="kaptchaImage" name="kaptchaImage" style="width:150px;"
placeholder="输入验证码" autocomplete="off"/>
<img src="image/captcha-image.do" width="110" height="40" id="kaptchaImage"
οnclick="changeValidateCode(this);" style="margin-bottom:-15px"/>
</div>
<button id="submit" type="submit">注 册</button>
</form>
在后台用@ModelAttribute("form")获取整个POJO类的数据。当获取不是POJO里面的参数的时候使用@RequestParam获取。
@RequestMapping("/register.do")
@ResponseBody
public ModelAndView register(@ModelAttribute("form") Users usrs,RedirectAttributes arrt,
@RequestParam("confirm_password")String repassowrd,@RequestParam("kaptchaImage")String kaptchaImage){
String kaptchaRandom=(String)session.getAttribute(Constants.KAPTCHA_SESSION_KEY);
MkResult result=userService.addUsers(usrs,repassowrd,kaptchaRandom,kaptchaImage);
ModelAndView modelAndView=null;
if(result.getStatus()==0){
arrt.addFlashAttribute("states",result.getStatus());
modelAndView=new ModelAndView("redirect:/user/toLogin.do");
}else {
arrt.addFlashAttribute("states",0);
modelAndView=new ModelAndView("/register.jsp");
}
return modelAndView;
}
2、使用AJAX的方式提交数据。
当参数数量比较多的时候,可以把参数包装成json传回后台。
$("#zhuce").click(function(){
var saveDataAry=[];
var email1 = $(".email").val().trim();
var username1 = $(".username").val().trim();
var password1=$(".password").val().trim();
//var confirm_password1 = $(".confirm_password").val().trim();
var phone_number1 = $(".phone_number").val().trim();
var data1={email:email1,username:username1,password:password1,mobilePhone:phone_number1};
$.ajax({
url:"user/register.do",
type:"post",
dataType:"json",
data:data1,
success:function(result){
//result是服务器返回的json结果
if(result.status){
alert(result.data);
}else {
alert(result.msg);
}
},
error:function(){
alert("发生异常,请重试!");
}
});
});
在后台获取参数的时候,可以直接在方法中写传入的参数,注意参数名称要和ajax中data的参数名称一致,否则就要用@RequestParam指定参数名称。也可以用@ModelAttribute映射POJO,但data的参数名称要和POJO的变量名称一致。
@RequestMapping(value = "/register1.do")
@ResponseBody
public MkResult registe1r(@ModelAttribute("form") Users usrs,@RequestParam("email")String email,String username,String password,String mobilePhone){
System.out.println(email+";"+username+";"+password+";"+mobilePhone);
System.out.println(usrs.getEmail());
MkResult mkResult=new MkResult();
mkResult.setStatus(1);
mkResult.setData("呵呵");
mkResult.setMsg("加载成功");
return mkResult;
}