在springMVC中,有时候不需要用到ModelAndView,又希望能有返回数据。但是简单的返回一个字符串的形式已经不多见了,大多时候需要返回一个Map。于是在方法前面加上@responsebody来返回map转换的json。这里示范一个完整的登录小栗子!
1.从前端到后台打通springMVC spring +任意后端框架。(这里不多赘述,后面是什么不影响前面。)
就写一个最简单的查询将数据从数据库中查找出来,展示到前端页面。
2.使用ajax来发送请求
在页面中引入jquery文件,使用jquery封装的ajax来发送请求。(要使用javascript也可以,自己封装)
<script scr = "文件地址/jquery-1.8.3.min.js"></script>版本不一定一样
写一个ajax
function doPost(){
$.post("请求的controller",{参数1:'',参数2:''...},function(result){
if(result.errMsg){
alert(result.errMsg);
}
});
}
再添加个a标签或按钮触发下就好了 如<a href = "#" onclick = "doPost()"></a>
3.在controller中的方法中组装Map
@ResponseBody
@RequestMapping("/qstudent")
public Map<String,Object> queryStudent(Student stu,HttpServletRequest request,@RequestParam("checkcode")String inputCode){
Map<String,Object> result = new HashMap<String,Object>();
HttpSession session = request.getSession();
String imageCode = (String) session.getAttribute("sRand");
log.info("imageCode:"+imageCode+",inputCode:"+inputCode);
if(!imageCode.equals(inputCode)){
result.put("errMsg", "验证码错误!");
}else{
Student student = studentService.query(stu);
if(student!=null){
result.put("errMsg", "用户名或密码错误!");
}else{
result.put("row",student);
}
}
//log.debug("");
return result;
}
4.最重要的是导入将Map自动转换成json的jar包:
不然的话doPost会报406错误的。
这样就能体验效果了:
这里附上一个小的知识点:
springMVC中前端传来的如userId,userName等字段如果controller的参数是user(这是个java类) 并且其中包含userId,userName的话,springMVC会自动调用对象的set方法将对象给组装好,如果要取单个数据的话,可以使用@RequestParam 参数类型 参数名 的方式取得。