Tomcat是一个WEB容器,因为Tomcat是J2EE标准的产品,因此需要Tomcat支持Servlet。因此可以认为tomcat是一个Servlet容器。 区别:
Servlet是一个Java类,初始化时调用init方法,销毁时调用destroy方法,实例化和销毁是由Servlet容器完成。Servlet在Servlet容器中运行,Servlet容器负责调度Servlet的生命周期Servlet过滤器是Java中非常有用的一种技术,其有用之处在于减少代码量。过滤器是用户请求和处理程序之间的一层处理程序。可以对用户请求和响应的结果进行处理,利用该特征可以实现字符编码处理、权限控制、访问控制等。
写过滤器 implements Filter public class CharacterFilter implements Filter{ public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { } public void init(FilterConfig config) throws ServletException { } }Init方法会在服务器启动的时候调用。 Destroy方法会在服务器关闭的时候调用 doFilter会在访问对应的页面的页面时调用。和url-pattern相关
配置配置文件 web.xml <filter> <filter-name>CharacterFilter</filter-name> <filter-class>com.xxx.CharacterFilter</filter-class> </filter> <filter-mapping> <filter-name>CharacterFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>事件监听器用于监听一些重要事情的发生,监听器对象可以在事件发生前和事件发生后做出相应的处理。
Servlet上下文监听,表现为Servlet容器创建和销毁触发事件。
public class MyServletContextListener implements ServletContextListener { public void contextDestroyed(ServletContextEvent arg0) { System.out.println("--------destroy-------------"); } public void contextInitialized(ServletContextEvent arg0) { System.out.println("--------init-------------"); } }