• <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 方法名稱解析器和視圖解析器

    其中的組件:
    1,前端控制器DispatcherServlet(不需要程序員開發)
    作用是接收請求,響應結果,相當于轉發器
    2,處理器映射器HandlerMapping(不需要程序員開發)
    作用:根據請求的url查找handler
    3,處理器適配器HandleAdapter
    作用:按照特定規則去執行Handler
    注意:編寫Handler時要按照HandlerAdapter的要求去做 ,這樣適配器才可以去正確執行Handler
    4,視圖解析器View resolver(不需要程序員開發)
    作用:進行視圖解析,根據邏輯視圖名解析真正的視圖(view)
    5、視圖View(需要程序員開發jsp)
    View是一個接口,實現類型支持不同的view類型(jsp,freemarker,pdf,excel等)

    6、處理器Handler(重點:需要程序員開發


    springmvc和struts2的區別:
    1,springmvc是基于方法開發的,struts2是基于類開發的
    2、springmvc可以支持單例開發(通過形參的方式接收數據,每個方法的形參都有自己的獨立的內存空間,多線程安全的),建議使用單例開發,方法結束,形參數據銷毀。struts2只能多例開發(通過成員變量來接收數據的傳遞,成員變量是共享的,多線程不安全的)。
    3、經過實際測試,struts2速度慢,在于它使用了struts標簽,建議使用jstl

    案例:


    架構:


    首先我們看一下web.xml 

    這里我們配置一個前端控制器,我們還有連接一個對應的xml,還有一個防止無法訪問靜態變量的節點。

    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
      <display-name>Archetype Created Web Application</display-name>
    
      <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:springmvc03Mutil.xml</param-value>
        </init-param>
      <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
      </servlet-mapping>
      <!--<servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpg</url-pattern>
      </servlet-mapping>-->
    </web-app>
    

    這里面我們繼承一個MultiActionController并寫出豐富doFirst 我們的返回值是ModelAndView

    我們返回的是對應bean節點的id我們這個是連接的京東的網站。

    然后我們配置一個contrllro層  用來編寫代碼

    package cn.happy.springmvc03;
    
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Created by linlin on 2017/8/14.
     */
    public class MutilController extends MultiActionController {
        public ModelAndView doFirst(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
           ModelAndView mv=new ModelAndView();
           mv.setViewName("jd");
            return mv;
        }
    }
    

    然后我們配置一下xml   我的這個是引用外部視圖 所有一會我在發一個引用的xml

    這里面我們需要配置視圖解析器和方法名稱解析器,我們們在頁面上訪問的是

    我們這里面的SimpleUrlHandlerMapping是別的測試,在這里我們不需要關注。

    這里我們有引用視圖對象,引用我們下面的xml里面放的是視圖。

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
                   xmlns:aop="http://www.springframework.org/schema/aop"
                   xmlns:mvc="http://www.springframework.org/schema/mvc"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!--圖片顯示-->
    <!--<mvc:default-servlet-handler/>-->
    <mvc:resources  location="/img/" mapping="/img/**"></mvc:resources>
    
    
     <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
          <property name="urlMap">
              <map>
                  <entry key="/doFirst.do" value="MutilController"></entry>
              </map>
          </property>
        </bean>
        <!--視圖解析器-->
      <!-- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>-->
        <!--引入視圖對象-->
        <bean class="org.springframework.web.servlet.view.XmlViewResolver">
            <property name="location" value="classpath:viewjd.xml"></property>
        </bean>
        <bean id="beanNameResout" class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
    
        <bean id="paramMehod" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
            <property name="mappings">
                <props>
                    <prop key="/first1.do">doFirst</prop>
                </props>
            </property>
        </bean>
    
    <bean id="paramMehod2" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
        <property name="paramName" value="actionName"></property>
    </bean>
    
    
    <bean id="MutilController" class="cn.happy.springmvc03.MutilController">
      <property name="methodNameResolver" ref="paramMehod2"></property>
    </bean>
    </beans>

    這里我們用的是ParameterMethodNameResolver這個類

    里面的actionName是我們在頁面上的一個判斷,判斷他是不是我們用 的方法名 如果actionName=方法名,我們就會進入界面

    外部xml,這里面的id是我們在contrllor里面的返回的set.ViewName("jd")

    這里面一個是連我的項目內的頁面,一個是連接的京東的官網。

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
        <!--內部視圖-->
        <bean id="internal" class="org.springframework.web.servlet.view.JstlView">
            <property name="url" value="/WEB-INF/doFirst.jsp"></property>
        </bean>
        <!--外部視圖-->
        <bean id="jd" class="org.springframework.web.servlet.view.RedirectView">
            <property name="url" value="https://www.jd.com/"></property>
        </bean>
    </beans>


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

    智能推薦

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

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

    SpringMVC MultiActionController 默認方法名解析器

      MultiActionController默認方法名解析器 是指在請求的地址中加入指定方法名稱 MultiActionController類具有一個屬性methodNameResolver,方法名解析器:其具有默認值InternalPathMethodNameResolver,該解析器將方法名作為資源名稱進行解析,那就意味著,我們提交請求時,要將方法名作為資源名稱出現。 方法名解析器...

    SpringMVC 視圖解析器及攔截器

    視圖解析器 跳轉方式(設置返回值字符串內容) ①默認請求轉發 forward:資源路徑,forward可省略 ②重定向 redirect:資源路徑 自定義視圖解析器 SpringMVC會提供默認的視圖解析器: 可使用<bean>加載org.springframework.web.servlet.view.InternalResourceViewResolver 來自定義視圖解析器,默認...

    【SpringMVC】6.SpringMVC的視圖和視圖解析器

    注意!!! 此文章需要配置了SpringDispatcherServlet和InternalResourceViewResolver才能夠使用,如果不會配置,請翻看我【SpringMVC】系列的第一篇文章《【SpringMVC】1. SpringMVC的第一個程序——HelloWorld》。 一、視圖和視圖解析器 1.什么是視圖 視圖的作用是渲染模型數據,將模型里的數據以某...

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

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

    猜你喜歡

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

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

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

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