在进程请求之前运行特定的方法



我写了下面的类:

public class GreetChecker implements java.io.Serializable {
    public GreetChecker() {
    }
    public static boolean greetSessionChecker(HttpSession session, String attribute) {
        Enumeration<String> attr = session.getAttributeNames();
        while(attr.hasMoreElements())
        {
            String elem = attr.nextElement();
            if (elem.equals(attribute))
                return true;
        }
        return false;
    }
}

,我希望每个servlet在处理传入请求之前调用该方法。我必须在任何servlet中显式调用该方法,还是有合适的配置?

使用ServletRequestListener:

import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class ServletRequestListenerDemo  implements ServletRequestListener
{
          public void requestDestroyed(ServletRequestEvent arg0)
          {
            System.out.print("The Request object destroyed at  :"+new java.util.Date());
          }
          public void requestInitialized(ServletRequestEvent req)
          {

             HttpServletRequest request = (HttpServletRequest) req;
             HttpSession session = request.getSession(false);
             yourmethod(session);
          }
}

对于更灵活的解决方案,您可能希望使用@WebFilter注释查看Servlet过滤器。

要获取会话,请参见:ServletRequest中的会话变量

相关内容

最新更新