簡體   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