Controller方法返回值

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数据交换曾使用过

扫描二维码关注公众号,回复: 4622494 查看本文章

猜你喜欢

转载自blog.csdn.net/ccoran/article/details/85163576