Servlet上下文监听(application):
需要实现ServletContextListener和ServletContextAttributeListener接口
*private ServletContext context = null;
*public void contextInitialized(ServletContextEvent sce)
*public void attributeAdded(ServletContextAttributeEvent scae)
*public void attributeRemoved(ServletContextAttributeEvent scae)
*public void attributeReplaced(ServletContextAttributeEvent scae)
*public void contextDestroyed(ServletContextEvent sce)
监听Http会话(session):
接口们:
HtppSessionActivationListener监听Http会话active、passivate情况
HttpSessionBindingListener监听Http会话中对象的绑定信息
HttpSessionAttribute监听Http会话中属性的设置要求
对请求的监听(request):
ServletRequestListener, ServletRequestAttributeListener
Filter:
EncodingFilter
public class EncodingFilter implements Filter
{
protected FilterConfig filterConfig;
private String targetEncoding = "gb2312";
/**
*初始化过滤器,和一般的Servlet一样,它也可以获得初始参数。
*/
public void init(FilterConfig config) throws ServletException {
this.filterConfig = config;
this.targetEncoding = config.getInitParameter("encoding");
}
/**
*进行过滤处理,这个方法最重要,所有过滤处理的代码都在此实现。
*/
public void doFilter(ServletRequest srequest, ServletResponse sresponse, FilterChain chain)
throws IOException, ServletException {
System.out.println("使用以下方法对请求进行编码:encoding="+targetEncoding);
HttpServletRequest request = (HttpServletRequest)srequest;
request.setCharacterEncoding(targetEncoding);
// 把处理权发送到下一个
chain.doFilter(srequest,sresponse);
}
public void setFilterConfig(final FilterConfig filterConfig)
{
this.filterConfig=filterConfig;
}
//销毁过滤器
public void destroy()
{
this.filterConfig=null;
}
}