目录
原创地址:https://blog.csdn.net/qq_41637061/article/details/92196530
1 Session的产生背景
Cookie可以让服务器端跟踪每个客服端的访问,但是每次客服端的访问都必须传回这些Cookie,如果Cookie很多,则无形中增加了客服端与服务器端的数量传输并且使私密数据处于不安全的状态,Session的出现解决了这些问题。
同一个客服端每次和服务器端交互时,不需要每次传回所有的Cookie值,而只需要传回一个ID,这个ID就是我们经常见到的JSESIONID,它是在我们第一次调用httpServletRequest.getSession()
生成的。
2 Session正常的工作的三种方式
- 基于URL Path Parameter
- 基于Cookie,如果没有修改Context容器的Cookie标识,则默认也是支持的
- 基于SSL,默认不支持,只有connector.getAtrribute(“SSLEnabled”)为TRUE时才支持
方式一:
当浏览器不支持Cookie的时候,浏览器会将用户的SessionCookieName重写到用户请求的URL参数中,例如/path/Servlet;name=value;name2=value2
方式二:
在Cookie中拿到SessionId,如果客服端同时支持Cookie也支持URL参数类型,前者的SessionId会覆盖后者的SessionId。
方式三:
根据javax.servlet.request.ssl_session属性值设置SessionId
在web.xml文件中更改默认的NAME(JSESIONID)