1、响应数据和结果视图
视图:视图就是展示给用户看的结果。可以是很多形式,例如:html、JSP、excel表单、Word文档、PDF文档、JSON数据、freemarker模板视图等等。
1、返回字符串
Controller方法返回字符串可以指定逻辑视图的名称,根据视图解析器解析为物理视图的地址。
2、 返回值是void (用得少)
2.1. 如果控制器的方法返回值编写成void,执行程序报404的异常,默认查找JSP页面没有找到。
2.1.1. 默认会跳转到@RequestMapping(value="/initUpdate") initUpdate的页面。
2.2、可以使用请求转发或者重定向跳转到指定的页面
request.getRequestDispatcher("/WEB-INF/pages/add.jsp").forward(request,response);//请求转发
response.sendRedirect(request.getContextPath()+"add2.jsp");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
// 直接响应数据
response.getWriter().print("你好");
3、返回值是ModelAndView对象
可以传入视图的名称(即跳转的页面),还可以传入对象。
ModelAndView mv = new ModelAndView();
//跳转到list.jsp页面
mv.setViewName("list");
mv.addObject("users",users);
return mv;
Model和ModelAndView的区别:
Model只是用来传输数据,并不会进行业务寻址
ModelAndView可以传输数据也可以寻址。
Model使用addAttribute()对数据赋值,ModeAndView使用addObject()
Model使用setVieName设置业务寻址
2、SpringMVC框架提供的转发和重定向
return "forward:/user/findAll"
//转发的JSP路径",不走视图解析器了,所以需要编写完整的路径
return "redirect:/add.jsp";
return "redirect:/user/findAll";
3、ResponseBody响应Json数据
$.ajax({
url:"user/testJson",
contentType:"application/json;charset=UTF-8",
data:'{"addressName":"aa","addressNum":100}',
dataType:"json",
type:"post",
success:function(data){
alert(data);
alert(data.addressName);
}
});
3.1
//获取请求数据
public void testJson(@RequestBody String body) {
System.out.println(body);
}
3.2使用@RequestBody注解把json的字符串转换成JavaBean的对象
3.3使用@ResponseBody注解把JavaBean对象转换成json字符串,直接响应
public @ResponseBody Address testJson(@RequestBody Address address) {
System.out.println(address);
address.setAddressName("上海");
return address;
} |
|