客户端请求web中间件session验证问题

1.使用HttpClient发起登录请求:

GET /sq_xa_apartment/api/mobile/exter.jhtml?serviceCode=0001&username=fangdong&password=E10ADC3949BA59ABBE56E057F20F883E HTTP/1.1

Accept    text/html, application/xhtml+xml, */*
Accept-Encoding    gzip, deflate
Accept-Language    zh-CN
Connection    Keep-Alive
Host    192.168.39.175:8086

User-Agent    Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)


2.业务处理,web服务端接受请求,验证身份,存入session


3.web中间件响应请求

(Status-Line)    HTTP/1.1 200 OK
Cache-Control    no-cache
Date    Fri, 23 Nov 2012 04:29:41 GMT
Expires    Thu, 01 Jan 1970 00:00:00 GMT
Pragma    No-cache
Server    Apache-Coyote/1.1
Set-Cookie    JSESSIONID=60989C8636D962E56E7422A608119920;Path=/sq_xa_apartment
Transfer-Encoding    chunked

这是服务器为每个客户端分配的session内存存储标识,以后每次客户端调用只要把这个JSESSIONID 加入cookie或着作为参数传递给服务端。

4.再次请求服务端

取得上次返回的cookie,加入新的请求中

httpclientPost.setHeader("cookie","JSESSIONID=60989C8636D962E56E7422A608119920");

请求的报文如下


GET /sq_xa_apartment/api/mobile/exter.jhtml?flag=1&serviceCode=0002&pageNum=1&pageSize=10&identityCard= HTTP/1.1
Accept    text/html, application/xhtml+xml, */*
Accept-Encoding    gzip, deflate
Accept-Language    zh-CN
Connection    Keep-Alive
Cookie    JSESSIONID=60989C8636D962E56E7422A608119920
Host    192.168.39.175:8086
User-Agent    Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)


知识点: http报文格式

HTTP请求头


当然如果是用ie访问方式则不用做上述的步骤,因为浏览器本身会缓存对应的jsession,如果客户端禁用了cookie事,就需要把这个jsession当做参数传递给web服务器,

处理方式如下

 1.LoginSessionListener方法实现了HttpSessionListener,并且重写sessionCreated和sessionDestroyed方法

2.在web.xml注册LoginSessionListener

3. 使用SessionContext.getSession(jsessionid)

String sessionId = req.getParameter("jsessionid");  HttpSession session = sessioncontext.getSession(sessionId); 

可以参考 URL:http://laolang.cn/back-end-develop/getsessionjava-servlet-api.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值