4.学习springmvc的响应数据和结果视图

一.返回值分类:

  1. 字符串:返回值为需要展示的视图
  2. void:返回为默认的页面(方法名.jsp)
  3. ModleAndView:存储对象并返回设置的页面

1.字符串:

jsp:

 1 <a href="/user/testString">response</a> 

 1 <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
 2 <html>
 3 <head>
 4     <title>success</title>
 5 </head>
 6 <body>
 7 <h3>执行成功</h3>
 8 
 9 ${user.username}
10 ${user.age}
11 </body>
12 </html>

控制器方法:

    /**
     * 返回值为需要展示的视图
     * @param model
     * @return
     */
    @RequestMapping("/testString")
    public String testString(Model model){

        System.out.println("testString执行了...");


        //模拟从数据库中查询出User对象
        User user = new User();
        user.setUsername("美美");
        user.setPassword("123");
        user.setAge(30);

        //设置model对象
        model.addAttribute("user",user);

        return "success";
    }

2.void

jsp:

 1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
 2 
 3 <html>
 4 <head>
 5     <title>response</title>
 6 </head>
 7 <body>
 8 
 9 <a href="/user/testString">testString</a>
10 <a href="/user/testVoid">testVoid</a>
11 </body>
12 </html>

方法:

 1     /**
 2      * void的返回值,会默认跳转到一个testVoid.jsp的页面下导致错误。
 3      * 我们可以使用
 4      * 1.请求转发:路径名为 "/WEB-INF/pages/success.jsp"
 5      * 2.重定向:路径名为 request.getContextPath()+"/index.jsp"
 6      * 注:
 7      *  forward:请求转发为服务器重定向,可以访问/WEB-INF中的jsp文件。
 8      *  redirect:客户端重定向,不可以访问/WEB-INF中的jsp文件,只能访问webapp中jsp
 9      * @param request
10      * @param response
11      * @throws Exception
12      */
13     @RequestMapping("/testVoid")
14     public void testVoid(HttpServletRequest request, HttpServletResponse response) throws Exception {
15 
16         System.out.println("testVoid执行了...");
17 
18         //请求转发:可以访问/WEB-INF中的jsp文件。
19         //request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response);
20 
21         //重定向:不可以访问/WEB-INF中的jsp文件。
22         response.sendRedirect(request.getContextPath() + "/index.jsp");
23 
24         //直接响应
25         //response.setCharacterEncoding("UTF-8");
26         //response.setContentType("text/html;charset=UTF-8");
27 
28         //response.getWriter().println("hello");
29 
30         return;
31     }

3.ModelAndView

jsp

 1 <a href="/user/testModelAndView">testModelAndView</a> 

方法:

 1     /**
 2      * 返回ModelAndView设置的页面
 3      * @return
 4      */
 5     @RequestMapping("/testModelAndView")
 6     public ModelAndView testModelAndView() {
 7 
 8         System.out.println("testModelAndView执行了...");
 9 
10         //创建ModelAndView对象
11         ModelAndView mv = new ModelAndView();
12 
13         User user = new User();
14         user.setUsername("美美");
15         user.setPassword("123");
16         user.setAge(30);
17 
18         //将user放入ModelAndView对象中,同时也会将user对象放入request对象中
19         mv.addObject("user", user);
20 
21         //设置跳转界面
22         mv.setViewName("success");
23 
24         return mv;
25     }

 二.使用关键字进行请求转发或重定向

jsp:

1 <a href="/user/testForwardOrRedirect">testForwardOrRedirect</a> <br>

方法:

 1     /**
 2      * 使用关键字实现请求转发或重定向
 3      * @return
 4      */
 5     @RequestMapping("/testForwardOrRedirect")
 6     public String testForwardOrRedirect() {
 7 
 8         System.out.println("testForwardOrRedirect执行了...");
 9 
10 
11         // 请求转发
12 //        return "forward:/WEB-INF/pages/success.jsp";
13 
14         // 重定向
15         return "redirect:/index.jsp";
16 
17     }
原文地址:https://www.cnblogs.com/zhihaospace/p/11968498.html