检查servlet或jsp中的会话

时间:2015-07-18 14:34:28

标签: java jsp session servlets

假设我有一个处理登录的servlet。登录成功后,用户将为该用户创建会话。然后重定向到主页。

假设主页上有“查看全部”链接。此链接调用servlet,viewall.html处理来自数据库的所有数据,然后重定向到将显示来自servlet的数据的jsp页面(viewall.jsp)。

从servlet viewall.html到jsp viewall.jsp,我希望代码看起来像这样:

if (session attribute user is null) {
    // redirect to the login page
} else {
    // if in the servlet, retrieve the data from the database
    // if in the jsp, display the data
}

检查servlet或jsp上是否存在会话的更好方法是什么?注意我知道过滤器,假设项目不能使用过滤器。

3 个答案:

答案 0 :(得分:2)

使用过滤器的servlet是一样的。一般方法是:

    处理登录的servlet中的
    • 创建新会话

      Session old = request.getSession(false); // first invalidate old if it exists
      if (old != null) {
          session.invalidate();
      }
      Session session = request.getSession(true); // next create one
      
    • 将用户ID作为会话的属性

      session.setAttribute("USERID", userId);
      
  • 然后在你想知道你是否有注册用户的元素(servlet的过滤器)中:

    Session = request.getSession(false);
    if ((session == null) or (session.getAttribute("USERID") == null)) {
        response.sendRedirect(homeUrl);
        return; // no need to process further (if in a filter no need to go down the chain)
    }
    
  • 在servlet中控制后你有一个登录用户,转发到jsp

    request.getRequestDispacher(“/ path / to / displayer.jsp”)。forward(request,response);

这就是......

答案 1 :(得分:0)

如果您想在创建前进行检查,请执行以下操作:

HttpSession session = request.getSession(false);
 if (session == null) {
  // Not created .
  session = request.getSession();
  } else {
// Already created.
  }

如果您在创建后不关心检查,那么您也可以这样做:

HttpSession session = request.getSession();
 if (session.isNew()) {
  // newly  created.
 } else {
// Already created.
  }

答案 2 :(得分:0)

<% if(session.getAttribute("sessionname")==null)

{
response.sendRedirect("index.jsp");
else
{
String activeUser=session.getAttribute("sessionname").toString();
}

我希望它可以帮到你