【web.xml】項目從web.xml開始

前言                                                                                

     依本身目前的所聞所見,每一個項目的WEB-INF下都會帶有一個web.xml配置文件。當啓動項目時,web容器(tomcat)會首先去讀取web.xml中的內容,讀取加載完成後纔算完成了項目的啓動。 css

 

詳解                                                                                 

    整體結構以下html

<?xml version="1.0" encoding="UTF-8"?>
<web-app 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"
         version="3.0" metadata-complete="true">

  <display-name>Archetype Created Web Application</display-name>
  <!--在這裏配置-->
</web-app>

 頭部         :    schema 引用java

<web-app>:具體配置配置在此標籤內,以下常見配配置項web

      1.  <context-param>:配置上下文的初始參數spring

 <!--容器在啓動時就加載spring的配置文件-->
<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
</context-param>

<context-param>
        <param-name>name</param-name>
        <param-value>小明</param-value>
</context-param>

 

          參數會加載到  context——>parameters中sql

 

此時能夠在controller中利用如下方法獲取數據庫

    @RequestMapping("/home")
    public String home(HttpServletRequest request){
        String name = request.getServletContext().getInitParameter("name");
        System.out.println(name+"_______________________");
        return "/index2";
    }

 

 

      2.<listener>:配置監聽器api

<!--spring 啓動IOC容器的監聽器-->
<listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

     3.<servlet>:配置servlettomcat

    <!--spring mvc 的DispatcherServlet-->
    <servlet>
        <servlet-name>enterprise-servlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--spring mvc 的 配置文件,若是配置文件名和servlet-name相同則不須要此配置-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:enterprise-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
        <!--對文件上傳的限制-->
        <multipart-config>
            <max-file-size>52428800</max-file-size>
            <max-request-size>52428800</max-request-size>
            <file-size-threshold>0</file-size-threshold>
        </multipart-config>
    </servlet>
    <servlet-mapping>
        <servlet-name>enterprise-servlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

      也可單獨使用,使用默認servlet加載靜態資源session

<!--tomcat默認servlet爲default-->
<servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/*.css</url-pattern>
</servlet-mapping>

 

      4.<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>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

     5.<session-config>:配置session過時時間

 <!--session的過時時間,單位爲分鐘,優先級  servlet api(setMaxInactiveInterval(秒))—> 項目/web.xml—>tomcat/web.xml-->
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

     6.<error-page>:配置錯誤跳轉頁面

<!--當頁面訪問不存在的請求時就跳轉到404.jsp頁面-->
<error-page>
      <error-code>404</error-code>
      <location>/WEB-INF/pages/error/404.jsp</location>
  </error-page>

     7.<resource-ref>:配置JNDI數據源

 <resource-ref>
        <description>DHCP數據庫鏈接池</description>
        <res-ref-name>jdbc/microDB</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
 </resource-ref>

此處可參看:這裏  查看如何實現利用JNDI實現數據庫鏈接。

 

加載順序:會先讀取<context-param>和<listener>兩個節點

      ——>建立servletContext,將<context-param>的鍵值對交給servletContext

      ——>建立listener的類實例

      ——>filter

      ——>servlet(load-on-startup:標記容器是否在啓動的時候就加載這個servlet,越小越先執行(0-正整數),負數或不配置則等到調用該servlet時才加載)

相關文章
相關標籤/搜索