Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取JSP servlet会话时,返回空值_Java_Jsp_Session_Servlets - Fatal编程技术网

Java 获取JSP servlet会话时,返回空值

Java 获取JSP servlet会话时,返回空值,java,jsp,session,servlets,Java,Jsp,Session,Servlets,我将jsp/servlet用于一个基本的ajax应用程序。我正在使用servlet设置会话,但返回了null。我的代码片段如下所示: Servlet: protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name=null; String sessionStrSe

我将jsp/servlet用于一个基本的ajax应用程序。我正在使用servlet设置会话,但返回了null。我的代码片段如下所示:

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");
    }


}

ajax工作得很好,只是会话检索似乎是一个问题。在第一个if()中设置数据后,我就可以提取数据。但当我做另一个post请求时,它返回为null。我需要另一个HttpSession吗?非常感谢任何帮助,我是一个PHP开发人员,不是JSP,所以对我来说非常新

您真的需要单独的ifs吗

getSession(true)
返回当前会话,如果没有当前会话,则创建新会话


请参见第二个
if
块中的文档

,它与第一个
if
块是互斥的,您需要调用
request.getSession(false)
,以获取由先前帖子填充的会话。将会话视为一个可以跨请求共享的全局区域。哈哈!我想这一定是我没有尝试过的.getsession方法的唯一组合!如果有效,干杯将尝试将您发布为答案@getSession(true)还使用现有会话,如果exists@Lukasz-同意。会话的检索可以在if块之前移动。可能是正确的。我没有意识到getSession()是这样工作的!