2012-12-20 57 views
0

我的问题是:我想用我的JSP页面的会话,无需使用servlet(如PHP为例)JSP会话不使用servlet

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

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

谢谢你的帮助。

回答

3

你可以使用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不提供使业务逻辑轻而易举的所有事情,这将迫使您退回到传统scriptlets。我希望这只是无知。请仔细阅读我们的servlet的wiki页面,了解它如何可以很容易地创建和使用:https://stackoverflow.com/tags/servlets/info另外这个答案可能有点启发:How to avoid Java code in JSP files?

+0

我很欣赏你的评论,但主要问题是我正在处理一些不是由我创建的东西:这意味着我发现了这个“混乱”,并且我认为我没有足够的时间用它来更新它正确的代码。当我阅读这些链接时,你确实是对的,所以非常感谢你。 – abierto

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") 
+0

问题增加了价值,我不重定向到其他JSP,我处理我的index.jsp页面中的所有内容。我试过在'HttpSession sess = request.getSession();'之前使用但是当我提交一些东西,并且页面重新加载时,我得到一个错误,因为有多个sess变量的声明。 – abierto

+0

如果它已经存在,请在创建之前检查会话对象,然后不要创建,否则只需创建它 –

+0

如何检查它? – abierto

2

假设你有两个JSP

  1. 的index.jsp =获取参数在index.jsp和所述值添加到会议(隐式对象)

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

    %>

  2. Now in homePage。JSP =写代码来检索先前与主要EMPID

    <%

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

    %>

+0

感谢您的回答,但我只想在单个JSP页面上工作。 – abierto