0

我想做的是相对简单
在我的webapp中有这两个servlet:(
我会写一些伪代码)

servlet A 代码: :

    HttpSession sess = req.getSession();

    String str = (String) sess.getAttribute("log");

    if(str == null)
    {
     // send html page with a form
     // to enter password and name 
     // data will be proceessed by servlet B
    }
    else
    {
     // send html page with a form
     // to enter only a name 
     //data will be proceessed by servlet B
    }

小服务程序 B 代码: :

       HttpSession sess = req.getSession();

       String logged =  (String) sess.getAttribute("log");

       if(logged == null)
       {

        //check if password correct

            if(correct)
            {
             sess.setAttribute("log","ok");

             // print name 
             // and tell the user
             // that next time password
             // will not be requested
            }
            else
            {
             // print error message
            }

       }
       else
       {
       // print name
       }

出于某种原因,在用户正确填写密码和名称之后第二次调用 servlet A 时 str,因此打印了if部分。

编辑:

我发现如果用户在输入密码并被重定向到 servletB 后自己写入 servletA 的 url 一切正常,但是当用户使用 servletA 创建的链接返回上一页时它不起作用:A HREF =\"http://localhost:8080/Blog/ServletA\" 返回

再次,任何建议为什么会发生这种情况?

4

1 回答 1

0

我相信它没有进入你的if(correct)街区,即correct条件没有得到满足。更正那里的条件并确保它logsession. 一旦将属性设置到会话中,它就会一直存在,直到会话过期或您将其删除。

于 2012-10-14T17:00:17.210 回答