SpriingMVC執行流程結構

來源:互聯網
上載者:User

標籤:初始化   web應用開發   index.jsp   apt   核心   需要   添加   結構   控制   

 SpringMVC也叫spring web mvc,屬於表現層的架構,是Spring架構的一部分。

 Spring  MVC請求流程圖:

request-------->DispatcherServler(中央調度器/前端控制器)----->
HandlerMapping(處理器映射器)------>返回一個執行鏈----->將執行鏈轉交給HandlerAdaptor(處理器適配器)----->調度Handler(處理器)----->
ModelAndView----->先將結果交給HandlerAdaptor,然後再由HandlerAdaptor轉交給 DispatcherServler--------->DispatcherServler調度ViewResolver(視圖解析器)---->交給DispatcherServler------->
尋找View---->View做出響應(response)

關於urlpattern說法

最好配成*.do
不能配成/*      無法訪問*.jsp等動態資源
最好也不要配成/   無法訪問靜態資源
不得不配成/
一切源於Restful編程  rest

不能配置為/*

DispatcherServlet會將向動態網頁面請求,即向jsp頁面的跳轉請求也當做是一個普通的Controller請求。中央調度器會調用處理器映射器為其尋找相應的處理器。當然是找不到的。jsp頁面會報404錯誤
結論:/*會攔截動態資源

 

不得不配成/

方案一:使用Tomcat預設的Servlet解決

方案二:使用MVC的default-servlet-handler

會將對靜態資源的訪問請求通過HandlerMapping映射到預設Servlet要求處理常式DefaultServletRequestHandler對象。而該處理器調用了Tomcat的DefaultServlet來處理靜態資源的訪問請求。當然需要引入mvc約束

 

<!--將靜態資源交流系統預設的servlet處理--><mvc:default-servlet-handler/>

方式三:使用MVC的resource解決

 

在Spring3.0.4之後,Spring定義了專門用於處理靜態資源請求的處理器ResourceHttpRequestHandler。並且添加了<mvc:resources/>標籤,專門用於解決靜態資源無法訪問問題。

 

<!--方式三:使用SPring3之後自己提供的處理器,處理靜態資源--><mvc:resources mapping="/img/**" location="/img/"></mvc:resources>

Location:靜態資源所在目錄
mapping: 對資源的請求
注意:需要Tomcat7支援

 

 

Spring MVC環境搭配 (兼第一個案例)

在MyEclipse中建立Web Project後,使用Spring MVC架構的步驟如下:

     (1)引入jar檔案

               下載需要的jar檔案:    spring-web-3.2.13.RELEASE.jar:在web應用開發時使用Spring架構所需的核心類。

                                                    spreing-webmvc-3.2.13.RELEASE.jar:Spring MVC架構相關的所有類,包含架構的servlets,Web MVC架構,以及對控制器和視圖的支援。

 

<dependency>    <groupId>org.springframework</groupId>    <artifactId>spring-webmvc</artifactId>    <version>3.2.13.RELEASE</version></dependency>

 

 

 

<dependency>    <groupId>org.springframework</groupId>    <artifactId>spring-web</artifactId>    <version>4.3.9.RELEASE</version></dependency>

 

 

     (2)Spring MVC配置:

              *在web.xml中配置Servlet,定義DispatcherServlet.

                Spring MVC是基於Servlet的,DispatcherServlet是整個Spring MVC架構的核心,它負責截獲請求並將其指派給相應的處理器處理。

                

<!--配置Spring MVC的核心控制器DispatcherServlet--><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:spring.xml</param-value>    </init-param>    <load-on-startup>1</load-on-startup>  只要tomcat一啟動就將servlet建立好,並存入記憶體。  </servlet>  <servlet-mapping>    <servlet-name>springmvc</servlet-name>    <url-pattern>/</url-pattern>  </servlet-mapping>

 

              *建立Spring MVC的設定檔(springmvc-servlet.xml)

 

     xmlns:mvc="http://www.springframework.org/schema/mvc"
     http://www.springframework.org/schema/mvc     http://www.springframework.org/schema/mvc/spring-mvc.xsd
  
     <!--將靜態資源交流系統預設的servlet處理-->    <!--      <mvc:default-servlet-handler/> --><!--方式三:使用SPring3之後自己提供的處理器,處理靜態資源--> <!--<mvc:resources mapping="/img/**" location="/img/"></mvc:resources>-->     <!--處理器映射器--><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
     <!--註冊處理器--><bean id="/hello.do" class="cn.happy.controller.Onecontriller"></bean>   <!--視圖解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">    <property name="prefix" value="/WEB-INF/"></property>    <property name="suffix" value=".jsp"></property></bean>
 (3)建立Controller(處理請求的控制器)
      在src下建立cn.happy.controller包,並在該包下建立Onecontriller類,該類需要繼承org.springframework.web.servlet.mvc.Controller;並實現傳回值是ModelAndView的handleRequest方法。
public class Onecontriller implements Controller {    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {        ModelAndView  mv=new ModelAndView();
       mv.addObject("uname","啦啦啦啦");      // 二
mv.setViewName("index"); return mv; }}
  (4)建立View
在WEB-INF下建立一個index.jsp頁面
<body><h3>人生若是無誤,鉛筆何需橡皮!${uname}</h3><img src="${pageContext.request.contextPath}/img/1.jpg"></body>

SpriingMVC執行流程結構

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.