1

我正在尝试使用jsp设计一个简单的登录系统。在登录页面中,用户输入他的用户名和密码,在验证时执行为


if username and password combination exists, then
{

     HttpSession session = request.getSession(false);

     if (session == null) {
          // Session not created yet. So we do it now.
           session = request.getSession();
           session.setAttribute("id",idvariable );
           response.sendRedirect("home.jsp");
          // I redirect them to their profile home pages
    } 

    else {
        // Session is already created.
         response.sendRedirect("home.jsp");
       // So i again redirect them to their home page
    }
 }

现在在“home.jsp”中,我如何检查会话是否已经创建?


*我需要检查会话是否已经在配置文件的每个页面上启动。所以我想创建某种函数,我可以在每个jsp页面的顶部调用它*


我应该怎么办 ??

4

3 回答 3

1

不要在Jsp. 您应该设计一个filter来验证用户。

编辑:

看一下教程 - 信息(servlet-filters)

于 2012-06-28T12:27:20.650 回答
1

首先创建一个这样的类.. 设置用户 bean 属性此示例为简单起见假设一个用户

public class Users implements Serializable {
    private String user;

 public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }
}

然后像这样登录检查

   String userName = request.getRequest().getParameter("txtid");
   String password = request.getRequest().getParameter("txtPassword");

Vector params = new Vector();

        params.add(null);//return result from procedure
        params.add(Name);
        params.add(password);


 Users mainUser = new Users ();
 Vector tempResults = callingDaoProcedure.executeGetPasswordogin(params);//finds the password in DB

if (!tempResults.isEmpty()) {

                    mainUser = (MainUsers) tempResults.get(0);
 if (mainUser.getPassword().trim().equals(password.trim())) {

    HttpSession session = request.getSession(false);


         if (request.getSession().getAttribute("userLogin") == null) {
              // Session not created yet. So we do it now.
               session = request.getSession();
               requestgetRequest().setAttribute("status", "NO_ERRORS");
               request.getSession().setAttribute("userLogin", mainUser);
               response.sendRedirect("home.jsp");
              // I redirect them to their profile home pages
        } 

        else {
            // Session is already created.
             response.sendRedirect("home.jsp");
           // So i again redirect them to their home page
        }
}
else
{
              request.getRequest().setAttribute("status", "WRONG_PASSWORD");
              System.out.println("wrong password");
}


}

上面的代码不是没有错误的,但是由于您提供了缺少的代码,因此这与我遇到的情况一样接近,您可以像这样在每个 jsp 上访问此变量

<input type="hidden" name="user" id="user" value="${sessionScope['userLogin'].user}">

我希望它有所帮助,最重要的是你从中学到了一些东西

于 2012-06-28T12:40:29.667 回答
1

使用Prelude将 jsp 添加到所有 jsps 开头的 JSP。并检查会话是否已经存在。

参考:

于 2012-06-28T12:51:30.953 回答