用的是struts框架
过滤器部分代码:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
HttpServletRequest httpreq = (HttpServletRequest)request;
HttpSession session = httpreq.getSession();
String url = httpreq.getRequestURI();
url = url.substring(url.lastIndexOf("/") + 1, url.length());
String exclude = "login.do,exit.do";
if(exclude.indexOf(url) == -1)
{
String id = (String)session.getAttribute("id");
if(id == null || "".equals(id))
{
HttpServletResponse httprep = (HttpServletResponse)response;
httprep.sendRedirect("/chaoshi.jsp");
} else
{
chain.doFilter(request, response);
}
} else
{
chain.doFilter(request, response);
}
}
web.xml部分:
<filter>
<filter-name>sessionTimeout</filter-name>
<filter-class>com.filter.SessionTimeout</filter-class>
</filter>
<filter-mapping>
<filter-name>sessionTimeout</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>登录login.do部分代码:
HttpSession session = request.getSession(TRUE);
session.setMaxInactiveInterval(30*60);
session.setAttribute("id", id);奇怪的现象:
第一次登录立刻会出现超时,以后再登录就正常了,被这个问题折腾很长时间了,期盼高人指点
过滤器部分代码:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException
{
HttpServletRequest httpreq = (HttpServletRequest)request;
HttpSession session = httpreq.getSession();
String url = httpreq.getRequestURI();
url = url.substring(url.lastIndexOf("/") + 1, url.length());
String exclude = "login.do,exit.do";
if(exclude.indexOf(url) == -1)
{
String id = (String)session.getAttribute("id");
if(id == null || "".equals(id))
{
HttpServletResponse httprep = (HttpServletResponse)response;
httprep.sendRedirect("/chaoshi.jsp");
} else
{
chain.doFilter(request, response);
}
} else
{
chain.doFilter(request, response);
}
}
web.xml部分:
<filter>
<filter-name>sessionTimeout</filter-name>
<filter-class>com.filter.SessionTimeout</filter-class>
</filter>
<filter-mapping>
<filter-name>sessionTimeout</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>登录login.do部分代码:
HttpSession session = request.getSession(TRUE);
session.setMaxInactiveInterval(30*60);
session.setAttribute("id", id);奇怪的现象:
第一次登录立刻会出现超时,以后再登录就正常了,被这个问题折腾很长时间了,期盼高人指点
<filter-mapping>
<filter-name>sessionTimeout </filter-name>
<url-pattern>*.do </url-pattern>
</filter-mapping>
是不是死循环了,第一次。
第一次String url = httpreq.getRequestURI();
不可能有值吧!
你仔细看看
希望对你有帮助
^_*
session.setAttribute("id", id);
当然得到的id是null,直接跑到chaoshi.jsp
那应当怎样设置呢
还望多指点一二
/admin/*
过滤所有admin 目录下的文件
path='/admin/a.do'
那么a.do 就会过滤的
不设置也可以啊,默认就是30分钟啊