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();
原文:https://www.cnblogs.com/zhangkaipc/p/11778394.html