簡體   English   中英

JSP會話未使用Servlet

[英]JSP session not using servlets

我的問題是:我想在我的JSP頁面上使用會話,而不使用servlet(例如php)

問題是:該怎么做? 我讀到該會話是隱式的,就像jsp中的request一樣,但是我實際上並不知道如何使用它。

我有一個主頁,他在URL上傳遞了一些變量(例如index.jsp?id = 1)。

謝謝您的幫助。

您可以使用JSTL <c:set><c:remove>來管理會話屬性。

以下有效地執行了session.setAttribute("foo", "bar")

<c:set var="foo" value="bar" scope="session" />

並且以下有效地執行了session.removeAttribute("foo")

<c:remove var="foo" scope="session" />

當然,您可以使用通常的EL訪問屬性的方式,以下顯示session.getAttribute("foo")

${foo}

具體問題無關 ,您應該對Servlet進行厭惡。 這不是一個好習慣。 JSTL並沒有提供使業務邏輯變得輕而易舉的所有功能,這將迫使您退回到傳統的scriptlet 我希望這只是無知。 仔細閱讀我們的servlet Wiki頁面,以了解如何輕松創建和使用它: https : //stackoverflow.com/tags/servlets/info這個答案也可能會有所啟發: 如何避免JSP文件中的Java代碼?

假設你有兩個jsp

  1. index.jsp =獲取index.jsp中的參數並將其添加到會話(隱式對象)

    <%
    String empId = request.getParameter("id");
    session.setAttribute("empId", empId);
    response.sendRedirect("homePage.jsp");

    %>

  2. 現在位於homePage.jsp =編寫代碼以檢索先前使用鍵empId添加的值

    <%

    String employeId = (String)session.getAttribute("empId");

    %>

您必須在jsp代碼中使用它

       <%

     HttpSession sess = request.getSession();

     if (sess==null)
     {
         RequestDispatcher dispatcher = request.getRequestDispatcher("/login.jsp");
         dispatcher.forward(request, response);                        
     }

      %>

您可以獲取會話及其屬性

對於index.jsp?id = 1,您可以使用

         request.getParameter("id")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM