中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringMVC底層執行的原理與流程

發布時間:2020-07-23 09:48:16 來源:億速云 閱讀:284 作者:小豬 欄目:編程語言

這篇文章主要講解了SpringMVC底層執行的原理與流程,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

一個簡單的HelloSpringMVC程序

先在web,xml中注冊一個前端控制器(DispatcherServlet)

 <&#63;xml version="1.0" encoding="UTF-8"&#63;>
 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
      version="4.0">
     <!--配置DispatcherServlet:這是SpringMVC的核心,請求分發器,前端控制器-->
     <servlet>
      <servlet-name>springmvc</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <!--要綁定springmvc的配置文件-->
       <init-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>classpath:springmvc-servlet.xml</param-value>
       </init-param>
       <!--啟動級別為1-->
       <load-on-startup>1</load-on-startup>
     </servlet>
   <servlet-mapping>
     <servlet-name>springmvc</servlet-name>
     <url-pattern>/</url-pattern>
   </servlet-mapping>
 </web-app>

配置文件(springmvc-servlet.xml)

HandlerMapper是處理器映射器-->根據請求的地址去找處理器(如案例中的"/hello")

HandlerAdapter是處理器適配器-->找到處理器后根據id去適配對應的controller(如適配到案例中的HelloController),controller會返回ModelAndView及其前端數據

ViewResolver是視圖解析器,其作用為:

1.獲取到ModelAndView中的數據

2.解析視圖名稱

3.拼接視圖名稱

4.數據渲染

 <&#63;xml version="1.0" encoding="UTF-8"&#63;>
 <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 class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
   <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> 
   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
     <property name="prefix" value="/WEB-INF/jsp/"/>
     <property name="suffix" value=".jsp"/>
   </bean>
 
   <bean id="/hello" class="com.kuang.contorller.HelloController"/> 
 </beans>

controller層:

實現Controller接口,重寫內部方法(一般不會使用,這是底層原理)

ModelAndView是模型、視圖

 public class HelloController implements Controller {
   @Override
   public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
     ModelAndView mv = new ModelAndView();
     mv.addObject("msg","HelloSpringMVC!");
     mv.setViewName("test");
     return mv;
   }
 }

底層流程圖

實線是SpringMVC已經幫你實現好了,虛線是需要自己手動

SpringMVC底層執行的原理與流程

以上僅是說明底層執行原理,實際開發并不會這樣去使用!

在實際開發中SpringMVC推薦使用注解的方式

在注解開發中,不需要我們去配置處理器適配器和處理器映射器。

web.xml中只需配置DispatcherServlet前端控制器

 <&#63;xml version="1.0" encoding="UTF-8"&#63;>
 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
      version="4.0">
   
   <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:springmvc-servlet.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>
 </web-app>

在springmvc-servlet.xml中配置視圖解析器等

<context:component-scan base-package="com.kuang.controller"/>  /*組件掃描,用于掃描controller下的包*/
    <mvc:default-servlet-handler/>              /*靜態資源過濾*/
    <mvc:annotation-driven/>                 /*這個就幫助我們配置了映射器以及適配器*/
 <&#63;xml version="1.0" encoding="UTF-8"&#63;>
 <beans xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:context="http://www.springframework.org/schema/context"
     xmlns:mvc="http://www.springframework.org/schema/mvc"
     xsi:schemaLocation="http://www.springframework.org/schema/beans
     http://www.springframework.org/schema/beans/spring-beans.xsd
     http://www.springframework.org/schema/context
     https://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/mvc
    https://www.springframework.org/schema/mvc/spring-mvc.xsd">
     <context:component-scan base-package="com.kuang.controller"/>
     <mvc:default-servlet-handler/>
     <mvc:annotation-driven/> 
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">
       <property name="prefix" value="/WEB-INF/jsp/"/>
       <property name="suffix" value=".jsp"/>
     </bean>
 </beans>

contorller

 @Controller    //說明這類被Spring托管了
 @RequestMapping("/hello")
 public class HelloController {
   @RequestMapping("/h2")   //這個注解會執行視圖解析器
   public String hello(Model model){
     model.addAttribute("msg","helloSpringMVCAnnotation");
     return "hello";
   }
 }

看完上述內容,是不是對SpringMVC底層執行的原理與流程有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

抚松县| 连云港市| 灵寿县| 新绛县| 三江| 太和县| 九台市| 伊春市| 澄城县| 新泰市| 望谟县| 宁德市| 云安县| 合作市| 阿拉尔市| 辽中县| 灵山县| 黄龙县| 定兴县| 肃宁县| 郸城县| 冕宁县| 甘德县| 兴海县| 民勤县| 罗平县| 翁源县| 青川县| 东莞市| 蒙阴县| 铁岭县| 洱源县| 五莲县| 文登市| 阳高县| 隆子县| 隆尧县| 中牟县| 乌鲁木齐市| 突泉县| 吉首市|