1. 程式人生 > 其它 >SpringMVC學習10:重定向和轉發

SpringMVC學習10:重定向和轉發

SpringMVC學習10:重定向和轉發

  • 結果跳轉方式:

    • 重定向:會改變URL

    • 轉發:不會改變URL

 

  • ModelAndView:

    • 設定ModelAndView物件,根據View的名稱,和檢視解析器跳到指定的頁面;

    • 頁面:{檢視解析器字首}+viewName+{檢視解析器字尾}

      <!--檢視解析器-->
      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
         <property name="prefix" value="/WEB-INF/jsp/"/>
         <property name="suffix" value=".jsp"/>
      </bean>
    • 對應的Controller:

      public class ControllerTest1 implements Controller {

         public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
             ModelAndView mv = new ModelAndView();

             mv.addObject("msg","demo");
             mv.setViewName("hello");

             return  mv;
        }
      }

       

  • ServletAPI:

    • 通過設定ServletAPI,不需要檢視解析器;

      • 1,通過HttpServletResponse進行輸出;

      • 2,通過HttpServletResponse實現重定向;

      • 3,通過HttpServletRequest實現轉發;

         

    • 測試程式碼:

      @Controller
      public class ModelTest1 {

         @RequestMapping("/h1")
         public void doTest(HttpServletRequest req, HttpServletResponse resp) throws IOException {
             //重定向
             resp.sendRedirect("a.jsp");
        }

         @RequestMapping("/h2")
         public void doTest2(HttpServletRequest req,HttpServletResponse resp) throws ServletException, IOException {
             //轉發
             req.setAttribute("msg","我是轉發");
             req.getRequestDispatcher("/WEB-INF/jsp/hello1.jsp").forward(req,resp);
        }

         @RequestMapping("/h3")
         public void doTest3(HttpServletRequest req,HttpServletResponse resp) throws IOException {
             //輸出
             req.setCharacterEncoding("UTF-8");
             resp.setCharacterEncoding("UTF-8");
             resp.setContentType("text/html");
             resp.getWriter().println("我是輸出");
        }
      }