91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

宁都县| 双江| 武城县| 汕尾市| 南充市| 武功县| 罗山县| 大洼县| 荔波县| 延吉市| 探索| 广安市| 江源县| 怀集县| 昌平区| 巴南区| 昌吉市| 姜堰市| 中西区| 农安县| 漳平市| 东方市| 华容县| 达州市| 社旗县| 南召县| 沅江市| 乐安县| 绥化市| 稷山县| 定结县| 盐亭县| 莲花县| 孟村| 古蔺县| 东阳市| 固阳县| 玉树县| 梁山县| 灵武市| 扎赉特旗|