JSP中取消session的自动创建(构建高效网站)

笔者查看部分网站代码发现jsp头部引入<%@ page session="false"%>,所以查找结果如下


<%@ page session="false"%>

其什么作用?好像是取消自动创建,但还是被创建了,问题如题

补充:

<%@ page session="false"%>

我在首页里加了这段代码,但监听器还是检测到session被创建,如何阻止自动创建

补充: 在线等答案
补充:

打开首页index.jsp

servlet里面获取session都用的HttpSession session=request.getSession(false);

但session监听器里的sessionCreate事件任然会被触发

 

满意答案

热心问友 2009-07-17

<%@ page session="false"%>是指不能在本页使用session.也就是在本页面禁用了session,跟自不自动创建session是没有关系的...

request.getSession(false)是指如果存在session就返回session,如果不存在就返回一个null值,getSession(true)的话就是不存在就创建一个新的session.

至于为什么在"打开首页index.jsp,servlet里面获取session,session监听器里的sessionCreate事件任然会被触发",我觉得应该是打开首页的时候 服务器已经分配了一个session id给客户端了.而你用getSession(false)去拿session的时候,session id还处于有效期,所有才会创建session

1 

其他回答(3)

SOSO用户 7级 2009-07-17

就是取消页面上所有的Session数据
 
访问任何一个JSP的时候,默认会自动创建Session的,可以在所有JSP的头部增加指令:
<%@ page session=”false”%>
如果将以上指令写入JSP中,那么该JSP就不能使用Session了,一般情况下没有问题。
如果在JSP中想使用Session,怎么办呢?
1)只禁用入口JSP(登录JSP)的Session
2)将所有JSP放置到WEB-INF目录下面,避免用户直接访问JSP文件
这样就保证只有用户登录成功之后才创建新的Session,避免创建很多没有的Session,占用服务器的资源。

注:假如JSP没有禁用Session,同时JSP能够被正常访问,那么攻击者就可以启动多个浏览器进程多次访问JSP,服务器会自动创建很多垃圾Session,影响正常用户的访问。
注:当jsp中包括类似于 <img src=”imgs/logo.gif”> 这样的代码,如果logo.gif文件不存在,那么每次访问该jsp就会自动新建一个session,会导致session越来越多。

其次:Struts中Session自动创建的问题
Struts中从页面提交表单到action类,再跳转到下一个页面的时候,Session都会自动创建。
创建Session就是通过使用语句request.getSession()或request.getSession(true)来实现的。
经过研究Struts的源代码,发现Struts在处理自动Locale时导致的,其中调用了request.getSession()方法,
所以如果Session不存在时就自动创建了一个新的Session,可以关闭自动Locale的功能:
在struts-config.xml的controller配置中增加一个locale参数值等于false即可:
<controller locale=”false”/>

1 

十年灯 5级 2009-07-17

session="true | false" 
  设定客户是否需要HTTP Session.(学过ASP的人,应该对它不陌生)如果它为true,那么Session是有用的。 
  如果它有false,那么你就不能使用session对象,以及定义了scope=session的<jsp:useBean>元素。这样的使用会导致错误. 
  缺省值是true. 
补充:
 默认true。如果存在已有会话,则预定义session变量,绑定到已有会话中。否则创建新会话将其绑定到session。
  对于高流量网站,设置false可以节省大量服务器内存。
  设置false表示不自动创建新会话,在jsp页面转换为servlet时,这时对变量session的访问导致错误。
  设置为false并不是禁用会话跟踪,它只是阻止jsp页面为不拥有会话的用户创建新会话。

  * 对于不需要会话跟踪的页面那就设置为false;当设置为false时session对象是不可访问的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值