国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - SpringMvc web.xml配置實現原理過程解析

SpringMvc web.xml配置實現原理過程解析

2020-08-11 18:21錵開や落幕 Java教程

這篇文章主要介紹了SpringMvc web.xml配置實現原理過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

1、spring 框架解決字符串編碼問題:過濾器 CharacterEncodingFilter(filter-name)

2、在web.xml配置監聽器ContextLoaderListener(listener-class)

ContextLoaderListener的作用就是啟動Web容器時,自動裝配ApplicationContext的配置信息。因為它實現了ServletContextListener這個接口,在web.xml配置這個監聽器,啟動容器時,就會默認執行它實現的方法。

3、部署applicationContext的xml文件:contextConfigLocation(context-param下的param-name)

4、DispatcherServlet是前置控制器,配置在web.xml文件中的。攔截匹配的請求,Servlet攔截匹配規則要自已定義,把攔截下來的請求,依據某某規則分發到目標Controller(我們寫的Action)來處理。

DispatcherServlet(servlet-name、servlet-class、init-param、param-name(contextConfigLocation)、param-value)

在DispatcherServlet的初始化過程中,框架會在web應用的 WEB-INF文件夾下尋找名為[servlet-name]-servlet.xml 的配置文件,生成文件中定義的bean

代碼如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
 
  <!-- 在Spring框架中是如何解決從頁面傳來的字符串的編碼問題的呢?
  下面我們來看看Spring框架給我們提供過濾器CharacterEncodingFilter
   這個過濾器就是針對于每次瀏覽器請求進行過濾的,然后再其之上添加了父類沒有的功能即處理字符編碼。
   其中encoding用來設置編碼格式,forceEncoding用來設置是否理會 request.getCharacterEncoding()方法,設置為true則強制覆蓋之前的編碼格式。-->
  <filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <!-- 項目中使用Spring 時,applicationContext.xml配置文件中并沒有BeanFactory,要想在業務層中的class 文件中直接引用Spring容器管理的bean可通過以下方式-->
  <!--1、在web.xml配置監聽器ContextLoaderListener-->
  <!--ContextLoaderListener的作用就是啟動Web容器時,自動裝配ApplicationContext的配置信息。因為它實現了ServletContextListener這個接口,在web.xml配置這個監聽器,啟動容器時,就會默認執行它實現的方法。
  在ContextLoaderListener中關聯了ContextLoader這個類,所以整個加載配置過程由ContextLoader來完成。
  它的API說明
  第一段說明ContextLoader可以由 ContextLoaderListener和ContextLoaderServlet生成。
  如果查看ContextLoaderServlet的API,可以看到它也關聯了ContextLoader這個類而且它實現了HttpServlet這個接口
  第二段,ContextLoader創建的是 XmlWebApplicationContext這樣一個類,它實現的接口是WebApplicationContext->ConfigurableWebApplicationContext->ApplicationContext->
  BeanFactory這樣一來spring中的所有bean都由這個類來創建
   IUploaddatafileManager uploadmanager = (IUploaddatafileManager)  ContextLoaderListener.getCurrentWebApplicationContext().getBean("uploadManager");
   -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <!--2、部署applicationContext的xml文件-->
  <!--如果在web.xml中不寫任何參數配置信息,默認的路徑是"/WEB-INF/applicationContext.xml,
  在WEB-INF目錄下創建的xml文件的名稱必須是applicationContext.xml。
  如果是要自定義文件名可以在web.xml里加入contextConfigLocation這個context參數:
  在<param-value> </param-value>里指定相應的xml文件名,如果有多個xml文件,可以寫在一起并以“,”號分隔。
  也可以這樣applicationContext-*.xml采用通配符,比如這那個目錄下有applicationContext-ibatis-base.xml,
  applicationContext-action.xml,applicationContext-ibatis-dao.xml等文件,都會一同被載入。
  在ContextLoaderListener中關聯了ContextLoader這個類,所以整個加載配置過程由ContextLoader來完成。-->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring/applicationContext.xml</param-value>
  </context-param>
 
  <!--如果你的DispatcherServlet攔截"/",為了實現REST風格,攔截了所有的請求,那么同時對*.js,*.jpg等靜態文件的訪問也就被攔截了。-->
  <!--方案一:激活Tomcat的defaultServlet來處理靜態文件-->
  <!--要寫在DispatcherServlet的前面, 讓 defaultServlet先攔截請求,這樣請求就不會進入Spring了,我想性能是最好的吧。-->
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.css</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.swf</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.gif</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.jpg</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.png</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.html</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.xml</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.json</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.map</url-pattern>
  </servlet-mapping>
  <!--使用Spring MVC,配置DispatcherServlet是第一步。DispatcherServlet是一個Servlet,,所以可以配置多個DispatcherServlet-->
  <!--DispatcherServlet是前置控制器,配置在web.xml文件中的。攔截匹配的請求,Servlet攔截匹配規則要自已定義,把攔截下來的請求,依據某某規則分發到目標Controller(我們寫的Action)來處理。-->
  <servlet>
    <servlet-name>DispatcherServlet</servlet-name><!--在DispatcherServlet的初始化過程中,框架會在web應用的 WEB-INF文件夾下尋找名為[servlet-name]-servlet.xml 的配置文件,生成文件中定義的bean。-->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--指明了配置文件的文件名,不使用默認配置文件名,而使用dispatcher-servlet.xml配置文件。-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <!--其中<param-value>**.xml</param-value> 這里可以使用多種寫法-->
      <!--1、不寫,使用默認值:/WEB-INF/<servlet-name>-servlet.xml-->
      <!--2、<param-value>/WEB-INF/classes/dispatcher-servlet.xml</param-value>-->
      <!--3、<param-value>classpath*:dispatcher-servlet.xml</param-value>-->
      <!--4、多個值用逗號分隔-->
      <param-value>classpath:spring/dispatcher-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup><!--是啟動順序,讓這個Servlet隨Servletp容器一起啟動。-->
  </servlet>
  <servlet-mapping>
    <!--這個Servlet的名字是dispatcher,可以有多個DispatcherServlet,是通過名字來區分的。每一個DispatcherServlet有自己的WebApplicationContext上下文對象。同時保存的ServletContext中和Request對象中.-->
    <!--ApplicationContext是Spring的核心,Context我們通常解釋為上下文環境,我想用“容器”來表述它更容易理解一些,ApplicationContext則是“應用的容器”了:P,Spring把Bean放在這個容器中,在需要的時候,用getBean方法取出-->
    <servlet-name>DispatcherServlet</servlet-name>
    <!--Servlet攔截匹配規則可以自已定義,當映射為@RequestMapping("/user/add")時,為例,攔截哪種URL合適?-->
    <!--1、攔截*.do、*.htm, 例如:/user/add.do,這是最傳統的方式,最簡單也最實用。不會導致靜態文件(jpg,js,css)被攔截。-->
    <!--2、攔截/,例如:/user/add,可以實現現在很流行的REST風格。很多互聯網類型的應用很喜歡這種風格的URL。弊端:會導致靜態文件(jpg,js,css)被攔截后不能正常顯示。 -->
    <url-pattern>/</url-pattern> <!--會攔截URL中帶“/”的請求。-->
  </servlet-mapping>
 
  <welcome-file-list><!--指定歡迎頁面-->
    <welcome-file>login.html</welcome-file>
  </welcome-file-list>
  <error-page> <!--當系統出現404錯誤,跳轉到頁面nopage.html-->
    <error-code>404</error-code>
    <location>/nopage.html</location>
  </error-page>
  <error-page> <!--當系統出現java.lang.NullPointerException,跳轉到頁面error.html-->
    <exception-type>java.lang.NullPointerException</exception-type>
    <location>/error.html</location>
  </error-page>
  <session-config><!--會話超時配置,單位分鐘-->
    <session-timeout>360</session-timeout>
  </session-config>
</web-app>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/zgrey/p/13426417.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 黄色片在线免费观看 | 成人在线免费观看视频 | 日本在线视频一区二区 | 久久久久99精品国产片 | 欧美一级在线 | 99精品视频在线观看 | 国产三级在线观看 | 骚虎av | 在线国v免费看 | 中文字幕在线精品 | 97精品国产一区二区三区 | 自拍视频一区 | 亚洲视频在线观看 | 999久久久国产999久久久 | 国产一区欧美 | 日本三级韩国三级三级a级中文 | 亚洲国产精品久久久久秋霞蜜臀 | 欧美日韩国产精品一区二区 | 成人在线一区二区 | 国产999免费视频 | 欧美精品在线一区二区三区 | 黄色精品 | 欧美午夜精品久久久久久人妖 | 亚洲网视频 | 欧美精品一区二区三区四区 | 在线播放中文字幕 | 日日操操 | 国产成人精品久久二区二区 | 欧美精品亚洲 | 国产精品久久久久久久久久久久久 | 在线免费观看色视频 | 欧美一级久久 | yy6080久久伦理一区二区 | 久久久久久久久久亚洲 | 精品国产乱码久久久久久牛牛 | 国产一级在线 | 国产亚洲一区二区三区 | 亚洲欧美日韩另类一区二区 | 日本福利视频 | 亚洲精品久久久久久久久久久久久 | 日韩中文字幕在线观看视频 |