首页 > 解决方案 > 当每个servle结束时如何保持服务器和客户端之间的会话?

问题描述

我已经开发了 servlet 服务器和 javaclient,想知道如何保持会话保持连接。

现在,我的 javaclient 将调用我的 servlet,然后服务器会将数据返回给客户端。客户端处理完数据后,它将再次为其他进程调用相同的 servlet。但服务器无法检索现有会话。所以我无法验证之前访问过的客户。有什么想法吗?这里是我的环境:服务器:apache + jrun4 客户端:java 客户端

它在 reqType = Login 时返回空指针,我想保留相同的会话以进行进一步处理

private void getReqParameter( HttpServletRequest request, HttpServletResponse response, RandomAccessFile logFile) {

String sSessionID="", sReqType="";

String sAddress1="", sAddress2="", sAddress3="", sID="", sPwd="", sSigID="";

sReqType = (String)request.getParameter("reqType");

HttpSession sess = request.getSession(false);
if (sReqType.equals("HandShake")){
    sess = request.getSession(true);
    sSessionID = sess.getId();
    out.println(sSessionID);
    return;
}

sID = (String)request.getParameter("ID");
sPwd = (Sring)request.getParameter("Pwd");
sSigID = (Sring)request.getParameter("SigID");

if (sReqType.equals("Login")){
    sess = request.getSession(false);  
    sSessionID = sess.getId();
    return;
}     

sAddress1 = (String)request.getParameter("A1");
sAddress2 = (String)request.getParameter("A2");
sAddress3 = (String)request.getParameter("A3");

if (sReqType.equals("UpdProfile")){
    sess = request.getSession(false);   
    sSessionID = sess.getId();
    return;
}     

}

标签: servletssession-cookiesjava-client

解决方案


感谢你的信息。

我尝试将设置会话 ID 添加到 cookie 并将其传递给客户端。但我不知道如何取回客户端返回 cookie 或将会话 ID 定义为客户端返回。

HttpSession sess = request.getSession(false);
if (sReqType.equals("HandShake")){
    sess = request.getSession(true);
    sSessionID = sess.getId();
    out.println(sSessionID);

Cookie cookie = new Cookie("JSESSIONID", sSessionID);
cookie.setPath(request.getContextPath());
response.addCookie(cookie);

   return;
}

抱歉,我还是个新手,尝试了很多谷歌寻求帮助,但仍然不知道 :(


推荐阅读