SSM框架中页面ajax往后台传值的问题
从之前的Servlet过来的ajax,突然变为SSM框架,一时不知该怎么写,这里做个记录加深一下印象,主要是重点理解Controller的三种返回值,ModelAndView,void,String
如果要传递的值为boolean,需要HttpServletResponse response来传递比较合适,以前学的servlet还是可以借鉴一下的!
这是前端页面的ajax
$.ajax({
url:"validate_phone",
data:{phone: phone},
type:"post",
dataType:"json",
success:function(obj){
if(obj){
$("#phonemsg").html("<font color='green'>手机号可以使用</font>")
phonef = true;
}else{
$("#phonemsg").html("<font color='red'>手机号已被注册</font>")
}
},
error:function(){
alert("出错了")
}
})
这是后台的接受值的代码
@RequestMapping(value = "/validate_phone" )
@ResponseBody
public void validate_phone(String phone , HttpServletResponse response){
User user = userService.validate_phone(phone);
if(user==null){
try {
response.getWriter().print(true);
} catch (IOException e) {
e.printStackTrace();
}
}else {
try {
response.getWriter().print(false);
} catch (IOException e) {
e.printStackTrace();
}
}
}
最后做个总结,SpringMVC中ajax的四种使用方式
1.直接请求资源,通过HttpServletResponse返回
2.通过注解@ResponseBody返回
3.请求和响应的JSON格式,使用jackson.jar包的支持
4.直接返回对象,容器会自动将其解析成json格式字符串
ajax请求,响应的结果是普通字符串,或json字符串,然后再交由前端解析。
package com.controller;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.entity.Person;
@Controller
@RequestMapping(value="/ajax/")
public class AjaxController {
//方式1:
@RequestMapping(value="m1")
public void m1(HttpServletResponse resp){
try {
resp.getWriter().print("hello ajax request");
} catch (IOException e) {
e.printStackTrace();
}
}
//方式2:
@RequestMapping(value="m2")
@ResponseBody
public String m2(){
return "hello ajax request";
}
//方式3:
@RequestMapping(value="m3")
@ResponseBody
public String m3(){
Person p = new Person();
p.setId(88);
p.setName("zhangsan");
p.setPwd("123456");
p.setSex("man");
p.setAge(25);
ObjectMapper om = new ObjectMapper();
try {
String json = om.writeValueAsString(p);
//{"name":"zhangsan","id":88,"age":25,"sex":"man","pwd":"123456"}
return json;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
//方式4:直接返回对象,容器会帮我们将它自动转为json格式字符串
@RequestMapping(value="m4")
@ResponseBody
public Person m4(String name){
Person p = new Person();
p.setId(88);
p.setName("zhangsan");
p.setPwd("123456");
p.setSex("man");
p.setAge(25);
return p;
}
}