四大域对象
![](https://i-blog.csdnimg.cn/blog_migrate/de78d6fee7dafa8d258936aee9894e66.png)
page
:jsp页面被执行,生命周期开始,
jsp
页面执行完毕,生命周期结束。
request
:用户发送一个请求,开始,服务器返回响应,请求结束,生命周期结束。
session
:用户打开浏览器访问,创建
session(
开始
),session
超时或被声明失效,该对象生命周期结
束。
application
:
web
应用加载的时候创建。
Web
应用被移除或服务器关闭,对象销毁
TEST
<%
pageContext.setAttribute("name_pageContext","pageContext");
request.setAttribute("name_request","request");
session.setAttribute("name_session","session");
application.setAttribute("name_application","application");
%>
${name_pageContext}
${name_request}
${name_session}
${name_application}
优先顺序:虽然四个域对象都可以存取数据。在使用上它们是有优先顺序的。四个域在使用的时
候,优先顺序分别是,他们从小到大的范围的顺序。
pageContext < request < session < application
如果统一页面传递数据,可以使用
pageContext
的
如果同一个请求传递页面,建议使用
request
如果不同请求间,但是同一会话,可以使用
session
application
用来保存共享数据的
JSP
内置对象
![](https://i-blog.csdnimg.cn/blog_migrate/600e5e5cb5d3fb9f97e7fbbe81270225.png)
练习:
out对象:在JSP页面中,经常需要向客户端发送文本内容,这时可以使用out对象来实现。<br>
<%
out.println("你好1");
%>
<%="你好2"%>
<br>
<%="--------------------------------------------------------------------------"%><br>
page对象:本页面取得,服务器跳转后无效。所设置的属性仅在当前页面内有效。<br>
<%!Object object;%>
<ul>
<li>getClass()方法的返回值:<%=page.getClass() %>></li>
<li>hashCode()方法的返回值:<%=page.hashCode() %></li>
<li>toString()方法的返回值:<%=page.toString() %></li>
<li>与Object对象比较的返回值:<%=page.equals(object) %></li>
<li>与this对象比较的返回值:<%=page.equals(this) %></li>
</ul>
${name_pageContext}
${name_request}
${name_session}
${name_application}
<%="--------------------------------------------------------------------------"%><br>
pageContext 对象<br>
<%
pageContext.setAttribute("name","pageContext");
%>
<%="pageContext中的name值:"+pageContext.getAttribute("name")%>
${name}
<%pageContext.removeAttribute("name");%><br>
<%="pageContext中的name值:"+pageContext.findAttribute("name")%><br>
<%="--------------------------------------------------------------------------"%><br>
request对象:所设置的属性仅在一次请求的范围内有效。<br>
<%="按照参数名称,获取获取请求中的参数值:"+request.getParameter("id")%><br>
<%="获取当前应用在服务器端的真实路径:"+request.getRealPath("")%><br>
<%="项目运行时的应用的访问名称:"+request.getContextPath()%><br>
<%="获取当前请求的方式:"+request.getMethod()%><br>
<%="获取发起本次请求的客户端IP地址:"+request.getRemoteAddr()%><br>
<%="获取服务器本地的IP地址:"+request.getLocalAddr()%><br>
<%request.setAttribute("name1","request");%><br>
<%="request中的name1值:"+request.getAttribute("name1")%><br>
<%="pageContext中的name1值:"+pageContext.findAttribute("name1")%><br>
<%="--------------------------------------------------------------------------"%><br>
response 对象<br>
<%
//response.sendRedirect("login.jsp");
//重定向到login.jsp页面
// response.sendRedirect("https://www.baidu.com/");
//重定向到百度页面
%>
<%="--------------------------------------------------------------------------"%><br>
session对象:无论客户端还是服务端都可以取得,但是现在重新开启一个新的浏览器,则无法取得之前设置的session了,因为每一个session值保存在当前浏览器中,并在相关的页面取得,对于服务器而言,每一个连接到它的客户端都是一个session<br>
<%="获取当前Session会话对象的ID:"+session.getId()%>
<%="获取当前Session会话对象的创建时间:"+session.getCreationTime()%>
<%="本次会话最后一次访问时间"+session.getLastAccessedTime()%>
<%="--------------------------------------------------------------------------"%><br>
application对象:application对象用于保存所有应用程序中的公有数据。它在服务器启动时自动创建,在服务器停止时销毁。当application对象没有被销毁时,所有用户都可以共享该application对象。与session对象相比,application对象的生命周期更长,类似于系统的“全局变量”。
<%="--------------------------------------------------------------------------"%><br>
<%=pageContext.getAttribute("name_pageContext")%>
<%=request.getAttribute("name_request")%>
<%=session.getAttribute("name_session")%>
<%=application.getAttribute("name_application")%>