<?xml version="1.0" encoding="UTF-8"?>  

  
<web-app id="space" 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">  
  
<!-- 声明web-app标签 属性说明:   
  
    id:对象id  
  
    version:该web-app的版本。  
  
    xmlns:j2ee的标准。  
  
    xmlns:xsi:实例化有关。  
  
    xsi:schemaLocation:文档的概要,或者说文档的格式约束。类似于模板,文档内的内容必
 
须遵循web-app_2_4.xsd的描述和规则  
  
    通过上边web-app的配置:我们在该xml文档中声明一个web-app标签,该标签采取j2ee的标准
 
。所以web-app内的信息将被当做web应用程序的配置信息。  
  
 -->  
  
    <context-param>  
  
       <param-name>contextConfigLocation</param-name>  
  
       <param-value>/WEB-INF/applicationContext-*.xml</param-value>  
  
    </context-param>  
  
    <!--context-param上下文参数标签:定义程序运行过程中用到的变量和变量的值。也就是初
 
始化应用程序参数  
  
       context-param的子标签:  
  
       param-name:上下文参数的名称。(这些名称是将j2ee web应用固定的参数名称。不是谁
 
随便写的。)  
  
                  contextConfigLocation 参数:用来定义上下文配置文件的路径。被指定的文
 
件都会在应用启动的时候被解析。  
  
       param-value:上下文参数的值。  
  
                  /WEB-INF/applicationContext-*.xml 表示WEB-INF目录下的名称
 
以"application-*"开头的xml文件都将作为本web应用的配置文件。系统会解析所有的xml文件。  
  
    通过上边context-param的配置:我们指定了本web应用的应用配置文件。文件的位置在WEB-
 
INF下,名称以"application-*"开头的所有xml文件。  
  
    -->  
  
  
    <session-config>   
  
       <session-timeout>30</session-timeout>   
  
    </session-config>  
  
    <!-- session-config配置的是本web应用的会话失效时间(单位是分钟),在该时间内,如果
 
用户没有任何操作,本次会话将失效。   
  
       功过上边session-config的设置:我们规定了,本web应用的会话失效时间是30分钟。  
  
    -->  
  
    <!--filter过滤器的作用:配置指定格式的文件都要进过什么样式的处理,或者配置指定后
 
缀的文件都要经过怎样的过滤。  
  
       字符编码过滤器:由于会用到大量的中文字符,所以对应用的文件要进行中文编码的设置
 
。第一步是在页面的设置,但是动态的返回值和信息可能也有中文,这样就要要求对动态的数据
 
也进行中文编码过滤,于是就要用到中文编码过滤器。  
  
       过滤器的使用是先声明name,然后通过mapping映射到指定后缀的文件。  
  
    -->  
  
    <filter>  
  
       <filter-name>encodingFilter</filter-name>  
  
       <!-- 声明过滤器的名称 -->  
  
       <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-
 
class>  
  
       <!-- 过滤器的类 也可以自己写过滤器,但是spring已经给你写好了,直接用就可以了。 
 
 
  
           spring的字符编码顾虑是可以动态配置的,所以在使用的时候需要初始化参数,这些
 
参数是通过init-param注入的。  
  
           init-param的使用:  
  
              子标签param-name:指定初始化参数的名称  
  
              子标签param-value:指定初始化参数的值。  
  
        -->  
  
       <init-param>  
  
           <param-name>encoding</param-name>  
  
           <!-- 初始化参数名称:encoding 指定编码格式 -->  
  
           <param-value>UTF-8</param-value>  
  
           <!-- encoding字符编码的值:国际字符编码的标准编码格式,大概有UTF-
 
8,gb3212,GBK等等 -->  
  
       </init-param>  
  
       <init-param>  
  
           <param-name>forceEncoding</param-name>  
  
           <!-- 初始化参数名臣:forceEncoding 强行转换 -->  
  
           <param-value>true</param-value>  
  
           <!-- forceEncoding到值:true或者false true采用强行转化字符编码,false不采
 
用强行转换字符编码 -->  
  
       </init-param>  
  
    </filter>  
  
       <!-- 通过上边filter的配置:我们声明了一个过滤器,该过滤器的实例化对象是spring
 
的字符编码过滤器,所以这个过滤器是  
  
       一个字符编码过滤器,通过对该过滤器的初始化参数encoding的配置,我们将这个过滤器
 
的字符编码配置成UTF-8, 通过对参数forceEcoding的配置,采取使用强行字符转化-->  
  
        
  
    <!--filter-mapping的作用:将一个已经存在的过滤器映射到指定格式的文件上。也就是指
 
定什么后缀的文件将采用这个过滤器。   
  
       子标签说明:  
  
       filter-name:指定过滤器的名称。过滤器名称的声明要求在filter-mapping之前  
  
       filter-pattern:过滤器的映射路径。该路径内的指定格式的文件爱你或者所有文件将采
 
用filter-name指定的过滤器。  
  
              partter常用的格式:/dwr/*表示一个包内所有的文件,*.jsp,*.do表示以jsp和
 
do结尾的文件。  
  
    -->   
  
    <filter-mapping>  
  
       <filter-name>encodingFilter</filter-name>  
  
       <!-- 过滤器名称 -->  
  
       <url-pattern>/dwr/*</url-pattern>  
  
       <!-- 过滤器映射的文件路径:dwr下的所有文件。 -->  
  
    </filter-mapping>  
  
    <filter-mapping>  
  
       <filter-name>encodingFilter</filter-name>  
  
       <url-pattern>*.jsp</url-pattern>  
  
       <!-- 过滤器映射的文件路径:所有jsp文件。 -->  
  
    </filter-mapping>  
  
    <filter-mapping>  
  
       <filter-name>encodingFilter</filter-name>  
  
       <url-pattern>*.do</url-pattern>  
  
       <!-- 过滤器映射的文件路径:所有.do文件。 -->  
  
    </filter-mapping>  
  
    <!-- 通过三个filter-mapping的配置:我们指定了之前配置的字符编码过滤器的映射文件时
 
: dwr包内所有的文件,所有的jsp文件和所有的.do文件。 
 
     -->  
 
 
 
 
<!-- 监听器的配置:监听器配置完以后,应用系统在启动的时候就会开启这些监听器。  
  
    监听器的理解:监听器好比一个卫兵,卫兵一直站在那里等待长官的命令,当卫兵收到长官
 
的命令以后,立即执行  
  
    之前已经协定好的事件。  
  
    java中的监听器,监听应用的事件,具体有什么事件,以及对每个事件的处理方式都在类中
 
定义了,  
  
    所以,监听器不需要参数、不具有返回值只是一味的等待指令然后执行既定的名利,也就是
 
执行相应的操作,  
  
    也就是说,监听器一旦写完,只是拿过来用就可以,没有方法,没有get set,没有参数,只
 
使用其他什么都没有。  
  
    还是不大理解 以后再了解了解  
  
 -->  
  
    <listener>  
  
       <listener-
 
class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  
       <!--使用spring的上下文加载监听器:可能的作用是:在web应用加载系统应用资源文件
 
,也就是加载那些xml文件的时候,  
  
       会建立一些监听器。譬如监听xml文件内容的变化  
  
         -->  
  
    </listener>  
  
    <listener>  
  
        <listener-
 
class>org.springframework.web.context.request.RequestContextListener</listener-class> 
 
 
  
       <!-- 实例化一个spring的关于请求的上下文的监听器 -->  
  
    </listener>  
  
    <listener>  
  
       <listener-
 
class>org.hdht.commonweb.listener.MyServletContextListener</listener-class>  
  
       <!-- 实例化一个自定义的监听器。监听器主要代码  
  
public class MyServletContextListener implements ServletContextListener {  
  
    public void contextDestroyed(ServletContextEvent arg0) {  
  
    }  
  
    public void contextInitialized(ServletContextEvent arg0) {  
  
       try {  
  
           // 初始化日志处理器  
  
           AppLogService.init();//初始化系统用到的变量,主要是静态变量。  
  
           System.out.println("INFO:数据初始化完毕");//djflag  
  
             
  
       } catch (Exception e) {  
  
           AppLogService.error("系统初始化错误!",e);  
  
       }  
  
    }  
  
}  
  
这是一个继承了服务器上下文监听器接口的监听器,这个监听器主要有两个必须实现的方法:  
  
    contextInitialized:当web服务器启动时执行的方法,该方法主要用来初始化系统的变量,
 
多半是静态变量。   
  
    contextDestroyed:当web服务器关闭的时候调用的方法,主要是销毁一些内存变量,释放资
 
源。  
  
        -->  
  
    </listener>  
  
<filter>  
  
       <filter-name>headerFilter</filter-name>  
  
       <!-- 声明一个过滤器 名字叫:headerFilter 顾名思义是用来过滤文件头部的 -->  
  
       <filter-class>org.hdht.commonweb.filter.HeaderFilter</filter-class>  
  
       <!-- 过滤器的实例化类是自定义的过滤器:关键代码:  
  
public class HeaderFilter implements Filter {  
  
    public void init(FilterConfig arg0) throws ServletException {  
  
    }  
  
    public void doFilter(ServletRequest req, ServletResponse res,  
  
           FilterChain chain) throws IOException, ServletException {  
  
       HttpServletRequest request = (HttpServletRequest) req;  
  
       HttpServletResponse response = (HttpServletResponse) res;  
  
       response.setHeader("Pragma", "no-cache");  
  
       response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");  
  
       response.setHeader("Expires", "-1");  
  
       chain.doFilter(req, res);  
  
    }  
  
    public void destroy() {  
  
  }  
  
}        
  
    通过上边filter的配置:我们配置了一个自定义的过滤器,过滤器的名字是headerFilter,
 
实例化类似自定义的类:HearderFilter,该过滤器的主要作用是对设置页面不采用缓存。  
  
 -->  
  
    </filter>  
  
    <filter-mapping>  
  
       <filter-name>headerFilter</filter-name>  
  
       <!-- 过滤器映射名称 -->  
  
       <url-pattern>*.jsp</url-pattern>  
  
       <!-- 过滤器映射文件:所有的jsp文件。 -->  
  
    </filter-mapping>  
  
    <!-- 通过上边的ffilter-mapping的配置: 我们将过滤器headerFilter映射到所有的jsp文
 
件。  
  
这样所有的jsp文件的头部就都会设置不适用缓存处理页面。这个过滤器主要用于经常和数据库有
 
交互的页面中。-->  
  
  
    <!-- 权限过滤器:判断用户是否登录的过滤器 -->  
  
    <filter>  
  
      <filter-name>uimfilter</filter-name>  
  
      <!--声明一个过滤器的:uimfilter 主要的作用是检测用户是否登录 -->  
  
      <filter-class>org.hdht.commonweb.filter.PermissionFilter</filter-class>  
  
      <!-- uimfilter过滤器的实例化类 是自定义的过滤器类  
  
        java代码主要是对session进行判断,判断表示用户登录的session变量是否存在,如果
 
不存在就重定向到登陆界面。  
  
      通过上边filter的配置:我们定义了一个名字叫做uimfilter的权限过滤器,这个过滤器的
 
实例化类是自定义的java类,  
  
      主要对用户是否登录做出判断,并根据判断结果作相应的处理:继续操作还是重定向登录  
  
       -->  
  
    </filter>  
  
    <filter-mapping>  
  
      <filter-name>uimfilter</filter-name>  
  
      <url-pattern>*.jsp</url-pattern>  
  
      <!-- 将权限过滤器映射给所有的jsp文件 -->  
  
    </filter-mapping>  
  
    <filter-mapping>  
  
      <filter-name>uimfilter</filter-name>  
  
      <url-pattern>/dwr/*</url-pattern>  
  
      <!-- 将权限过滤器映射给dwr包内的所有文件 -->  
  
    </filter-mapping>  
  
    <filter-mapping>  
  
      <filter-name>uimfilter</filter-name>  
  
      <url-pattern>*.do</url-pattern>  
  
      <!-- 将权限过滤器映射给所有的.do文件 -->  
  
    </filter-mapping>  
  
    <!-- 通过上边filter-mapping的配置:我们将uimfilter过滤器映射给所有的jsp文件,dwr
 
包内的所有文件爱你以及.do文件  
  
    这样,当用户进入到jsp文件或者调用dwr或者有action的操作的时候,系统就会对用户是否
 
登录进行判断。  
  
     -->  
  
  
  
    <!-- 防止出现 Session关闭异常的 过滤器  -->  
  
  
    <filter>  
  
       <filter-name>hibernateFilter</filter-name>  
  
       <filter-
 
class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-
 
class>  
  
    </filter>  
  
    <filter-mapping>  
  
       <filter-name>hibernateFilter</filter-name>  
  
       <url-pattern>/*</url-pattern>  
  
    </filter-mapping> 
 
<!-- Strtus2.0 控制过滤器  -->  
  
    <filter>  
  
       <filter-name>struts</filter-name>  
  
       <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  
  
    </filter>  
  
    <filter-mapping>  
  
       <filter-name>struts</filter-name>  
  
       <url-pattern>/business/*</url-pattern>  
  
       <url-pattern>/common/*</url-pattern>  
  
       <url-pattern>/system/*</url-pattern>  
  
       <url-pattern>/login.jsp</url-pattern>  
  
       <url-pattern>/loginback.jsp</url-pattern>  
  
       <url-pattern>/main.jsp</url-pattern>  
  
       <url-pattern>/index.jsp</url-pattern>  
  
       <url-pattern>*.do</url-pattern>  
  
    </filter-mapping>