我在登陆的一个login.java里面写了个session.setAttribute("AObject");
然后在一些.jsp页面中调用了这个AObject,但过一段时间AObject就为空,在所有调用这个对象的页面都报空指针异常,必须手动重新登陆才可以。怎么设置这个session的存活期呀!让session过期后能自动跳转到登陆页面login.jsp.
我在tomcat配置文件web.xml中有
<session-config>
<session-timeout>30</session-timeout>
</session-config>
但还是会报空指针错!
然后在一些.jsp页面中调用了这个AObject,但过一段时间AObject就为空,在所有调用这个对象的页面都报空指针异常,必须手动重新登陆才可以。怎么设置这个session的存活期呀!让session过期后能自动跳转到登陆页面login.jsp.
我在tomcat配置文件web.xml中有
<session-config>
<session-timeout>30</session-timeout>
</session-config>
但还是会报空指针错!
if ( session.getAttribute("AObject") == null || session.getAttribute("AObject").equals("") ){
out.print("<script>window.location='login.jsp';</script>");
}
import javax.servlet.Filter;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.FilterChain;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletResponse;public class RightFilter
implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
} public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession(true); //从session里取的用户名信息
String username = (String) session.getAttribute("username");
//判断如果没有取到用户信息,就跳转到登陆页面
if (username == null || "".equals(username)) {
//跳转到登陆页面
res.sendRedirect("http://"+req.getHeader("Host")+"/login.jsp");
}
else {
//已经登陆,继续此次请求
chain.doFilter(request,response);
}
} public void destroy() {
}
}
下面配置这个过滤器
然后在web.xml里配置那些JSP文件需要登陆权限验证:1.如果是某个具体的JSP文件(如a.jsp)需要登陆验证
<web-app>
...
<filter>
<filter-name>right</filter-name>
<filter-class>com.taihuatalk.taihua.common.common.RightFilter</filter-class>
</filter> <filter-mapping>
<filter-name>right</filter-name>
<url-pattern>/a.jsp</url-pattern>
</filter-mapping>
...
</web-app>2.如果是某一个目录(如a/目录)整个目录下的文件都需要登陆验证:
<web-app>
...
<filter>
<filter-name>right</filter-name>
<filter-class>com.taihuatalk.taihua.common.common.RightFilter</filter-class>
</filter> <filter-mapping>
<filter-name>right</filter-name>
<url-pattern>/a/*</url-pattern>
</filter-mapping>
...
</web-app>
这是以前论坛一位师兄弄得过滤器的例子.楼主可以参考一下!
<controller processorClass="com.action.aaaRequestProcessor" /><message-resources parameter="application" />
<global-forwards>
<!-- Demonstrates using index.jsp to forward -->
<forward name="timeout" path="/pages/login.do" />
</global-forwards>
aaaRequestProcessor:
String aObject= (String) request.getSession().getAttribute("AObject");
if (aObject== null) {
return mapping.findForward("timeout");
}
Sunny319(努力学习java中.)
太感谢了!就是,写了个过滤器就解决了!
session.setTimeOut()什么的,括号里面是时间大概是毫秒为单位!!