1.传统实例
@RequestMapping(path = "/testString")
/*Model是spring框架存储数据底层调用了存储到request域中*/
public String testString(Model model) {
System.out.println("testString执行了");
User user = new User();
user.setAge(18);
user.setName("华哥哥");
user.setPassword("11111");
model.addAttribute("user", user);
/* 请求转发: req.getRequestDispatcher(servlet或者jsp的请求路径).forward(req,resp);
URL重定向: resp.sendRedirect("/day47/views/student.jsp");
a.请求转发是一次请求,重定向是两次请求 (通过地址栏可以查看)
b.请求转发地址栏不会发生改变, 重定向地址栏会发生改变
c.请求转发可以共享请求参数 ,重定向之后,就获取不了共享参数了
d.请求转发不能跨域(不能访问其他服务器链接) req.getRequestDispatcher("http:// www.baidu.com").forward(req,resp);是不行的
重定向可以 resp.sendRedirect("http://www.baidu.com");
e.请求转发能转到WEB-INF目录下的文件req.getRequestDispatcher("/WEB-INF/views/student.jsp").forward(req,resp);*/
return "success";
}
2.ResponseBody响应json数据
1.jsp页面的编写
$("#bt1").click(function () {
/*发送ajax请求*/
$.ajax({
url:"user/testAjax",
//指定编码集
contentType:"application/json;charset=UTF-8",
/*{}里面编写json对象*/
data:'{"username":"hehe","password":"123456","age":18}',
dataType:"json",
type:"post",
success:function (data) {
//data服务器响应的json的数据进行解析
//可编写jquery来实现页面的刷新
$("#h1").text(data.name);
alert(data.name)
}
});
2.请求函数的处理
@RequestMapping("testAjax")
//@RequestBody会自动封装成user对象要求User类的属性名和json属性的名称对应即可
public @ResponseBody User testAjax(@RequestBody User user) {
System.out.println("testAjax执行");
/*封装到javabean当中*/
System.out.println(user);
//做响应
user.setName("haha");
return user; //user要转换成json对象利用@ResponseBody
}
@RequestParam(value=“name”)解决名称不一致
3.导包 必需导入否则无法转换
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.0</version>
</dependency>
</dependencies>