您的位置:首页 > 编程语言 > Java开发

初学struts

2016-07-29 00:00 281 查看
在图书馆借了一本《struts完全手册》,因为当时是想找一些实例和介绍sevlet知识的内容,就没管是struts1了,因为是学习,只是获取自己不知道的知识,也没有自己创新的东西或经验之谈,这里也就只能写一些让自己恍然大悟的知识点了,权把学习笔记当技术博文吧。
sevlet中request,session,application三者关系曾困扰了我很长一段时间,这里是在网上找到的,读了之后豁然开朗,这里就简单写点吧。
Servlet/JSP中的Ses sion功能是通过作用域(scope)这个概念来实现的。
作用域分为四种,分别为:

page 在当前页面有效(仅用于JSP中)
request 在当前请求中有效
session 在当前会话中有效
application 在所有应用程序中有效
所谓“作用域”就是“信息共享的范围”,也就是说一个信息能够在多大的范围内有效。Web交互的最基本单位为HTTP请求。每个用户从进入网站到离开网站这段过程称为一个HTTP会话,一个服务器的运行过程中会有多个用户访问, 就是多个HTTP会话。那么作用域就可以理解为:

request HTTP请求开始到结束这段时间
session HTTP会话开始到结束这段时间
application 服务器启动到停止这段时间

request
一个HTTP请求的处理可能需要多个Servlet合作,几个Servlet之间可以通过某种方式传递信息,但这个信息在请求结束后就无效了。
Servlet之间的信息共享是通过HttpServletRequest接口的两个方法来实现的:
void setAttribute(String name, Object value)
将对象 value 以 name 为名称保存到request作用域中。
Object getAttribute(String name)
从request作用域中取得指定名字的信息。
doGet()、doPost()函数的第一个参数就是 HttpServletRequest 对象, 使用这个对象的 setAttribute 即可传递信息。
那么设置好信息之后,如何将信息传给其他Servlet? 这就要用到 RequestDispatcher 接口的 forward 方法,将请求转发给其他Servlet。
session
session作用域比较容易理解,同一浏览器访问多次,在这多次访问之间传递信息,就是session作用域。 session是通过HttpSession接口实现的。
Object HttpSession.getAttribute(String name)
从session中获取信息
void HttpSession.setAttribute(String name, Object value)
向session中保存信息
而通过HttpServletRequest.getSession()方法可以获得HttpSession对象。
HttpSession HttpServletRequest.getSessio()
获取当前请求所在的session的对象。
application
application作用域就是服务器启动到关闭的整段时间, 在这个作用域内设置的信息可以被所有应用程序使用。 (餐馆打烊后结帐,用到的即是开张到打烊之间的所有信息。)
application作用域上的信息传递就是通过ServetContext实现的。
Object getAttribute(String name)
从application中获取信息。
void setAttribute(String name, Object value)
向application作用域中设置信息。
总结:可以看到,每个作用域除了实现接口不同、意义不同之外,它们的使用方法和作用都是相同的, 都是通过 getAttribute 和 setAttribute 方法进行信息传递。
作用域 意义 实现接口
request HTTP请求内 HttpServletRequest
session HTTP会话内 HttpSession
application 服务器生命周期内 ServletContext

我想以后实践多了,才会有好的体会写出来,这里也不多写笔记了,要继续学习呀.......
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: