session

session:

1.什么时候创建session对象
  1)对于jsp而言:

    ①若当前的jsp是客户端访问的当前web 应用的第一个资源,且jsp的page指定session
      的属性值为FALSE,则服务器就不会为jsp创建一个Httpsession对象;
 
    ②若当前jsp不是客户端访问的当前web应用的第一个资源,且其他页面已经创建一个
      httpsession对象,当前jsp页面会返回一个会话的httpsession对象,而不会创建一个新的。

  2)对于servlet而言:
    
    若servlet是客户端访问的第一个web应用的资源,则只有调用了request.getSession或request.getSession(true)才会创建HttpSession对象。
   
  3)在servlet中如何获取Httpsession对象:
 
    ①request.getSession(Boolean create):
    
      >当create为FALSE,若没有和当前jsp关联的Httpsession对象返回null,有返回Httpsession对象;
    
      >当create为true,一定返回Httpsession对象;
 
    ②request.getSession()等同于request.getSession(true);

  4)session="false"  意思是jsp页面禁用session隐含变量。

2.什么时候销毁Httpsession对象

  1)直接调用Httpsession 的 invalidate()方法:使Httpsession失效。

  2)服务器卸载了当前web应用。
 
  3)超出Httpsession的过期时间,session.setMaxInactiveInterval(int)可以设置过期时间,默认为半小时。

  4)在web.xml文件中设置Httpsession的过期时间:单位为分钟。
 
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

  5)并不是关闭了浏览器就销毁了Session。

3.URL重写

  1)不支持cookie的情况下也浏览器也可以与web服务器保持连续的会话
  2)将会话标号以参数形式附加在超链接的URL地址后面的技术称为URL重写
  3)代码:
  <a href="<%= response.encodeUrl("login.jsp")%>">重新登录</a>

4.跳转到其他页面一定要用绝对路径:request.getContextPath() / 文件名

5.利用向 session 中放标记的方式避免表单的重复提交:
 
  1)在原表单页面,生成一个随机值token
  2)在原表单页面,把token值放入session属性中
  3)在原表单页面,把token值放入到隐藏域中
 
  4)在目标的servlet中:获取session和隐藏域中的token值
  5)比较两个值是否一致:若一致,受理请求,且把session域中的token属性销毁
  6)若不一致,则直接相应提示页面

6.使用Httpsession实现验证码功能原理
 
  1)在原表单页面,生成一个随机的验证码图片,并把验证码中的字符串传人session中
  2)在原表单页面,创建一个文本,用来输入验证码信息
 
  3)在目标页面,获取文本输入的字符串和session中的字符串做比较,若一致则受理请求并销毁session中的字符串
  4)若不一致则直接返回原表单页面,并提示验证码错误
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值