2013-03-19 81 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

回答