Servlet(2) 三个域对象

1. Servlet的作用域的作用是什么——共享数据

2. 三者的作用域

request(HttpServletRequest)

request是表示一个请求,只要发出一个请求就会创建一个request,它的作用域:仅在当前请求中有效。常用于服务器中同一请求不同页面之间的参数传递,常应用于表单的控件值传递。方法:request.setAttribute();request.getAttribute();request.removeAttribute();request.getParameter()。

session(HttpSession)

服务器会为每个会话创建一个session对象,所以session中的数据可供当前会话中所有servlet共享。常用于web开发中的登陆验证界面(当用户登录成功后浏览器分配其一个session键值对)。
会话:用户打开浏览器会话开始,直到关闭浏览器会话才会结束。一次会话期间只会创建一个session对象。
方法:session.setAttribute();session.getAttribute();session.removeAttribute()。

application(ServletContext)

所有的用户都可以取得此信息,此信息在整个服务器端被保留。ServletContext属性值只要设置一次,则所有的网页窗口都可以取得数据。ServletContext在服务器启动时创建,在服务器关闭时销毁,一个JavaWeb应用只创建一个ServletContext对象。

3. Session

一个用户可以有且最多有一个HttpSession,并且不会被其他用户访问到,该对象在用户第一次访问网站时被自动创建。所有保存在HttpSession的数据不会被发送到客户端,不同于其他会话管理技术,Servlet容器为每个HttpSession生成唯一的标识,并将该表示发送给浏览器,或创建一个名为JSESSIONID的cookie,或在URL后附加一个名为jsessionid的参数。在后续的请求中,浏览器会将标识提交给服务器,这样服务器就可以识别该请求是由哪个用户发起的。

4. URL重写

当前浏览器把cookie禁用之后,浏览器在发请求的时候,就不会把cookie带到服务器端了(其中最重要的也包括JSESSIONID),这样Session也就失效了。那么如何让浏览器发出请求的时候带上JSESSIONID呢?URL重写可以做到。在服务端收到浏览器的请求URL后,将URL重写(即在末尾加上参数JSESSIONID),然后重定向到新的URL,这样新的URL就带着Session的id过来了。

5. 会话管理

由于HTTP是无状态的,所以会话管理或会话跟踪成为Web应用开发中一个无法回避的主题。默认下,一个Web服务器无法区分一个Http请求是否是第一次访问。主要的状态保持技术有:URL重写、cookies和HttpSession对象。

参考文章

Java Web之Servlet的三大作用域对象

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值