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
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!