1- 获取session的方案
session: https://blog.csdn.net/yiifaa/article/details/77542208
2- session什么时候创建?
一个常见的误解是以为session在有客户端访问时就被创建,然而事实是直到某server端程序调用HttpServletRequest.getSession(true)这样的语句时才被创建。
注意如果JSP没有显示的使用 <% @page session="false"%> 关闭session,
则JSP文件在编译成Servlet时将会自动加上这样一条语句 HttpSession session = HttpServletRequest.getSession(true);这也是JSP中隐含的session对象的来历。
由于session会消耗内存资源,因此,如果不打算使用session,应该在所有的JSP中关闭它。
3- session何时被删除?
session在下列情况下被删除:
A.程序调用HttpSession.invalidate()
B.距离上一次收到客户端发送的session id时间间隔超过了session的最大有效时间
C.服务器进程被停止
再次注意关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效,除非此时Server端刚好session失效时间到了。
4- getSession()/getSession(true)、getSession(false)的区别,isNew()
getSession()/getSession(true):当session存在时返回该session,否则新建一个session并返回该对象
getSession(false):当session存在时返回该session,否则不会新建session,返回null。
public boolean isNew()方法如果会话尚未和客户程序(浏览器)发生任何联系,即服务器端程序还没有返回客户端时,
则这个方法返回true,这一般是因为会话是新建的,不是由输入的客户请求所引起的。但如果isNew返回false,
只不过是说明他之前曾经访问Web应用,并不代表他们曾访问过我们的servlet或JSP页面。
5 cookie: https://blog.csdn.net/u011145904/article/details/77745777
6- 然后我再聊下session_id吧,它是保存在cookie中,首先session是一个只要活动就不会过期的东西,只要开启cookie,每一次会话,session_id都不会改变,我们可以根据session_id来判断用户是否是正常登陆,防止用户伪造session。然后我们也要防止session被劫持,我们可以对session_id进行再一次的加密,防止暴力破解,还有可以设置HttpOnly。通过设置Cookie的HttpOnly为true,可以防止客户端脚本访问这个Cookie,从而有效的防止XSS攻击。