servlets - 当每个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;
}
}
解决方案
感谢你的信息。
我尝试将设置会话 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;
}
抱歉,我还是个新手,尝试了很多谷歌寻求帮助,但仍然不知道 :(
推荐阅读
- machine-learning - 优化具有长情节的深度 Q 网络
- java - 如何检查输入字符串是否是现有对象的名称?
- php - 如何在 Laravel 5.8 中正确翻译激活邮件?
- html5-canvas - 如何使用 Chart.js 为每个数据集设置不同的图例数据样式?
- python - 如何停止使用记事本打开 .whl 文件?
- c# - EDMX 文件和数据库中的更改
- javascript - 验证具有相同名称[]和不同行类别的输入
- google-apps-script - 我需要一个谷歌脚本在谷歌表格中运行以删除空白单元格右侧的单元格
- r - 更改堆叠条形图中的颜色
- c# - webservice WCF 上的 maxRequestLength 已超出