本身肯定會學的東西,今天想起來了,那就記一下吧。
做那個后端的界面時候,有人反應不要hou.jsp,說設個路由隨便編亂點,別人猜不到。我也沒聽懂設個路由是什么意思。
最后一想,這不就是個jsp映射嘛。
jsp映射和servlet映射就一條不同,servlet還可以通過@WebServlet(“”)方法。
順便轉載一下web.xml的介紹,方便以后查看
轉載自:http://blog.csdn.net/believejava/article/details/43229361
Web.xml詳解:
1.web.xml加載過程(步驟)
首先簡單講一下,web.xml的加載過程。當啟動一個WEB項目時,容器包括(JBoss、Tomcat等)首先會讀取項目web.xml配置文件里的配置,當這一步驟沒有出錯並且完成之后,項目才能正常地被啟動起來。
1. 啟動WEB項目的時候,容器首先會去它的配置文件web.xml讀取兩個節點: <listener></listener>和<context-param></context-param>。
2. 緊接着,容器創建一個ServletContext(application),這個WEB項目所有部分都將共享這個上下文。
3. 容器以<context-param></context-param>的name作為鍵,value作為值,將其轉化為鍵值對,存入ServletContext。
4. 容器創建<listener></listener>中的類實例,根據配置的class類路徑<listener-class>來創建監聽,在監聽中會有contextInitialized(ServletContextEvent args)初始化方法,啟動Web應用時,系統調用Listener的該方法,在這個方法中獲得:
- <span style="font-family:Times New Roman;">ServletContextapplication=ServletContextEvent.getServletContext();</span>
context-param的值就是application.getInitParameter("context-param的鍵");得到這個context-param的值之后,你就可以做一些操作了。
5. 舉例:你可能想在項目啟動之前就打開數據庫,那么這里就可以在<context-param>中設置數據庫的連接方式(驅動、url、user、password),在監聽類中初始化數據庫的連接。這個監聽是自己寫的一個類,除了初始化方法,它還有銷毀方法,用於關閉應用前釋放資源。比如:說數據庫連接的關閉,此時,調用contextDestroyed(ServletContextEvent args),關閉Web應用時,系統調用Listener的該方法。
6. 接着,容器會讀取<filter></filter>,根據指定的類路徑來實例化過濾器。
7. 以上都是在WEB項目還沒有完全啟動起來的時候就已經完成了的工作。如果系統中有Servlet,則Servlet是在第一次發起請求的時候被實例化的,而且一般不會被容器銷毀,它可以服務於多個用戶的請求。所以,Servlet的初始化都要比上面提到的那幾個要遲。
8. 總的來說,web.xml的加載順序是:<context-param>-><listener>-><filter>-><servlet>。其中,如果web.xml中出現了相同的元素,則按照在配置文件中出現的先后順序來加載。
9. 對於某類元素而言,與它們出現的順序是有關的。以<filter>為例,web.xml中當然可以定義多個<filter>,與<filter>相關的一個元素是<filter-mapping>,注意,對於擁有相同<filter-name>的<filter>和<filter-mapping>元素而言,<filter-mapping>必須出現在<filter>之后,否則當解析到<filter-mapping>時,它所對應的<filter-name>還未定義。web容器啟動初始化每個<filter>時,按照<filter>出現的順序來初始化的,當請求資源匹配多個<filter-mapping>時,<filter>攔截資源是按照<filter-mapping>元素出現的順序來依次調用doFilter()方法的。<servlet>同<filter>類似,此處不再贅述。
2.web.xml標簽詳解
1. XML文檔有效性檢查
- <span style="font-family:Times New Roman;"><!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ></span>
這段代碼指定文件類型定義(DTD),可以通過它檢查XML文檔的有效性。下面顯示的<!DOCTYPE>元素有幾個特性,這些特性告訴我們關於DTD的信息:
- web-app定義該文檔(部署描述符,不是DTD文件)的根元素
- PUBLIC意味着DTD文件可以被公開使用
- -//Sun Microsystems, Inc.//DTD Web Application 2.3//EN”意味着DTD由Sun Microsystems, Inc.維護。該信息也表示它描述的文檔類型是DTD Web Application 2.3,而且DTD是用英文書寫的。
- URL"http://java.sun.com/dtd/web-app_2_3.dtd"表示D文件的位置。
2. <web-app></web-app>
部署描述符的根元素是<web-app>。DTD文件規定<web-app>元素的子元素的語法如下:
- <span style="font-family:Times New Roman;"><!ELEMENT web-app (icon?, display-name?, description?,distributable?, context-param*, filter*, filter-mapping*,listener*, servlet*, servlet-mapping*, session-config?,mime-mapping*, welcome-file-list?,error-page*, taglib*, resource-env-ref*, resource-ref*,security-constraint*, login-config?, security-role*,env-entry*,ejb-ref*, ejb-local-ref*)> </span>
正如您所看到的,這個元素含有23個子元素,而且子元素都是可選的。問號(?)表示子元素是可選的,而且只能出現一次。星號(*)表示子元素可在部署描述符中出現零次或多次。有些子元素還可以有它們自己的子元素。web.xml文件中<web-app>元素聲明的是下面每個子元素的聲明。下面講述部署描述符中可能包含的所有子元素。
注意:在Servlet 2.3中,子元素必須按照DTD文件語法描述中指定的順序出現。比如:如果部署描述符中的<web-app>元素有<servlet>和<servlet-mapping>兩個子元素,則<servlet>子元素必須出現在<servlet-mapping>子元素之前。在Servlet2.4中,順序並不重要。
3. <display-name></display-name>
<display-name>test-hwp-web-application</display-name>定義了web應用的名稱,可以在http://localhost:8080/manager/html中顯示。如下所示:

4. <distributable/>
<distributable/>可以使用distributable元素來告訴servlet/JSP容器,Web容器中部署的應用程序適合在分布式環境下運行。
5. <context-param></context-param>
-
<!--****************************上下文初始化參數***************************-->
-
<context-param>
-
<param-name>webAppRootKey</param-name>
-
<param-value>business.root</param-value>
-
</context-param>
-
<!-- spring config -->
-
<context-param>
-
<param-name>contextConfigLocation</param-name>
-
<param-value>/WEB-INF/spring-configuration/*.xml</param-value>
-
</context-param>
5.1<context-param>解釋:
5.2 什么情況下使用,為什么使用<context-param>:
5.3 Spring配置文件:
-
<!-- spring config -->
-
<context-param>
-
<param-name>contextConfigLocation</param-name>
-
<param-value>/WEB-INF/spring-configuration/*.xml</param-value>
-
</context-param>
-
<listener>
-
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
-
</listener>

-
<!-- 應用路徑 -->
-
<context-param>
-
<param-name>webAppRootKey</param-name>
-
<param-value>webapp.root</param-value>
-
</context-param>
-
<!—business-client應用路徑 -->
-
<context-param>
-
<param-name>webAppRootKey</param-name>
-
<param-value> business.root </param-value>
-
</context-param>
-
<!—public-base應用路徑 -->
-
<context-param>
-
<param-name>webAppRootKey</param-name>
-
<param-value> pubbase.root</param-value>
-
</context-param>
5.4 多個配置文件交叉引用處理:
-
<context-param>
-
<param-name>contextConfigLocation </param-name>
-
<param-value> applicationContext-database.xml,applicationContext.xml</param-value>
-
<context-param>
-
<bean id="userService" class="domain.user.service.impl.UserServiceImpl">
-
<property name="dbbean">
-
<ref bean="dbBean"/>
-
</property>
-
</bean>
5.5 在不同環境下如何獲取:范例:
-
<context-param>
-
<param-name>param_name</param-name>
-
<param-value>param_value</param-value>
-
</context-param>
6. <session-config></session-config>
-
<!-- Set timeout to 120 minutes -->
-
<session-config>
-
<session-timeout>120</session-timeout>
-
</session-config>
7. <listener></listener>
-
<!--****************************監聽器配置*********************************-->
-
<!-- Spring的log4j監聽器 -->
-
<listener>
-
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
-
</listener>
-
<listener>
-
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
-
</listener>
-
<!-- 與CAS Single Sign Out Filter配合,注銷登錄信息 -->
-
<listener>
-
<listener-class>com.yonyou.mcloud.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
-
</listener>
7.1 Listener介紹:
(1). ServletContextListener:用於監聽Web應用的啟動和關閉;
(2). ServletContextAttributeListener:用於監聽ServletContext范圍(application)內屬性的改變;
(3). ServletRequestListener:用於監聽用戶的請求;
(4). ServletRequestAttributeListener:用於監聽ServletRequest范圍(request)內屬性的改變;
(5). HttpSessionListener:用於監聽用戶session的開始和結束;
(6). HttpSessionAttributeListener:用於監聽HttpSession范圍(session)內屬性的改變。
<listener>主要用於監聽Web應用事件,其中有兩個比較重要的WEB應用事件:應用的啟動和停止(starting up or shutting down)和Session的創建和失效(created or destroyed)。應用啟動事件發生在應用第一次被Servlet容器裝載和啟動的時候;停止事件發生在Web應用停止的時候。Session創建事件發生在每次一個新的session創建的時候,類似地Session失效事件發生在每次一個Session失效的時候。為了使用這些Web應用事件做些有用的事情,我們必須創建和使用一些特殊的“監聽類”。它們是實現了以下兩個接口中任何一個接口的簡單java類:javax.servlet.ServletContextListener或javax.servlet.http.HttpSessionListener,如果想讓你的類監聽應用的啟動和停止事件,你就得實現ServletContextListener接口;想讓你的類去監聽Session的創建和失效事件,那你就得實現HttpSessionListener接口。
7.2 Listener配置:
-
<listener>
-
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
-
</listener>
-
<servlet>
-
<servlet-name>context</servlet-narne>
-
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
-
<load-on-startup>1</load-on-startup>
-
</servlet>
-
<listener>
-
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
-
</listener>
8. <filter></filter>
-
<!--****************************過濾器配置*********************************-->
-
<!-- 字符集過濾器 -->
-
<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>
-
<filter-name>CAS Single Sign Out Filter</filter-name>
-
<filter-class>com.yonyou.mcloud.cas.client.session.SingleSignOutFilter</filter-class>
-
</filter>
-
<!-- 認證過濾器 -->
-
<filter>
-
<filter-name>CAS Authentication Filter</filter-name>
-
<filter-class>com.yonyou.mcloud.cas.client.authentication.ExpandAuthenticationFilter</filter-class>
-
<init-param>
-
<param-name>casServerLoginUrl</param-name>
-
<param-value>https://dev.yonyou.com:443/sso-server/login</param-value>
-
</init-param>
-
<init-param>
-
<!--這里的server是服務端的IP -->
-
<param-name>serverName</param-name>
-
<param-value>http://10.1.215.40:80</param-value>
-
</init-param>
-
</filter>
-
<!-- 驗證ST/PT過濾器 -->
-
<filter>
-
<filter-name>CAS Validation Filter</filter-name>
-
<filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
-
<init-param>
-
<param-name>casServerUrlPrefix</param-name>
-
<param-value>https://dev.yonyou.com:443/sso-server</param-value>
-
</init-param>
-
<init-param>
-
<param-name>serverName</param-name>
-
<param-value>http://10.1.215.40:80</param-value>
-
</init-param>
-
<init-param>
-
<param-name>proxyCallbackUrl</param-name>
-
<param-value>https://dev.yonyou.com:443/business/proxyCallback</param-value>
-
</init-param>
-
<init-param>
-
<param-name>proxyReceptorUrl</param-name>
-
<param-value>/proxyCallback</param-value>
-
</init-param>
-
<init-param>
-
<param-name>proxyGrantingTicketStorageClass</param-name>
-
<param-value>com.yonyou.mcloud.cas.client.proxy.MemcachedBackedProxyGrantingTicketStorageImpl</param-value>
-
</init-param>
-
<!-- 解決中文問題 -->
-
<init-param>
-
<param-name>encoding</param-name>
-
<param-value>UTF-8</param-value>
-
</init-param>
-
</filter>
-
<filter>
-
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
-
<filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
-
</filter>
-
<filter>
-
<filter-name>CAS Assertion Thread Local Filter</filter-name>
-
<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
-
</filter>
-
<filter>
-
<filter-name>NoCache Filter</filter-name>
-
<filter-class>com.yonyou.mcloud.cas.client.authentication.NoCacheFilter</filter-class>
-
</filter>
-
<!--****************************映射關系配置********************************-->
-
<filter-mapping>
-
<filter-name>CharacterEncodingFilter</filter-name>
-
<url-pattern>/*</url-pattern>
-
</filter-mapping>
-
<filter-mapping>
-
<filter-name>NoCache Filter</filter-name>
-
<url-pattern>/*</url-pattern>
-
</filter-mapping>
-
<filter-mapping>
-
<filter-name>CAS Single Sign Out Filter</filter-name>
-
<url-pattern>/*</url-pattern>
-
</filter-mapping>
-
<filter-mapping>
-
<filter-name>CAS Validation Filter</filter-name>
-
<url-pattern>/proxyCallback</url-pattern>
-
</filter-mapping>
-
<filter-mapping>
-
<filter-name>CAS Authentication Filter</filter-name>
-
<url-pattern>/*</url-pattern>
-
</filter-mapping>
-
<filter-mapping>
-
<filter-name>CAS Validation Filter</filter-name>
-
<url-pattern>/*</url-pattern>
-
</filter-mapping>
-
<filter-mapping>
-
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
-
<url-pattern>/*</url-pattern>
-
</filter-mapping>
-
<filter-mapping>
-
<filter-name>CAS Assertion Thread Local Filter</filter-name>
-
<url-pattern>/*</url-pattern>
-
</filter-mapping>
(1) 創建Filter處理類
(2) Web.xml文件中配置Filter
Filter必須實現javax.servlet.Filter接口,在該接口中定義了三個方法:
(1) void init(FilterConfig config):用於完成Filter的初始化。FilteConfig用於訪問Filter的配置信息。
(2) void destroy():用於Filter銷毀前,完成某些資源的回收。
(3) void doFilter(ServletRequest request,ServletResponse response,FilterChain chain):實現過濾功能的核心方法,該方法就是對每個請求及響應增加額外的處理。該方法實現對用戶請求request進行預處理,也可以實現對服務器響應response進行后處理---它們的分界線為是否調用了chain.doFilter(request,response),執行該方法之前,即對用戶請求request進行預處理,執行該方法之后,即對服務器響應response進行后處理。
8.2 Filter配置:
Filter可認為是Servlet的“增強版”,因此Filter配置與Servlet的配置非常相似,需要配置兩部分:配置Filter名稱和Filter攔截器URL模式。區別在於Servlet通常只配置一個URL,而Filter可以同時配置多個請求的URL。配置Filter有兩種方式:(1). 在Filter類中通過Annotation進行配置。
我們使用的是web.xml這種配置方式,下面重點介紹<filter>內包含的一些元素。
<filter>用於指定Web容器中的過濾器,可包含<filter-name>、<filter-class>、<init-param>、<icon>、<display-name>、<description>。
8.21 字符集過濾器
-
<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>
8.22 緩存控制
-
<filter>
-
<filter-name>NoCache Filter</filter-name>
-
<filter-class>com.yonyou.mcloud.cas.client.authentication.NoCacheFilter</filter-class>
-
</filter>
-
<filter-mapping>
-
<filter-name>NoCache Filter</filter-name>
-
<!—表示對URL全部過濾-->
-
<url-pattern>/*</url-pattern>
-
</filter-mapping>
8.23 登錄認證
-
<!-- 認證過濾器 -->
-
<filter>
-
<filter-name>CAS Authentication Filter</filter-name>
-
<filter-class>com.yonyou.mcloud.cas.client.authentication.ExpandAuthenticationFilter</filter-class>
-
<init-param>
-
<param-name>casServerLoginUrl</param-name>
-
<param-value>https://dev.yonyou.com:443/sso-server/login</param-value>
-
</init-param>
-
<init-param>
-
<!--這里的server是服務端的IP -->
-
<param-name>serverName</param-name>
-
<param-value>http://10.1.215.40:80</param-value>
-
</init-param>
-
</filter>
-
<filter-mapping>
-
<filter-name>CAS Authentication Filter</filter-name>
-
<url-pattern>/*</url-pattern>
-
</filter-mapping>
8.24 單點登出
-
<filter>
-
<filter-name>CAS Single Sign Out Filter</filter-name>
-
<filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
-
</filter>
-
<filter-mapping>
-
<filter-name>CAS Single Sign Out Filter</filter-name>
-
<url-pattern>/*</url-pattern>
-
</filter-mapping>
-
<listener>
-
<listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
-
</listener>
8.25 封裝request
-
<filter>
-
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
-
<filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>
-
</filter>
-
<filter-mapping>
-
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>
-
<url-pattern>/*</url-pattern>
-
</filter-mapping>
8.26 存放Assertion到ThreadLocal中
-
<filter>
-
<filter-name>CAS Assertion Thread Local Filter</filter-name>
-
<filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
-
</filter>
-
<filter-mapping>
-
<filter-name>CAS Assertion Thread Local Filter</filter-name>
-
<url-pattern>/*</url-pattern>
-
</filter-mapping>
8.27 禁用瀏覽器緩存
-
<filter>
-
<filter-name>NoCache Filter</filter-name>
-
<filter-class>com.yonyou.mcloud.cas.client.authentication.NoCacheFilter</filter-class>
-
</filter>
-
<filter-mapping>
-
<filter-name>NoCache Filter</filter-name>
-
<url-pattern>/*</url-pattern>
-
</filter-mapping>
8.28 CAS Client向CAS Server進行ticket驗證
-
<!-- 驗證ST/PT過濾器 -->
-
<filter>
-
<filter-name>CAS Validation Filter</filter-name>
-
<filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>
-
<init-param>
-
<param-name>casServerUrlPrefix</param-name>
-
<param-value>https://dev.yonyou.com:443/sso-server</param-value>
-
</init-param>
-
<init-param>
-
<param-name>serverName</param-name>
-
<param-value>http://10.1.215.40:80</param-value>
-
</init-param>
-
<init-param>
-
<param-name>proxyCallbackUrl</param-name>
-
<param-value>https://dev.yonyou.com:443/business/proxyCallback</param-value>
-
</init-param>
-
<init-param>
-
<param-name>proxyReceptorUrl</param-name>
-
<param-value>/proxyCallback</param-value>
-
</init-param>
-
<init-param>
-
<param-name>proxyGrantingTicketStorageClass</param-name>
-
<param-value>com.yonyou.mcloud.cas.client.proxy.MemcachedBackedProxyGrantingTicketStorageImpl</param-value>
-
</init-param>
-
<!-- 解決中文問題 -->
-
<init-param>
-
<param-name>encoding</param-name>
-
<param-value>UTF-8</param-value>
-
</init-param>
-
</filter>
-
<filter-mapping>
-
<filter-name>CAS Validation Filter</filter-name>
-
<url-pattern>/proxyCallback</url-pattern>
-
</filter-mapping>
-
<filter-mapping>
-
<filter-name>CAS Validation Filter</filter-name>
-
<url-pattern>/*</url-pattern>
-
</filter-mapping>
9. <servlet></servlet>
-
<!--****************************servlet</span><span style="font-family:SimSun;">配置</span><span style="font-family:Times New Roman;">******************************-->
-
<!-- Spring view</span><span style="font-family:SimSun;">分發器 對所有的請求都由business對應的類來控制轉發</span><span style="font-family:Times New Roman;"> -->
-
<servlet>
-
<servlet-name>business</servlet-name>
-
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
-
<init-param>
-
<param-name>publishContext</param-name>
-
<param-value>false</param-value>
-
</init-param>
-
<load-on-startup>1</load-on-startup>
-
</servlet>
-
<!-- </span><span style="font-family:SimSun;">用戶登出</span><span style="font-family:Times New Roman;"> -->
-
<servlet>
-
<servlet-name>LogOutServlet</servlet-name>
-
<servlet-class>com.yonyou.mcloud.cas.web.servlet.LogOutServlet</servlet-class>
-
<init-param>
-
<param-name>serverLogoutUrl</param-name>
-
<param-value>https://dev.yonyou.com:443/sso-server/logout</param-value>
-
</init-param>
-
<init-param>
-
<param-name>serverName</param-name>
-
<param-value>http://10.1.215.40:80/business/</param-value>
-
</init-param>
-
</servlet>
-
<!--****************************servlet</span><span style="font-family:SimSun;">映射關系配置</span><span style="font-family:Times New Roman;">*************************-->
-
<servlet-mapping>
-
<servlet-name>LogOutServlet</servlet-name>
-
<url-pattern>/logout</url-pattern>
-
</servlet-mapping>
-
<servlet-mapping>
-
<servlet-name>business</servlet-name>
-
<url-pattern>/</url-pattern>
-
</servlet-mapping>
9.1 Servlet介紹:
Servlet通常稱為服務器端小程序,是運行在服務器端的程序,用於處理及響應客戶的請求。Servlet是個特殊的java類,繼承於HttpServlet。客戶端通常只有GET和POST兩種請求方式,Servlet為了響應則兩種請求,必須重寫doGet()和doPost()方法。大部分時候,Servlet對於所有的請求響應都是完全一樣的,此時只需要重寫service()方法即可響應客戶端的所有請求。9.2 Servlet配置:
為了讓Servlet能響應用戶請求,還必須將Servlet配置在web應用中,配置Servlet需要修改web.xml文件。從Servlet3.0開始,配置Servlet有兩種方式:9.3DispatcherServlet在web.xml中的配置:
-
<!-- Spring view分發器 對所有的請求都由business對應的類來控制轉發 -->
-
<servlet>
-
<servlet-name>business</servlet-name>
-
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
-
<init-param>
-
<param-name>publishContext</param-name>
-
<param-value>false</param-value>
-
</init-param>
-
<load-on-startup>1</load-on-startup>
-
</servlet>

(2).在public-base-server工程中,通過第2種方式進行配置,把spring-servlet.xml放到src/main/resources/config/spring-servlet.xml,則需要在配置DispatcherServlet時指定<init-param>標簽。具體代碼如下:
-
<servlet>
-
<servlet-name>spring</servlet-name>
-
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
-
<init-param>
-
<param-name>publishContext</param-name>
-
<param-value>false</param-value>
-
</init-param>
-
<init-param>
-
<param-name>contextConfigLocation</param-name>
-
<param-value>classpath:config/spring-servlet.xml</param-value>
-
</init-param>
-
<load-on-startup>1</load-on-startup>
-
</servlet>



9.4 ContextLoaderListener和DispatcherServlet初始化上下文關系和區別:

10. <welcome-file-list></welcome-file-list>
-
<!-- welcome page -->
-
<welcome-file-list>
-
<welcome-file>index.html</welcome-file>
-
</welcome-file-list>
<welcome-file-list>包含一個子元素<welcome-file>,<welcome-file>用來指定首頁文件名稱。<welcome-file-list>元素可以包含一個或多個<welcome-file>子元素。如果在第一個<welcome-file>元素中沒有找到指定的文件,Web容器就會嘗試顯示第二個,以此類推。