发帖  主题  评论  推荐  标签 用户 查搜   用户 密码 自动 注册  
 
面向对象 设计模式 领域驱动设计 企业架构 框架 开发教程 微服务 CQRS 扩展性 并发编程 事件溯源 分布式 SOA

JavaEE 7教程

Servlet的过滤器和事件监听

上页

  Servlet Filters

  一个Servlet过滤器可用于更新请求和响应的有效载荷和来往servlet的头信息。要认识到,过滤器不产生 响应 - 他们只修改或改编的请求和响应。认证, 记录,数据压缩和加密是一些典型的过滤器案例。 你可以指定一个URL模式 servlet或一组servlet进行过滤 。使用@WebFilter注解的过滤器:

@WebFilter("/*")
public class LoggingFilter implements javax.servlet.Filter {
public void doFilter(HttpServletRequest request,
HttpServletResponse response) {
//. . .
}
}

使用@WebInitParam或在web.xml中定义:

<filter>
<filter-name>LoggingFilter</filter-name>
<filter-class>com.jdon.LoggingFilter</filter-class>
</filter>
. . .
<filter-mapping>
<filter-name>LoggingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

Event Listeners

  事件侦听器提供ServletContext,HttpSession和ServletRequest三个scope生命周期范围内的回调事件,监听者是实现特定接口, 提供这些对象的状态变化事件通知。每个类被@ WebListener注释 ,也在web.xml中定义,或者通过ServletContext.addListener方法声明,

@WebListener
public class MyContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
ServletContext context = sce.getServletContext();
//. . .
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
//. . .
}
}

ServletContextAttributeListener是用来监听上下文属性的变化:

public class MyServletContextAttributeListener
implements ServletContextAttributeListener {
@Override
public void attributeAdded(ServletContextAttributeEvent event) {
//. . . event.getName();
//. . . event.getValue();
}
@Override
public void attributeRemoved(ServletContextAttributeEvent event) {
//. . .
}
@Override
public void attributeReplaced(ServletContextAttributeEvent event) {
//. . .
}
}

HttpSessionListener用来监听来自session的事件。

@WebListener
public class MySessionListener implements HttpSessionListener {
@Override
public void sessionCreated(HttpSessionEvent hse) {
HttpSession session = hse.getSession();
//. . .
}
@Override
public void sessionDestroyed(HttpSessionEvent hse) {
//. . .
}
}

HttpSessionActivationListener用来监听Session被钝化到磁盘或从磁盘恢复passivated or activated::

public class MyHttpSessionActivationListener
implements HttpSessionActivationListener {
@Override
public void sessionWillPassivate(HttpSessionEvent hse) {
// ... hse.getSession();
}

public void sessionDidActivate(HttpSessionEvent hse) {
// ...
}
}

HttpSessionAttributeListener用来监听Session的属性变化:

public class MyHttpSessionAttributeListener
implements HttpSessionAttributeListener {
@Override
public void attributeAdded(HttpSessionBindingEvent event) {
HttpSession session = event.getSession();
//. . . event.getName();
//. . . event.getValue();
}
@Override
public void attributeRemoved(HttpSessionBindingEvent event) {
//. . .
}
@Override
public void attributeReplaced(HttpSessionBindingEvent event) {
//. . .
}
}

HttpSessionBindingListener是用来监听当一个对象绑定或解绑到Session时的事件:

public class MyHttpSessionBindingListener
implements HttpSessionBindingListener {
@Override
public void valueBound(HttpSessionBindingEvent event) {
HttpSession session = event.getSession();
//. . . event.getName();
//. . . event.getValue();
}
@Override
public void valueUnbound(HttpSessionBindingEvent event) {
//. . .
}
}

ServletRequestListener用来监听来自请求或资源的事件。

@WebListener
public class MyRequestListener implements ServletRequestListener {
@Override
public void requestDestroyed(ServletRequestEvent sre) {

ServletRequest request = sre.getServletRequest();
//. . .
}
@Override
public void requestInitialized(ServletRequestEvent sre) {
//. . .
}
}

ServletRequestAttributeListener用来监听请求属性的变化。

AsyncListener,监听completed,timed out, or an error.这样的异步事件。

下页

基于容器的用户安全认证授权系统

Spring security安全机制深入使用

JavaEE教程

Java学习心得

解道移动版 | 关注解道 | 联系解道 | 关于解道 | 广告联系 | 网站地图 | 设为首页

沪ICP证12033263 如有意见请与我们联系 Powered by JdonFramework
返回顶部