JSP:关于在约束中登录的系统中的Session

时间:2014-07-07 12:22:51

标签: java jsp session java-ee

当我做一个项目需要登录系统时,我发现jsp会自动创建会话,所以我添加<%@ page session =“false”%>进入所有页面以禁用他们创建会话的能力,因为我只希望一个servlet能够创建会话。

然而,当谈到使用bean时,我发现,由于<%@ page session =“false”%>我不能使用会话范围的bean,我想问一下可能的是什么解决这个僵局的解决方案。

非常感谢

1 个答案:

答案 0 :(得分:1)

如果要从servlet设置会话属性(登录后),那么当您从中移动到另一个JSP时,会话将保留,您不需要编写

<%@ page session="false" %>

在那个JSP上。您在会话中可以使用您设置的所有属性。

这是一个测试代码: index页面显示在servlet中设置的'name'属性 - 当你按下'next JSP'按钮时,MaintainSession会将你带到另一个新的JSP,它再次显示'name'属性。

没有一个JSP需要&lt;%@ page session =“false”%&gt;。

的index.jsp

    <body>
        <form action="MaintainSession" method="post">
            <input type="submit" value="Set Session Attribs"/>
        </form>
        <h1>Name : ${sessionScope.name}</h1>
        <h1>Name : <%=session.getAttribute("name")%></h1>
        <form action="Next.jsp" method="post">
            <input type="submit" value="Next JSP"/>
        </form>
    </body> 

Next.jsp

    <body>
        <h1>Hello World!</h1>
        <h1>Name : ${sessionScope.name}</h1>
        <h1>Name : <%=session.getAttribute("name")%></h1>
    </body>

MaintainSession.java

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
       HttpSession session = request.getSession(true);
        session.setAttribute("name", "MyName");
        request.getRequestDispatcher("index.jsp").forward(request, response);
    }

流程:

index.jsp ----Press Set Session Attribs---> MaintainSession servlet ----> index.jsp ---- press Next JSP ----> Next.jsp