第三讲 跳转结果的方式

来源:互联网 发布:口红哪个牌子好 知乎 编辑:程序博客网 时间:2024/05/17 06:38
一、 设置ModelAndView对象,根据View的名称,和视图解析器跳转到指定的页面
       页面:视图解析器的前缀 +view-name + 视图解析器的后缀

     @RequestMapping(value="/hello")
     public ModelAndView handleRequest(HttpServletRequest request,
                HttpServletResponse response) throws Exception {
           //新建一个ModelAndView对象
           ModelAndView mv = new ModelAndView();
           //封装要显示到视图中的数据
           mv.addObject("msg", "Hello, spring mvc!");
           //设置视图名
           mv.setViewName("hello");//WEB-INF/jsp/hello.jsp
           return mv;
     }

   需要配置视图解析器,这里用的是转发重定向不需要视图解析器

     <!-- 配置渲染器 视图解析器 -->
     <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
         <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
         <!-- 结果视图的前缀 -->
         <property name="prefix" value="/WEB-INF/jsp/" />
         <!-- 结果视图的后缀 -->
         <property name="suffix" value=".jsp" />
         <!-- 例:视图名为:hello   渲染后:/WEB-INF/jsp/hello.jsp 该页面-->
     </bean>


二、通过ServletAPI来实现

  1. 通过HttpServletResponse来进行输出

     @RequestMapping(value="/hello")
     public void hello(HttpServletRequest request, HttpServletResponse response) throws IOException {
           response.getWriter().write("Hello spring mvc use httpServlet API");
     }

  1. 通过HttpServletResponse实现重定向

     @RequestMapping(value="/hello")
     public void hello(HttpServletRequest request, HttpServletResponse response) throws IOException {
           //实现重定向
           response.sendRedirect("index.jsp");
     }

  1. 通过HttpServletRequest实现重定向

     @RequestMapping(value="/hello")
     public void hello(HttpServletRequest request, HttpServletResponse response)
                throws IOException, ServletException {
          //实现转发
          request.setAttribute("msg", "servlet api forward");
          request.getRequestDispatcher("index.jsp").forward(request, response);
     }

   使用ServletAPI来实现不需要配置视图解析器

三、通过Spring MVC来实现

  1. 通过Spring MVC来实现转发重定向-没有视图解析器

          转发的实现:

     @RequestMapping(value="/hello")
     public String hello() {
           //转发1
           return "index.jsp";
     }

     @RequestMapping(value="/hello")
     public String hello() {
           //转发2
           return "forward:index.jsp";
     }

          重定向的实现:

     @RequestMapping(value="/hello")
     public String hello() {
           //重定向
           return "redirect:index.jsp";
     }

   不需要配置视图解析器

  1. 通过Spring MVC来实现转发重定向-有视图解析器

          转发方式:

     @RequestMapping(value="/hello")
     public String hello() {
           return "hello";
     }

   注意:重定向"redirect:index.jsp" 不需要视图解析器
原创粉丝点击