• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • SpringMvc ModelAndView 視圖解析器和Servlet詳解

    標簽: ModelAndView  視圖解析器  SpringMvc ModelAndView 視圖解析器和S  springmvc 頁面跳轉

    一:設置ModelAndView對象,根據View的名稱,和視圖解析器跳轉到指定的頁面。

    頁面:視圖解析器的前綴+view name +視圖解析器的后綴

    <!-- 配置視圖渲染器 -->
    <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"/>
    </bean>

     

    @RequestMapping(value="/hello.do")
    	public ModelAndView hello(){
    		ModelAndView mv = new ModelAndView();
    		mv.setViewName("hello");
    		mv.addObject("msg", "annotation ------");
    		return mv;
    	}

     

    二:通過ServletAPI對象來實現。不需要視圖解析器的配置

    通過HttpServletResponse輸入內容。

    通過HttpServletResponse實現重定向,轉發。

    public void hello(HttpServletRequest req,HttpServletResponse resp) throws ServletException, IOException{
        //內容輸出
        resp.getWriter().println("hello springmvc");
        //重定向
        resp.sendRedirect("/jsp/hello.jsp");
        //轉發
        req.getRequestDispatcher("index.jsp").forward(req,resp);
    }

    三:通過springmvc實現重定向和轉發(未配置視圖解析器)

     @RequestMapping("/hello1.do")
    	public String hello1(ModelMap map){
             //轉發 
             return "index.jsp";
    	}
        @RequestMapping("/hello2.do")
    	public String hello2(ModelMap map){
             return "forward:index.jsp";
    	}
    	@RequestMapping("/hello3.do")
    	public String hello3(ModelMap map){
    		map.addAttribute("msg", "helloworld");
    		return "redirect:/WEB-INF/jsp/hello.jsp";
    	}

    四:通過springmvc實現重定向和轉發(配置視圖解析器)

      @RequestMapping("/hello.do")
    	public String hello(ModelMap map){
             //轉發 
             return "hello";
    	}
     直接轉發至/WEB-INF/jsp/hello.jsp頁面。具體要看視圖解析器配置的前綴和后綴。
    //重定向
       @RequestMapping("/hello2.do")
    	public String hello2(ModelMap map){
             //報錯示例1 
             return "redirect:hello";
             //報錯示例2
             return "redirect:hello.jsp";
             //正解
             return "redirect:hello.do";
    	}

    頁面訪問hello2.do。發現跳轉至hello。因@RequestMapping注釋沒有hello。故報404錯誤。

     

     

    這種重定向其實是跳轉至另一個.do。不會使用配置的視圖解析器。

     

    版權聲明:本文為lingyiwin原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/lingyiwin/article/details/103408087

    智能推薦

    SpringMVC--視圖和視圖解析器

    1.Spring MVC如何解析視圖 2.視圖   常用的視圖實現類 3.視圖解析器   常用的視圖解析器實現類 4.JstlView(若項目中使用了 JSTL,則 SpringMVC 會自動把視圖由 InternalResourceView 轉為 JstlView )  4.1 fmt 標簽  若使用 JSTL 的 fmt 標簽則需要在...

    SpringMVC視圖和視圖解析器

    視圖和視圖解析器 視圖:請求處理方法執行后,最終返回一個ModelAndView對象,對于那些返回String,View或者ModelMap等類型處理方法,SpringMVC也會在內部將它們裝配成一個ModelAndView對象,它包含了邏輯名和模型對象的視圖。 視圖解析器:SpringMVC借助視圖解析器(ViewResolver)得到最終的視圖對象(View),最終的視圖可以是JSP,也可以是...

    SpringMvc中Model、ModelMap、ModelAndView理解和具體使用總結

    總結: ①Model、ModelMap兩者似乎沒有任何區別 ②ModelMap(model)、ModelAndView這兩者的區別:記住有一個需要返回對象,一個需要返回的是地址路徑。 1.在了解這三者之前,需要知道一點:SpringMVC在調用方法前會創建一個隱含的數據模型,作為模型數據的存儲容器, 稱為”隱含模型”。 也就是說在每一次的前后臺請求的時候會隨帶這一個背包,不...

    SpringMVC-視圖解析器ViewResolver詳解

    本文基于spring 5.5.2.release 前幾篇文章介紹了springmvc調用Controller的處理流程,現在已經知道調用Controller之后可以得到ModelAndView對象,那么如何根據ModelAndView對象得到View對象,這就需要借助視圖解析器ViewResolver了。 文章目錄 一、ViewResolver 1、BeanNameViewResolver 2、V...

    springmvc配置視圖解析器和重定向

    為什么需要配置視圖解析器 看圖 配置步驟 第一步:需要在springmvc.xml配置 第二步:配置視圖解析器后的controller代碼 Controller方法返回字符串表示邏輯視圖名,通過視圖解析器解析為物理視圖地址。 此時默認的物理視圖地址為:視圖前綴+返回值+視圖后綴 解決配置視圖解析器帶來的問題 如果直接使用視圖解析器的配置開發,那么必須保證視圖解析器前綴目錄下面有對應的頁面文件才能跳...

    猜你喜歡

    SpringMVC 視圖解析器

    1. SpringMVC 會提供默認視圖解析器. 2. 程序員自定義視圖解析器(springmcv.xml中) 3. 如果希望不執行自定義視圖解析器,在方法返回值前面添加 forward:或 redirect:...

    SpringMVC視圖解析器InternalResourceViewResolver

    轉載自http://www.tonitech.com/2474.html 今天在搭建SpringMVC開發框架的時候,出現freemarker的視圖沒有找到,報404錯誤。我的配置代碼如下: 我配置了兩個視圖解析器,所以視圖解析是鏈式的,如果一個視圖解析器沒有找到對應的view-name,則開始找第二的解析器。InternalResourceViewResolver的property中的order...

    SpringMVC 視圖解析器

    視圖解析器流程 Spring MVC 的目標方法在返回值數據的時候,主要有以下幾種形式,String,ModelAndView,View 等等。那么 Spring MVC 的解析流程是如何? Spring MVC 在調用目標方法時候,都會封裝成一個 ModelAndView 對象,然后交給視圖解析器(ViewResolver) 去處理。然后視圖解析器解析成 JSP/HTML 等 View。 通過視...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    精品国产乱码久久久久久蜜桃不卡