java 在Jetty9中使用HttpSessionListener和Filter
java在Jetty9中使用HttpSessionListener和Filter
HttpSessionListener
当Session创建或销毁的时候被调用
示例代码:
classMyHttpSessionListenerimplementsHttpSessionListener{
@Override
publicvoidsessionCreated(HttpSessionEventhttpSessionEvent){
System.out.println("sessionCreated");
}
@Override
publicvoidsessionDestroyed(HttpSessionEventhttpSessionEvent){
System.out.println("sessionDestroyed");
}
}
注册方法:
ServletContextHandler.getSessionHandler().addEventListener(newMyHttpSessionListener());
注意: 若整个请求中都没有用到Session,则不会生成它,也不会调用Listener
Filter
当客户端请求数据时被调用
示例代码:
classMyFilterimplementsFilter{
publicMyFilter(){
}
@Override
publicvoidinit(FilterConfigfilterConfig)throwsServletException{
}
@Override
publicvoiddoFilter(ServletRequestservletRequest,ServletResponseservletResponse,FilterChainfilterChain)throwsIOException,ServletException{
if(servletRequestinstanceofHttpServletRequest){
HttpServletRequesthttpRequest=(HttpServletRequest)servletRequest;
System.out.println(httpRequest.getServletPath());
}
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
publicvoiddestroy(){
}
}
注册方法:
ServletContextHandler.addFilter(newFilterHolder(newMyFilter()),"/*",EnumSet.allOf(DispatcherType.class));
注意:若请求的路径错误,则不会触发Filter
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!