2012-12-20 60 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