博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
web.xml中监听器配置
阅读量:4360 次
发布时间:2019-06-07

本文共 4211 字,大约阅读时间需要 14 分钟。

<!-- 监听器的配置:监听器配置完以后,应用系统在启动的时候就会开启这些监听器。

    监听器的理解:监听器好比一个卫兵,卫兵一直站在那里等待长官的命令,当卫兵收到长官的命令以后,立即执行
    之前已经协定好的事件。
    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>

转载于:https://www.cnblogs.com/renpei/p/5688153.html

你可能感兴趣的文章
IOS开发札记
查看>>
1.2.2 OSI参考模型 上
查看>>
centos服务器设置代理上网的方法
查看>>
Spring入门教程:通过MyEclipse开发第一个Spring项目
查看>>
【转】你可能不知道的Shell
查看>>
廖雪峰Java1-2程序基础-1基本结构
查看>>
golang下的grpc
查看>>
1. 自动化运维系列之Cobbler自动装机
查看>>
ASP.NET MVC Model绑定(二)
查看>>
一步一步写算法(之hash表)
查看>>
漫谈并发编程(一) - 并发简单介绍
查看>>
JDBC连接MySQL数据库及演示样例
查看>>
Beta 冲刺(1/7)
查看>>
修改 Vultr 登录密码
查看>>
CSS学习
查看>>
Centos 安装lnmp完整版
查看>>
【转】Eclipse和PyDev搭建完美Python开发环境(Ubuntu篇)
查看>>
redis安装和配置
查看>>
2016424王启元 Exp5 msf基础应用
查看>>
Differences between page and segment
查看>>