如何在会话过期后重定向jsp页面?

时间:2016-09-30 08:30:04

标签: java jsp session

<%
   if(session == null) {
       System.out.println("Expire");
       response.sendRedirect("/login.jsp");
    }else{
       System.out.println("Not Expire");
    }
 %>

 <%
   HttpSession sess = request.getSession(false);
   String email = sess.getAttribute("email").toString();
   Connection conn = Database.getConnection();
   Statement st = conn.createStatement();
   String sql = "select * from login where email = '" + email + "' ";
   ResultSet rs = st.executeQuery(sql);
 %>

我在会话过期时尝试重定向login.jsp页面。 但我在&#34; String email = sesss.getAttribute(&#34; email&#34;)。toString();&#34;。

中出现了错误。

所以任何人都可以帮我解决这个错误。

基本上我想在会话过期时重定向到login.jsp页面。

3 个答案:

答案 0 :(得分:0)

首先。您正在混合使用JSP和Java代码。你应该分开它。 将Java代码保存在控制器中。

您可以使用:

if(request.getSession(false) == null) {
    response.sendRedirect("/login.jsp");
}

“...如果create为false且请求没有有效的HttpSession,则此方法返回null。”

答案 1 :(得分:0)

例如,创建身份验证过滤器

@WebServlet(
    name = "AuthenticationFilter",
    description = "Authentication Filter",
    urlPatterns = "/AuthenticationFilter"

) @WebFilter( “*。JSP”) 公共类AuthenticationFilter实现Filter {

private ServletContext context;

@Override
public void init(FilterConfig filterConfig) throws ServletException {
    this.context = filterConfig.getServletContext();
    this.context.log("AuthenticationFilter initialized");
}

@Override
public void destroy() {
    //close any resources here
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

    HttpServletRequest req = (HttpServletRequest) request;
    HttpServletResponse res = (HttpServletResponse) response;

    String uri = req.getRequestURI();
    this.context.log("Requested Resource::" + uri);

    HttpSession session = req.getSession(false);
    Object user_o = req.getSession().getAttribute("username");
    this.context.log("Authentication Filter, user_name::" + user_o);

    if (user_o == null && !(uri.endsWith("index.jsp") || uri.endsWith("LoginUser"))) {
        this.context.log("None authenticatied request, session:: " + session);
        res.sendRedirect("index.jsp");

    } else {
        this.context.log("Authenticatied request, session:: " + session);
        chain.doFilter(request, response);
    }

}

答案 2 :(得分:0)

我试过这个,它对我来说很好。

this->

我只是把return语句,它将重定向到&#34; login.jsp&#34;当会话到期时。