关于java web中session的一些注意事项与总结

session的创建时机:

session的创建并不是在浏览器向服务器发出请求的瞬间产生的,而是在server端调用HttpServletRequest.getSession()时创建的。

在一个jsp页面中,session能够作为隐式对象被调用是因为jsp在编译的过程中自动调用了HttpServletRequest.getSession()。

而当在jsp商品页面中使用<%@ page session="false"%>时,jsp页面将不会去主动创建session,但是我们仍然可以在jsp页面中主动调用HttpServletRequest.getSession()去生成一个session。

关于HttpServletRequest.getSession():

HttpServletRequest.getSession(true)表示获取session,如果没有session,那么HttpServletRequest.getSession()就会自动创建一个session。

HttpServletRequest.getSession(false)表示也表示获取session,但是如果没有session,会返回null。

关于session失效:

session失效有两种方法,一种是设置session超时响应使它失效,另一种是调用session的invalidate()方法主动使session失效。

但是需要注意的是,如果使用session.invalidate(),session在失效的同时,浏览器会自动创建一个新的session。

一般来说,要想使一个jsp中session为null,那么只有在jsp页面中使用<%@ page session="false"%>且不使用HttpServletRequest.getSession()或使用时设置为HttpServletRequest.getSession(false)。

同时需要注意的是当使用<%@ page session="false"%>,且在jsp代码中调用:

<%

HttpSession session = new request.getSession();

out.print(session);

session.invalidate();

out.print(session);

%>

时,前后两个out.print()输出的是同一个session。

但是如果不使用<%@ page session="false"%>,仅在jsp代码中使用

<%

out.print(session);

session.invalidate();

out.print(session);

%>

此时,输出的两个session不同。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值