监听器和过滤器笔记

8.监听器
=================================================
注册监听器两种方法:
1.@WebListener注解
@WebListener
public class ListenerClass implements ListenerInterface{}

2.web.xml中使用一个listener元素。
<listener>
    <listener-class>fully-qualified listener class</listener-class>
</listener>


Servlet Context监听器 -- 实现接口ServletContextListener
1.ServletContextListener:对ServletContext的初始化和解构做出响应。
    void contextInitialized(ServletContextEvent event); --->主要重写的方法
    void contextDestroyed(ServletContextEvent event);
2.ServletContextAttributeListener:
    void attributeAdded(ServletContextAttributeEvent scae);
    void attributeRemoved(ServletContextAttributeEvent scae);
    void attributeReplaced(ServletContextAttributeEvent scae);
    
Session监听器 -- 实现接口HttpSessionListener
1.HttpSessionListener
2.HttpSessionActivationListener
3.HttpSessionAttributeListener
4.HttpSessionBindingListender

用户计数器实例

ServletRequest监听器 -- 实现接口ServletRequestListener
1.ServletRequestListener
2.ServletRequestAttributeListener
3.AsyncListener

用户访问时间

9.过滤器
=================================================
过滤器是指拦截请求,并对传给被请求资源的ServletRequest或ServletResponse进行处理的一个对象。

Filter API
包括:Filter,FilterConfig和FilterChain。
过滤器必须实现javax.servlet.Filter接口。3个方法:
void init(FilterConfig filterConfig);
void doFilter(ServletRequest req, ServletResponse resp, FilterChain fc);
void destory()

FilterConfig接口的方法:
public String getFilterName();
public ServletContext getServletContext();
public String getInitParameter(String name);
public Enumeration<String> getInitParameterNames();

FilterChain接口的方法:
public void doFilter(ServletRequest request, ServletResponse response);

配置过滤器方法:
1.@WebFilter注解
2.web.xml中使用filter和filter-mapping元素
	<filter>
		<filter-name>xxx</filter-name>
		<filter-class>yyy</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>xxx</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

范例1:日志过滤器
范例2:图片保护过滤器
范例3:下载计数过滤器

过滤器的顺序:按web.xml中写的顺序调用。


10.应用程序设计
配置JNDI Datasource步骤:
1.拷贝JDBC驱动mysql-connector-java-5.1.44-bin.jar到tomcat/lib/目录下。
2.Context配置:META-INF/context.xml
<Context>
  <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
               maxTotal="100" maxIdle="30" maxWaitMillis="10000"
               username="root" password="root" driverClassName="com.mysql.jdbc.Driver"
               url="jdbc:mysql://192.168.15.45:3307/a_spider_test"/>
</Context>
3.web.xml配置:WEB-INF/web.xml
  <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/TestDB</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>
4.编写代码:
Context context = new InitialContext();
DataSource dataSource = (DataSource) context.lookup("java:comp/env/jdbc/TestDB");
Connection con = dataSource.getConnection();

  

猜你喜欢

转载自www.cnblogs.com/zhangkaipc/p/11778394.html