文章目录
1 返回ModelAndView
@RequestMapping("modelAndView")
public ModelAndView modelAndView(){
ModelAndView m = new ModelAndView();
// 设置逻辑视图的名称
m.setViewName("hello");
// 设置域属性
m.addObject("mav","modelAndView");
return m;
}
<p><a href="/modelAndView">返回modelAndView测试</a>
返回的属性值:${mav}
</p>
2 返回void
@RequestMapping("voidTest")
public void voidTest(HttpServletRequest request,HttpServletResponse response){
Map map= request.getParameterMap();
// 输出获取的请求参数值
map.forEach((x,y)->System.out.println(x+"->>"+(String[])y));
// 设置响应返回的数据格式
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
try {
// 向页面写数据
response.getWriter().write("test response write something ");
} catch (IOException e) {
e.printStackTrace();
}
}
<p><a href="${pageContext.request.contextPath}/voidTest?test=void">返回void测试</a></p>
2.1 设置转发
转发后浏览器URL不发送改变,Request域可以共享,可以通过resquest对象传递数据
@RequestMapping("voidTest2")
public void voidTest2(HttpServletRequest request,HttpServletResponse response){
Map map= request.getParameterMap();
map.forEach((x,y)->System.out.println(x+"->>"+(String[])y));
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
try {
response.getWriter().write("test response write something ");
} catch (IOException e) {
logger.error("response write异常",e);
}
// 通过转发传递参数
request.setAttribute("voidTest2","void forward Test");
try {
// 设置资源路径
request.getRequestDispatcher("WEB-INF/jsp/hello.jsp").forward(request, response);
} catch (ServletException e) {
logger.error("voidTest 转发 异常",e);
} catch (IOException e) {
logger.error("voidTest 转发 IO异常",e);
}
}
<p><a href="${pageContext.request.contextPath}/voidTest2?test=void2">返回void测试2</a>转发传递的数据:${voidTest2}</p>
2.3 重定向
response重定向,重定向后url会改变,request作用域中的数据也不再共享。
@RequestMapping("voidTest3")
public void voidTest3(HttpServletRequest request,HttpServletResponse response){
Map map= request.getParameterMap();
map.forEach((x,y)->System.out.println(x+"->>"+(String[])y));
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
try {
response.getWriter().write("test response write something ");
} catch (IOException e) {
logger.error("response write异常",e);
}
request.setAttribute("voidTest2","void forward Test");
try {
// 重定向到modelAndView controller中
response.sendRedirect("modelAndView");
} catch (IOException e) {
logger.error("voidTest3 response 转发异常",e);
}
}
<p><a href="${pageContext.request.contextPath}/voidTest3?test=void3">返回void测试3:重定向</a></p>
3 返回String
3.1 返回视图名
https://blog.csdn.net/ccoran/article/details/85111887 前面的spring参数绑定中基本都是用的这种方式
3.2 forword
return "forward:testForward";
3.2 redict
return "redirect:testRedirect";
4 @ResponseBody
ResponseBody注解可以通过内置的9种HttpMessageConverter,匹配不同的Controller返回值类型,然后进行不同的消息转换处理。将转换之后的数据放到HttpServletResponse对象的响应体返回到页面,不同的HttpMessageConverter处理的数据,指定的ContentType值也不同。
在Springmvc参数绑定中的第四节json数据交换曾使用过