一,前言
每次想了解一下java web 項目的構造,總是看到web.xml 就偃旗息鼓了,每次想到此事,便在網絡上隨便找點資料,看的時候搖頭晃腦,貌似明白了,過后卻又一知半解,故在此在前輩們的基礎上總結一番; 眾所周知在java web 的項目中,有許多 xml文件 ,spring,hibernate,struts 等;當然我認為最為重要的要屬於 web.xml,當然web.xml不是項目中所必須的;
(如果不應用任何框架 里面無任何比如servlet,filter,listener等配置 確實沒問題 直接訪問jsp)暫時從我學習到工作的經歷過來看,幾乎在所有的項目中都會有web.xml,可見其重要性;
二,web.xml在項目中的作用
我的理解:web.xml是項目在發布的時候,用來指引服務器如(tomcat):在建立容器,初始化配置文件,設置訪問初始頁面;
查詢資料:web.xml文件是用來初始化配置信息:比如Welcome頁面、servlet、servlet-mapping、filter、listener、啟動加載級別等。
三,web.xml的加載順序
應用服務服務器會根據自己的設置,來解析web.xml,所以在編寫上面有沒有特別的要求,但是據說有些有要求,所以我覺得在大致上面按照一般的步驟去編寫就可以了,比如 先寫<filter></filter>然后才是<filter-mapping></filter-mapping>;顯示
<servlet></servlet>然后才是<servlet-mapping></servlet-mapping>,還是要遵循着一些基本的原則;
一般加載的步驟如下:
1,服務器(tomcat)先加載:<content-param></content-param>
ServletContext對象是在Web應用程序裝載時初始化的,所以<content-param></content-param>可以在任意時候想上寫文中寫入鍵值對;
例:
<content-param>
<param-name>name</param-name>
<param-value>value</param-value>
</content-param>
由於是放置於上下文環境中,在程序直接可以用getServletContext().getInitParameter("name"),獲取其中設置的值;
2,<listener></listener>
實現 HttpSessionListener, ServletContextListener, ServletContextAttributeListener接口,然后實現其中的方法;
作用;統計訪問次數
例:
<listener>
<listener-class><listener-class>
</listener>
3,<filter></filter>和<filter-mapping></filter-mapping>
功能:在用戶訪問的時候,通過攔截請求,統一編碼,判斷是否登陸;
例:
<filter>
<filter-name>name</filter-name>
<filter-class></filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
4,<servlet></servlet>和<servlet-mapping></servlet-mapping>
看到servlet應該就很眼熟,所以就不多做贅述了;
例:
<servlet-name>DemoServlet</servlet-name>
<servlet-class>com.test.DemoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DemoServlet</servlet-name>
<url-pattern>/demoServlet</url-pattern>
</servlet-mapping>
<servlet-class>com.test.DemoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>DemoServlet</servlet-name>
<url-pattern>/demoServlet</url-pattern>
</servlet-mapping>
四:web.xml其他配置
一下節點在配置過程中,都比較簡單,就不一一介紹了;
<description/>
<dispaly-name</dispaly-name>
<icon>
<distributable/>
<session-config/>
<mime-mapping />
<error-page>
<jsp-config/>
<welcome-file-list/>
<
resource-ref></resource-ref>
... ...
五:總結
<!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*)>
千里之行始於足下,看別人做100遍不如自己親自寫1遍。