2013-03-19 137 views
0

我正在使用jsp/servlets進行基本的ajax應用程序。我正在設置一個servlet的會話,但我得到一個空返回。我的代碼片段如下:獲取JSP servlet會話,返回空值

的Servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response)   throws ServletException, IOException { 

    String name=null; 
    String sessionStrSet = null; 


    if(request.getParameter("session").toString().equals("setSession")){ 

     name = request.getParameter("user"); 

     HttpSession session = request.getSession(true); 
     session.setAttribute("sessionPw", name); 
     sessionStrSet = session.getAttribute("sessionPw").toString(); 

     response.setContentType("text/plain"); 
     response.setCharacterEncoding("UTF-8"); 
     response.getWriter().write(sessionStrSet + " " + "data write"); 

    } 

    if(request.getParameter("session").toString().equals("getSession")){ 
     //how do i retrieve the session data here? 
     response.setContentType("text/plain"); 
     response.setCharacterEncoding("UTF-8"); 
     response.getWriter().write(sessionStrSet + "get session"); 
    } 


} 

阿賈克斯工作正常,這只是這似乎是一個問題的會議上檢索。一旦在第一個if()中設置了數據,我就可以取出數據。但是當我做另一個帖子請求時,它會返回爲空。我需要另一個HttpSession嗎?非常感謝任何幫助,我是一個PHP開發人員而不是JSP,所以對我來說這是非常新的!

+0

在第二'if'塊,這是第一個'if'塊相互排斥的,您需要調用'request.getSession(假)'來獲得,這是該會議由早期的POST填充。將會話視爲可跨請求共享的全局區域。 – jalynn2 2013-03-19 16:19:38

+0

Ahaaaa!我認爲必須是.getsession方法的唯一組合,我沒有嘗試!歡呼聲將嘗試發佈你作爲答案,如果工作! – ChrisSherwood 2013-03-19 16:28:53

+0

@ jalynn2 request.getSession(true)也使用現有會話(如果存在的話) – 2013-03-19 16:29:43

回答