java过滤器能够对目标资源的请求和响应进行截取
实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理
通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理
1.建立过滤器
创立包 在包里 new 一个人filter
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
// place your code here
//过滤器
request.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
//类型转换要先判定
if(request instanceof HttpServletRequest) {
HttpServletRequest req=(HttpServletRequest)request;
String requestURI=req.getRequestURI();
System.out.println(requestURI);
}
// pass the request along the filter chain
chain.doFilter(request, response);
}
监听器
Java Web开发中的监听器(listener)就是application、session、request三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件,如下所示:
①ServletContextListener:对Servlet上下文的创建和销毁进行监听。
②ServletContextAttributeListener:监听Servlet上下文属性的添加、删除和替换。
③HttpSessionListener:对Session的创建和销毁进行监听。
补充:session的销毁有两种情况:1). session超时(可以在web.xml中通过/标签配置超时时间);2). 通过调用session对象的invalidate()方法使session失效。
④HttpSessionAttributeListener:对Session对象中属性的添加、删除和替换进行监听。
⑤ServletRequestListener:对请求对象的初始化和销毁进行监听。
⑥ServletRequestAttributeListener:对请求对象属性的添加、删除和替换进行监听。
监听器建立:在包里new 一个listener
public void requestInitialized(ServletRequestEvent arg0) {
// TODO Auto-generated method stub
arg0.getServletRequest().setAttribute("test", "这个是在Servlet创建的时候加入的");
}