1. 程式人生 > >web.xml配置

web.xml配置

pattern 標記 處理 lib 它的 如果 ror ica 過程


<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<filter>
<filter-name>openSessionInViewFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
</filter>
《OpenSessionFilterView 針對Hibernate延遲加載》


<filter-mapping>
<filter-name>openSessionInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>

1、此監聽器主要用於解決java.beans.Introspector導致的內存泄漏的問題

2、此監聽器應該配置在web.xml中與Spring相關監聽器中的第一個位置(也要在ContextLoaderListener的前面)
3、JDK中的java.beans.Introspector類的用途是發現Java類是否符合JavaBean規範如果有的框架或程序用到了Introspector類,那麽就會啟用一個系統級別的緩存,此緩存會
  存放一些曾加載並分析過的JavaBean的引用。當Web服務器關閉時,由於此緩存中存放著這些JavaBean的引用,所以垃圾回收器無法回收Web容器中的JavaBean對象,最後導致


內存變大。而org.springframework.web.util.IntrospectorCleanupListener就是專門用來處理Introspector內存泄漏問題的輔助類。IntrospectorCleanupListener會在
Web服務器停止時清理Introspector緩存,使那些Javabean能被垃圾回收器正確回收。Spring自身不會出現這種問題,因為Spring在加載並分析完一個類之後會馬上刷新
JavaBeans Introspector緩存,這就保證Spring中不會出現這種內存泄漏的問題。但有些程序和框架在使用了JavaBeans Introspector之後,沒有進行清理工作(如    Quartz,Struts),最後導致內存泄漏




<!-- spring context -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:core-context.xml</param-value>
</context-param>
core-context.xml spring配置 在xml配置了這個標簽後,spring可以自動去掃描base-pack下面或者子包下面的java文件,如果掃描到有@Component @[email protected]等這些註解的類,則把這些類註冊為bean

註意:如果配置了<context:component-scan>那麽<context:annotation-config/>標簽就可以不用再xml中配置了,因為前者包含了後者。另外<context:component-scan>還提供了兩個子標簽

1. <context:include-filter>

2. <context:exclude-filter>

classpath:core-context.xml == 表示會在class文件夾下找


<context-param>
<param-name>typePackageName</param-name>
<param-value>com.ylink.cim.common.type</param-value>
</context-param>

<context-param>
<param-name>statePackageName</param-name>
<param-value>com.ylink.cim.common.state</param-value>
</context-param>

<context-param>
<param-name>showSingleSummary</param-name>
<param-value>false</param-value>
</context-param>

<context-param>
<param-name>htmlNavigator</param-name>
<param-value>flink.web.tag.ButtonHtmlNavigator</param-value>
</context-param>

<listener>
<description>listener for user session management</description>
<listener-class>com.ylink.cim.admin.view.CPSHttpSessionListener</listener-class>
</listener>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
ContextLoaderListener監聽器的作用就是啟動Web容器時,自動裝配ApplicationContext的配置信息。因為它實現了ServletContextListener這個接口,在web.xml配置這個監聽器,啟動容器時,就會默認執行它實現的方法。至於ApplicationContext.xml這個配置文件部署在哪,如何配置多個xml文件,書上都沒怎麽詳細說明。現在的方法就是查看它的API文檔。在ContextLoaderListener中關聯了ContextLoader這個類,所以整個加載配置過程由ContextLoader來完成。看看它的API說明。
<!-- log4j servlet -->
<servlet>
<servlet-name>log4jLoader</servlet-name>
<servlet-class>flink.web.Log4jServlet</servlet-class>
<init-param>
<param-name>log4j</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>

《1)load-on-startup元素標記容器是否在啟動的時候就加載這個servlet(實例化並調用其init()方法)。

2)它的值必須是一個整數,表示servlet應該被載入的順序

2)當值為0或者大於0時,表示容器在應用啟動時就加載並初始化這個servlet;

3)當值小於0或者沒有指定時,則表示容器在該servlet被選擇時才會去加載。

4)正數的值越小,該servlet的優先級越高,應用啟動時就越先加載。

5)當值相同時,容器就會自己選擇順序來加載。



<!-- action servlet -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>
/WEB-INF/struts-config.xml,
/WEB-INF/struts-config-user.xml,
/WEB-INF/struts-config-admin.xml,
/WEB-INF/struts-config-custom.xml,
/WEB-INF/struts-config-invest.xml,
/WEB-INF/struts-config-busioper.xml
</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

<!-- 此應用的啟動順序必須在SystemContextServlet之後 -->
<servlet>
<servlet-name>AppServerServlet</servlet-name>
<servlet-class>com.ylink.cim.appserver.server.AppServerServlet</servlet-class>
<init-param>
<param-name>start</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<!-- system context servlet -->
<servlet>
<servlet-name>SystemContextServlet</servlet-name>
<servlet-class>flink.web.SystemContextServlet</servlet-class>
<init-param>
<param-name>serverType</param-name>
<param-value>admin</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

<!-- system context servlet -->
<servlet>
<servlet-name>timerServer</servlet-name>
<servlet-class>com.ylink.common.timer.TimerScheduleServer</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>


<servlet>
<servlet-name>verifyCode</servlet-name>
<servlet-class>flink.VerifyCodeServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>verifyCode</servlet-name>
<url-pattern>/servlet/verifyCode</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>dispatchBranch</servlet-name>
<servlet-class>flink.web.DispatchBranchServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatchBranch</servlet-name>
<url-pattern>/sz</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dispatchBranch</servlet-name>
<url-pattern>/sz/</url-pattern>
</servlet-mapping>
<!-- <servlet-mapping> -->
<!-- <servlet-name>dispatchBranch</servlet-name> -->
<!-- <url-pattern>/dg</url-pattern> -->
<!-- </servlet-mapping> -->
<!-- <servlet-mapping> -->
<!-- <servlet-name>dispatchBranch</servlet-name> -->
<!-- <url-pattern>/dg/</url-pattern> -->
<!-- </servlet-mapping> -->
<!-- <servlet-mapping> -->
<!-- <servlet-name>dispatchBranch</servlet-name> -->
<!-- <url-pattern>/gz</url-pattern> -->
<!-- </servlet-mapping> -->
<!-- <servlet-mapping> -->
<!-- <servlet-name>dispatchBranch</servlet-name> -->
<!-- <url-pattern>/gz/</url-pattern> -->
<!-- </servlet-mapping> -->


<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>

<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter>
<filter-name>privilege</filter-name>
<filter-class>com.ylink.cim.admin.view.PrivilegeFilter</filter-class>
</filter>
<!-- <filter> -->
<!-- <filter-name>userLogFilter</filter-name> -->
<!-- <filter-class>com.ylink.cim.admin.view.UserLogFilter</filter-class> -->
<!-- </filter> -->

<filter-mapping>
<filter-name>privilege</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>

<filter-mapping>
<filter-name>privilege</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<!-- <filter-mapping> -->
<!-- <filter-name>userLogFilter</filter-name> -->
<!-- <url-pattern>/*</url-pattern> -->
<!-- </filter-mapping> -->
<jsp-config>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/flink.tld</taglib-uri>
<taglib-location>/WEB-INF/flink.tld</taglib-location>
</taglib>
</jsp-config>

<welcome-file-list>
<welcome-file>navi.jsp</welcome-file>
</welcome-file-list>
<error-page>
<error-code>404</error-code>
<location>/login.do?action=index</location>
</error-page>

<session-config>
<session-timeout>30</session-timeout>
</session-config>

<30分鐘>
</web-app>


web.xml配置