public class SessionFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain filterchain) throws IOException, ServletException {
System.out.println("我进来SessionFilterSessionFilter了!!!!!!!!!!!!");
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
HttpSession session = request.getSession();
ServletContext application = session.getServletContext();
PriUser loginuser =(PriUser)session.getAttribute("UserToken");
if(loginuser == null) {
response.sendRedirect("/logoffServlet");//返回登陆
return ;
}else//判断sessionID是不存在LIST,不存在执行session.invalidate();
{
System.out.println("我进来了!!!!!!!!!!!!");
List list2 =(List)application.getAttribute(loginuser.getAccount());
for(int i=0;i<list2.size();i++) {
String sessionId=(String)list2.get(i);
if(!session.getId().equals(sessionId)) {
session.invalidate();
response.getWriter().print("<script language='javascript'>alert('此用户在另一地点登录');window.location='/logoffServlet';</script>");//返回登陆
return;
}
}
}
filterchain.doFilter(req, resp);
return ;
}
public void destroy() {
}
public void init(FilterConfig filterConfig) throws ServletException {
}
这是我写的一个类。 请问怎么配置才能使页面中提交Action之前先执行我这个类然后再提交!
正常的过滤器配置就能实现你想要的流程。
名称
类路径
参数名称
参数值
名称
*.do
名称
.
不过这个过滤太多了,你可以根据你的需求尽量明确点。
比如这个/work/*
范围比上面句小多了。