Session操作

一、HttpSession

1、HttpSession对象是由容器创建在,保留在服务器的内存中。

2、它也是一个域对象,提供了

Object getAttribute(String name)

void setAttribute(String name,Object obj)等方法。

3、一个浏览器独占一个HttpSession对象(默认情况下)

4、获取HttpSession对象:HttpServletRequest.getSession()

 

 

二、什么时候开启浏览器算是开始一次新会话?(同一个网站)

1、IE8(含)及以上,开启一个新的浏览器进程,与原来开启的进程共享同一次会话

         若想不同进程或页面有各自的会话对象,“文件”\"新建会话"

 

2、IE7(含)及以下,开启一个新的浏览器进程,与原来开启的继承不共享同一次会话

3、一个新的Tab浏览器标签,与之前的页面属于同一次会话

4、通过超链接开启的新窗口也是属于同一次会话

 

三、HttpSession对象的获取都是通过request.getSession()方法得到。

每个HttpSession对象都有一个唯一的ID。(HttpSession.getId())

之所以不同客户端的数据正常显示,那是因为服务器向浏览器写了一个特殊的cookie,

该Cookie的名字为“JSESSIONID”,值为HttpSession对象的ID

 

 

三、HttpSession对象的获取细节

HttpServletRequest.getSession():

客户端第一次访问:创建HttpSession对象

如果服务器根据JSESSION的在内存中找到了对应的HttpSession对象:获取HttpSession对象。

 

 

HttpServletRequest.getSession(booleancreate):

如果为false:只是获取

如果为true:跟无参的方法功能一致。

 

服务器怎么分配session的id?服务器随机分配的一个唯一的ID

 

 

四、Base64编码规则

把原来的字节由3个字节转换成为4个字节

 

五、客户端禁用Cookie后,对于使用http://localhost来访问的,禁用无效。

客户端禁用Cookie后,需要对使用到的所有URL进行重写

url;JSESSIONID=234243

 

HttpServletResponse.encodeURL(String url):可以完成重写

智能方法:判断浏览器有没有禁用,禁用了重写URL,没禁用,不重写。

 

 

六、HttpSession对象的生命周期

1、浏览器关闭,会话结束,单服务器并不会立刻销毁对应的HttpSession对象。

2、HttpSession对象何时被销毁?

a、没有重写Cookie前提下:第二知识点

b、超时默认时间是30分钟。

可以修改web.xml,增加以下配置修改默认的超时时间

 <session-config>

       <session-timeout>1</session-timeout>

         <!--单位是分钟-->

 </session-config>

 

c、HttpSession.invalidate():立刻销毁session对象。

七、HttpSession对象的状态

 

八、JSP知识

1、原理:JSP就是Servlet。学习最好的办法是记住JSP生成的Servlet的模样

2、最佳实践:Servlet处理业务逻辑(控制器);JSP只负责显示

 

JSP最终用途:负责显示,且不能有一行Java脚本

3、修改MyEclipse生成的JSP模板

找到Servlet.java模板。JSP模板与他在一块。

template\jsp\Jsp.vtl    JSPMetaTags.vtl


会话状态转换

新建一个Session---request.getSession()-->运行状态----request.invalidate()---->销毁

运行状态---搁置(1.内存中的Session太多,有的session长时间没有用,但并没有超时.   2.应用被重新加载,或容器启动了)/激活(用户开始使用了,应用启动了)--->持久化


JSP运行原理

第一次访问: IE----容器----JSP页面----jsp翻译成Servlet----编译成Class

                  容器----Class


表单重复提交问题:

登陆页面:Servlet来生成

1、产生输入表单

2、向session中放一个唯一的ID

令牌Token

3、使用一个hidden存放该ID


RegistServlet:

1、hidden:ID

2、Session:ID

比对:

1、相同:证明没有重复提交,做保存处理;从session中删除该ID

2、不相同:是重复提交


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值