过滤器
只要在浏览器中输入正确的url地址,不管此次请求是否合理,Tomcat服务器在接收到请求后就会直接调用对应的资源完成请求的处理。有些场景, 需要对请求进行相关处理, 处理完成后, 在访问请求的资源
过滤器的编写步骤
- 创建一个类,实现过滤器接口(Filter)
- 实现接口中的方法,编写自己的代码
- 在web.xml中配置过滤器或通过注解配置
使用注解方式
@WebServlet("/*")
public class Myfilter implements Filter {
@Override//初始化过滤器调用
public void init(FilterConfig filterConfig) throws ServletException {
Filter.super.init(filterConfig);
}
@Override//请求经过过滤器调用,核心方法对请求做处理
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("开始对请求进行判断处理!");
filterChain.doFilter(servletRequest, servletResponse);//放行
}
@Override//销毁过滤器时调用
public void destroy() {
Filter.super.destroy();
}
}
没有注解,要配置web.xml
<!--配置过滤器-->
<filter>
<filter-name>CharacterFilter</filter-name>
<!--
配置过滤器所在的全路径,由Tomcat在启动的时候,通过放射创建该过滤器对象
-->
<filter-class>com.bjsxt.filter.CharacterFilter</filter-class>
</filter>
<!--配置过滤器的拦截路径,也就是对哪些请求进行拦截-->
<filter-mapping>
<filter-name>CharacterFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
监听器(Listener)
给三大域对象添加监听,监听三大域对象的创建及销毁,监听到他们有动态的时候,执行对应的方法。这就是监听器。
作用:监听三大域对象的创建、销毁及数据的变更。
特点:
- 监听方法由tomcat根据监听结果来调用执行
- 监听方法中的逻辑代码由我们根据需要编
监听器的使用步骤:
创建一个类,实现监听器接口(Listener)
实现里面的方法
在web.xml中配置监听器
监听器接口:
4. ServletRequestListenter 监听request对象的创建销毁
5. ServletRequestAttributeListener 监听request域中数据的变更
6. HttpSessionListener 监听Session对象的创建销毁
7. HttpSessionAttributeListener 监听Session对象中数据的变更
8. ServletContextListener 监听ServletContext对象的创建销毁
9. ServletContextAttributeListener 监听ServletContext对象中数据的变更
在类中继承上述接口实现方法即可
使用注解 @WebListener
不使用注解,则要配置web.xml
<!--
配置监听器,在服务器启动的时候就会创建监听器对象,监听器生效,一旦符合监听要求,
tomcat底层会通过反射调用监听器中的方法完成处理
-->
<listener>
<listener-class>com.bjsxt.listener.MyListener</listener-class>
</listener>