0

我的问题是:我想在我的 JSP 页面上使用会话,而不使用 servlet(例如 php)

问题是:如何做到这一点?我读到会话是隐含的,就像 jsp 中的请求一样,但我实际上并不知道如何使用它。

我有一个主页,它在 url 上传递了一些变量(如 index.jsp?id=1)。

谢谢您的帮助。

4

3 回答 3

3

您可以使用JSTL <c:set><c:remove>管理会话属性。

以下内容有效地 a session.setAttribute("foo", "bar")

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

以下内容有效地 a session.removeAttribute("foo")

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

当然,您可以使用通常的 EL 方式访问属性,如下所示session.getAttribute("foo")

${foo}

与具体问题无关,您应该反对 servlet。这不是一个好习惯。JSTL 没有提供使业务逻辑变得轻而易举的一切,这将迫使您回退到遗留的scriptlet。我希望这只是无知。仔细阅读我们的 servlets wiki 页面,了解如何轻松创建和使用它:https ://stackoverflow.com/tags/servlets/info这个答案可能有点启发性:如何避免 JSP 文件中的 Java 代码?

于 2012-12-20T12:06:31.287 回答
2

假设你有两个 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");

    %>

于 2012-12-21T06:36:30.127 回答
1

你必须在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")
于 2012-12-20T11:18:58.457 回答