request:服务器获取用户请求; response:服务器答复用户请求的资源;
session:用户使用服务器开始到结束的过程; application:网站服务器启动到停止的过程;
在asp中,作用域可分为四种:①仅仅用于JSP中的page其作用域为在当前页面有效 (这里了解就好)
②request其作用域为在当前http请求中有效
③session其作用域为在当前会话中有效
④application其作用域为在所有应用程序中有效,应用程序就是访问的网站服务器
在上面提到了四个的作用域,作用域详细的说就是 “信息共享的范围”,也就是一个信息能够在多大的范围内有效。
当用户通过浏览器客户端向网站服务器提出请求时,就是一个request过程,这个时候网站服务器收到客户端的request,网站服务器通过servlet或者JSP对用户发送的request进行出理,处理完后服务器通过response将处理完后的资源发送给客户端,客户端收到资源在浏览器显示出来。
request就是一个HTTP客户端请求,处理request可能需要多个Servlet合作, 几个Servlet之间可以通过某种方式传递信息,但这个信息在请求结束后就无效了
response就是一个HTTP服务器答复,将servlet处理结果答复给客户端
session与用户是一对一关系,一个web应用程序可以同时有多个用户在线,每个用户都有对应唯一的session,一个session就是一个用户从开始使用客户端到结束使用客户端的过程,这个过程可以有多个request和response
application与用户是一对多关系,类似于一个web应用程序对应于多个用户在线使用,每个web应用程序对应只有一个aaplication,在一起协同工作以完成某项任务的一组 ASP 文件称作应用程序(application)。ASP 中的 Application 对象用于将这些文件捆绑在一起。application就是网站服务器从启动到停止的过程。
session是通过HttpSession接口实现的。
Object HttpSession.getAttribute(String name) 从session中获取信息
void HttpSession.setAttribute(String name, Object value) 向session中保存信息
而通过HttpServletRequest.getSession()方法可以获得HttpSession对象。
HttpSession HttpServletRequest.getSessio() 获取当前请求所在的session的对象。
session的开始容易判断(浏览器发出第一个HTTP请求即可认为会话开始), 而结束就不好判断了,因为客户端浏览器结束会话时并不会告知服务器,所以只能通过这种方法判断:如果一定的时间内客户端没有反应,则认为会话结束。 Tomcat的默认值为120分钟,但这个值也可以通过 HttpSession 的 setMaxInactiveInterval 方法来设置。
void setMaxInactiveInterval(int interval) 设置绘画的超时值。
如果想主动让会话结束,如用户单击“注销”的时候,可以使用 HttpSession 的 invalidate 方法:
void invalidate() 强制结束当前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