·废话不多说,直接上代码。最近在利用ajax注册用户时,controller层接收的用户名及其密码始终为null,百思不得其解,
首先大家需要知道一点,jquery已经对ajax进行了较好的封装,使用ajax之前,我们可以先引入jquery库,这样可以使用ajax了。。
<script type="text/javascript" src="js/jquery-2.1.1.min.js"></script>
<script type="text/javascript">
function fun() {
// alert(1)
// var a=document.getElementById("username").value();
}
function regist() {
var username=document.getElementById("username").value;
// var username=$("#username").val();
alert(username)
var password=document.getElementById("password").value;
alert(password)
var localurl="http://" + window.location.host + "/regist";
alert(localurl)
$.ajax({
type:"post",
async:true,
// contentType: "application/json",
data:{"username":username,
"password":password,
},
dataType:"json",
url:localurl,
});
}
</script>
<body>
这里是注册页面 !!!
<div style="text-align: center;border: 1px;background-color: antiquewhite;">
<form action="" method="" id="registForm">
<div>
<input type="text" placeholder="请输入用户名" style="width: 500px;height: 50px" id="username" name="username" onmousedown="fun()"/>
</div>
<div>
<input type="password" value="请输入密码" style="width: 500px;height: 50px" id="password" name="password" onmousedown="fun1()"/>
</div>
<button type="submit" style="width: 500px;height: 50px" onclick="regist()">点击注册</button>
</form>
</div>
</body>
// 注册
/*@RequestMapping("/regist")
@ResponseBody
public Map regist(@RequestParam(value = "username",required = false) String username,
@RequestParam(value = "password",required = false) String password){
User user=new User();
user.setUsername(username);
logger.info("已经进来了!!!");
System.out.println(username);
System.out.println(password);
Map map=new HashMap();
try {
String substring = UUID.randomUUID().toString().substring(0, 4);
Md5Hash md5Hash = new Md5Hash(password, substring, 1024); //对密码进行加盐 1024次加密
user.setSalt(substring);
user.setPassword(md5Hash.toString());
int a=userService.regist(user);
if(a>0){
map.put("regist",true);
}else{
map.put("regist",false);
}
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
或者
@RequestMapping("/regist")
@ResponseBody
public Map regist(User user){
logger.info("已经进来了!!!");
Map map=new HashMap();
try {
String substring = UUID.randomUUID().toString().substring(0, 4);
Md5Hash md5Hash = new Md5Hash(user.getPassword(), substring, 1024); //对密码进行加盐 1024次加密
user.setSalt(substring);
user.setPassword(md5Hash.toString());
int a=userService.regist(user);
if(a>0){
map.put("regist",true);
}else{
map.put("regist",false);
}
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
*/
在控制台输出的username和password始终为Null,经过翻阅百度之后,将ajax中的
// contentType: “application/json”, 一栏去调即可。
具体的原理在下并没有去深究,以后会慢慢了解。
另外我在controller层,使用了shiro框架在进行用户注册时,对密码进行了1024次散列加盐加密。具体业务需要大家了解一下shiro框架。
这辈子坚持与不坚持都不可怕,怕的是独自走在坚持的道路上!!!
欢迎大家加入技术群聊,感谢大家!!!