简介
本文介绍对于java-web开发中Servlet三大域对象的理解(request、session、application(ServletContext))。
1.request
定义
request即一个请求,只要发出一个请求就会创建一个request
作用
常用于服务器间同一请求不同页面之间的参数传递,常应用于表单的控件值传递。
方法
request.getParameter()
获取通过类似post,get等方式传入的数据,即获取Web客户端到Web服务端的数据,代表HTTP请求数据。
request.setAttribute()
将 request.getParameter() 方法获取的数据保存到request域中,即将获取的数据重新封装到一个域中。
request.getAttribute()
返回在 request.setAttribute() 封装的域中存在的数据。
2.session
定义
服务器会为每个会话创建一个session对象,所以session中的数据可供当前会话中所有servlet共享。Session 是一个接口(HttpSession),每个客户端都有自己的一个 Session 会话。
作用
常用于web开发中的登陆验证界面(当用户登录成功后浏览器分配其一个session键值对)。
获取session对象方法
1.在Servlet中:HttpSession session = request.getSession();
2.直接使用:<%session.serAttribute("name","admin")%>
注:session.setAttribute(); session.getAttribute();等方法原理同request。
3.application(servletContext)
定义
中文意思是应用程序,能够利用计算机操作系统的某些服务,也可以利用其它应用程序所支持的服务。所有的用户都可以取得此信息,此信息在整个服务器上被保留。Application属性范围值,只要设置一次,则所有的网页窗口都可以取得数据。ServletContext在服务器启动时创建,在服务器关闭时销毁,一个JavaWeb应用只创建一个ServletContext对象,所有的客户端在访问服务器时都共享同一个ServletContext对象。
作用
存储数据和访问来自任何页面的变量,类似于session。不同之处在于,所有用户分享一个application。
获取session对象方法
1.在Servlet中:ServletContext app01 = this.getServletContext();
app01.setAttribute("name", "kaixuan"); //设置一个值进去
ServletContext app02 = this.getServletContext();
app02.getAttribute("name"); //获取键值对
2.直接使用:<%session.serAttribute("name","admin")%>
总结
生命周期
request:只限于一次请求
session:一次会话(多次请求)
application:项目的加载到卸载
作用范围
requset:所有被请求转发的Servlet
session:所有的Servlet
application:所有的Servlet(换一个浏览器演示,跟session作用域区分)
如何正确的选择作用域
request:跟当前操作功能相关
session: 跟用户信息相关
application:跟项目全局信息相关