繁体   English   中英

JSP:关于具有约束登录状态的系统中的会话

[英]JSP: About Session in a system with login in constraint

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

但是,在使用bean时,我发现由于<%@ page session =“ false”%>而无法在会话范围内使用bean,我想问一下解决此死锁的可能解决方案是什么。

非常感谢

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

<%@ page session="false" %>

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

这是一个测试代码:索引页面显示了servlet中设置的“名称”属性-当您按下“下一个JSP”按钮时,也会通过MaintenanceSession进入另一个新的JSP,它再次显示“名称”属性。

JSP都不需要<%@页面session =“ false”%>。

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>

MaintenanceSession.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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM