• web应用之监听器


    package com.log.service;
    
    import java.util.Enumeration;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    
    import com.util.UtilPrint;
    
    /**
     * 对应慕课网 3-1,http://www.imooc.com/video/5658,
     *  ServletContextListener的主要用途: 
     * 1 定时器
     * 2 获取全局属性对象(设置全局属性对象)
     * 3 获取web.xml中的初始化参数
     * @author Wei
     * @time 2016年10月4日 下午8:38:37
     */
    public class WylContextListener implements ServletContextListener {
    
    	public WylContextListener() {
    		System.out.println("com.log.service.WylContextListener()实例化,");
    	}
    
    	@Override
    	public void contextInitialized(ServletContextEvent sce) {
    		System.out.println("com.log.service.WylContextListener.contextInitialized()...,");
    		ServletContext sc = sce.getServletContext();
    		/**
    		 * 设置全局变量,然后再整个应用的生命周期里都可以获取到
    		 */
    		sc.setAttribute("theGlobalPara", "我是全局的属性对象,");
    		Enumeration<String> initparaNames = sc.getInitParameterNames();
    		if (initparaNames.hasMoreElements()) {
    			String name = initparaNames.nextElement();
    			/**
    			 * 获取web.xml中的初始化参数,
    			 * <context-param> 
    			 * 		<param-name>ctxName</param-name>
    			 * 		<param-value>我是ctx的值</param-value> 
    			 * </context-param>
    			 */
    			String initValue = sc.getInitParameter(name);
    			UtilPrint.printWithSeparatorAndClass("------name:" + name + ",initValue:" + initValue,
    					WylContextListener.class);
    		} else {
    			UtilPrint.printWithSeparatorAndClass("com.log.service.WylContextListener.contextInitialized()...,没有获取到初始化参数", WylContextListener.class);
    		}
    	}
    	@Override
    	public void contextDestroyed(ServletContextEvent sce) {
    		// TODO Auto-generated method stub
    		System.out.println("com.log.service.WylContextListener.contextDestroyed()...,");
    	}
    
    }
    

      web.xml:

      1 <?xml version="1.0" encoding="UTF-8"?>
      2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      3     xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
      4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
      5     id="WebApp_ID" version="2.5">
      6 
      7 
      8     <!-- 配置 Struts2 的 Filter -->
      9     <welcome-file-list>
     10 
     11         <!-- <welcome-file>index.jsp</welcome-file> 欢迎页改为MyTag.jsp -->
     12         <welcome-file>MyTag.jsp</welcome-file>
     13     </welcome-file-list>
     14 
     15     <listener>
     16         <listener-class>com.log.service.WylSessionAttrbuteLister</listener-class>
     17     </listener>
     18 
     19     <listener>
     20         <listener-class>com.log.service.WylSessionListener</listener-class>
     21     </listener>
     22     <!-- ServletRequestListener -->
     23     <listener>
     24         <listener-class>com.log.service.WylServletRequestListener</listener-class>
     25     </listener>
     26 
     27     <listener>
     28         <listener-class>com.log.service.WylContextListener</listener-class>
     29     </listener>
     30     
     31     <servlet>
     32         <servlet-name>freemarker</servlet-name>
     33         <servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
     34         <!--下面的配置freemarke的ftl文件的位置 -->
     35         <init-param>
     36             <param-name>TemplatePath</param-name>
     37             <param-value>/</param-value>
     38         </init-param>
     39         <!-- 是否和服务器(tommcat)一起启动。0为不。1为是 -->
     40         <load-on-startup>1</load-on-startup>
     41     </servlet>
     42 
     43     <servlet-mapping>
     44         <servlet-name>freemarker</servlet-name>
     45         <url-pattern>*.ftl</url-pattern>
     46     </servlet-mapping>
     47 
     48 
     49     <servlet>
     50         <!-- define a JspSupportServlet Object -->
     51         <servlet-name>JspSupportServlet</servlet-name>
     52         <servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
     53         <!-- setting JspSupportServlet auto start -->
     54         <load-on-startup>1</load-on-startup>
     55     </servlet>
     56 
     57 
     58     <!-- <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
     59         </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> 
     60         </filter-mapping> -->
     61     <filter>
     62         <filter-name>struts2</filter-name>
     63         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
     64     </filter>
     65 
     66     <filter-mapping>
     67         <filter-name>struts2</filter-name>
     68         <url-pattern>/*</url-pattern>
     69     </filter-mapping>
     70 
     71     <!-- 我的自定义过滤器 -->
     72 
     73 
     74     <filter>
     75         <filter-name>wylFiler3</filter-name>
     76         <filter-class>com.test.javaAPI.servlet.MyFilter3</filter-class>
     77     </filter>
     78 
     79     <filter-mapping>
     80         <filter-name>wylFiler3</filter-name>
     81         <url-pattern>/*</url-pattern>
     82     </filter-mapping>
     83 
     84     <filter>
     85         <filter-name>wylFiler4</filter-name>
     86         <filter-class>com.test.javaAPI.servlet.MyFilterXX</filter-class>
     87     </filter>
     88 
     89     <filter-mapping>
     90         <filter-name>wylFiler4</filter-name>
     91         <url-pattern>/*</url-pattern>
     92     </filter-mapping>
     93 
     94 
     95     <filter>
     96         <filter-name>wylFiler1</filter-name>
     97         <filter-class>com.test.javaAPI.servlet.MyFilter1</filter-class>
     98     </filter>
     99 
    100     <filter-mapping>
    101         <filter-name>wylFiler1</filter-name>
    102         <url-pattern>/*</url-pattern>
    103     </filter-mapping>
    104 
    105     <filter>
    106         <filter-name>wylFiler2</filter-name>
    107         <filter-class>com.test.javaAPI.servlet.MyFilter2</filter-class>
    108     </filter>
    109 
    110     <filter-mapping>
    111         <filter-name>wylFiler2</filter-name>
    112         <url-pattern>/*</url-pattern>
    113     </filter-mapping>
    114 
    115 
    116     <!-- 测试servlet用的,20161004 -->
    117     <servlet>
    118         <servlet-name>testMy</servlet-name>
    119         <servlet-class>com.test.javaAPI.servlet.MyServlet</servlet-class>
    120 
    121     </servlet>
    122 
    123     <servlet-mapping>
    124         <servlet-name>testMy</servlet-name>
    125         <url-pattern>*.xxx</url-pattern>
    126     </servlet-mapping>
    127 
    128 
    129     <!-- 测试servlet用的,20161004 -->
    130     <servlet>
    131         <servlet-name>testMy2</servlet-name>
    132         <servlet-class>com.test.javaAPI.servlet.MyServlet2</servlet-class>
    133         <!-- 设置 web容器已启动就实例化这个servlet,servlet一旦实例化就会调用初始化方法init(),而且生命周期里只会实例化一次 -->
    134         <load-on-startup>1</load-on-startup>
    135     </servlet>
    136 
    137     <servlet-mapping>
    138         <servlet-name>testMy2</servlet-name>
    139         <url-pattern>*.yyy</url-pattern>
    140     </servlet-mapping>
    141     <!-- 可以通过通过监听器来获取到,当然了,需要实现ServletContextListener接口 ,
    142     见:com.log.service.WylContextListener-->
    143     <context-param>
    144         <param-name>ctxName</param-name>
    145         <param-value>我是ctx的值</param-value>
    146     </context-param>
    147 
    148 </web-app>

    如下图,已经获取到web.xml中的<context-param>标签中设置的值了,

  • 相关阅读:
    php实现求链表中倒数第k个节点
    在python正在使用mysql
    1002. 写这个号码 (20)(数学啊 ZJU_PAT)
    Lua 环境结构 --Linux
    Java程序猿JavaScript学习笔记(4——关闭/getter/setter)
    C/C++数据对齐汇总
    多线程
    11gRAC CHM 管理
    hdu 4059 The Boss on Mars(纳入和排除)
    模板方法模式分析、图表和基本代码
  • 原文地址:https://www.cnblogs.com/Sunnor/p/5931289.html
Copyright © 2020-2023  润新知