概述
在一个web应用中,不同servlet之间的信息交流主要通过servlet context、session、request三种容器,这三种容器的作用范围不同,传递信息时根据信息的传播范围选择合适的容器
servlet context
当一个应用部署到服务器上时,服务器会为这个应用创建一个servlet context对象,用于存放所有servlet共享的一些资源。
servlet context中的信息对所有servlet都是可见的。
servlet context会在服务器关闭时被销毁。
servlet context提供了一些方法供servlet与servlet context进行通信:
void setAttribute (String name, Object object )
:以键值对的形式向servlet context中存入信息,如果键名已经存在,会覆盖原来的值Object getAttribute (String name )
:从servlet context中根据键名获取信息,没有对应键名时返回值为null
session
session对象是服务器创建的用来在与浏览器进行一系列请求响应时存储信息的一个容器。每个session都有一个sessionid,当浏览器向服务器第一次发出请求时,由于请求中没有sessionid信息,服务器就会创建一个session对象,并将sessionid的信息响应给浏览器,浏览器将sessionid存储在cookie中,以后每一次请求都会以cookie的形式携带sessionid信息,服务器会根据请求中的sessionid信息将servlet划归到对应的session中,从而将这一系列请求响应放在一个session中。
session中的信息只对请求中含有对应sessionid信息的servlet可见。
session在创建后会根据设置的时间进行倒计时(默认30min),如果在这个时间段内有请求,则倒计时重置;如果一直没有请求,倒计时结束时,session自动销毁。session失效或销毁的一些常见场景:
- 关闭浏览器(浏览器cookie中存储的sessionid信息被销毁,对应的session对象无法被访问,即失效。需要注意的是,此时session并未销毁,只是无法访问,只有倒计时结束后session才会销毁)
- 更换浏览器(新浏览器的cookie中没有sessionid信息,服务器会新创建一个session对象)
- 关闭服务器
- 调用
void invalidate()
方法,手动销毁session - 倒计时结束,session自动销毁
session中常用的方法:
void setAttribute(String key, Object value)
:向session中以键值对的形式存入信息Object getAttribute(String key)
:根据键名从session中获取信息void removeAttribute(String key)
:根据键名删除键值对信息void invalidate()
:使当前session失效void setMaxInactiveInterval(int interval)
:设定session自动销毁的倒计时时间
request
浏览器向服务器发出一次请求时,服务器会根据请求信息创建request对象,并交给对应的servlet。request也可以用来传递信息,不过要和转发配合使用。转发是指在servlet中调用request对象的RequestDispatcher getRequestDispatcher( String path )
方法,返回一个指向对应路径的请求分发对象,再调用RequestDispatcher对象的forward(ServletRequest request,ServletResponse response)
将当前servlet的请求响应对象转发给另一个servlet处理,另一个servlet就可以获取当前servlet在request对象中存储的信息了。
request对象中的信息只对转发的servlet可见
request对象在对应response对象响应浏览器后销毁
reque对象传递消息时的一些常用方法:
Object getAttribute ( String name )
:根据键名从request中获取信息void setAttribute (String name, Object object )
:向request中以键值对的形式存入信息void removeAttribute (String name)
:根据键名删除键值对信息RequestDispatcher getRequestDispatcher( String path )
:获取一个指向指定路径的请求分发对象
最后
以上就是甜甜寒风为你收集整理的servlet中servlet context、session、request存放数据的作用域和常用方法的全部内容,希望文章能够帮你解决servlet中servlet context、session、request存放数据的作用域和常用方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复