📜  JSP PageContext – 隐式对象(1)

📅  最后修改于: 2023-12-03 15:17:05.115000             🧑  作者: Mango

JSP PageContext – 隐式对象

在JSP中,有一些对象不需要明确声明而可以直接使用,这些对象称为隐式对象。PageContext是JSP中最常用的隐式对象之一。它提供了对JSP页面环境的访问,管理这些环境的属性和作用域,并提供了许多有用的方法和功能。

PageContext对象

PageContext是一个javax.servlet.jsp.PageContext 类型的对象,它表示JSP页面的上下文。这个对象可以用来访问页面属性和其他隐式对象,如request、response、session和application。在JSP页面中,PageContext对象是默认的和隐式的。

要访问PageContext对象,可以使用pageContext关键字。

<% 
PageContext pageContext = pageContext;
%>

PageContext对象中包含了很多有用的方法和属性,例如以下方法:

1. getException()

getException()方法返回最近一次出现的异常,如果没有异常发生,则返回null。

<% 
Exception e = pageContext.getException();
if (e != null) {
    // Do something with exception
} else {
    // Normal code
}
%>
2. getAttribute()

getAttribute(String name)方法获取一个属性的值,这个属性可以是从JSP的其他组件中传递过来的,也可以是在当前页面设置的。此方法支持取值的优先级,即先查找page变量,再查找request、session然后是application。

<% 
String message = (String) pageContext.getAttribute("message");
if (message == null) {
    message = "Welcome!";
}
out.print(message);
%>
3. setAttribute()

setAttribute(String name, Object value)方法设置一个属性的值。这个方法将属性存储在JSP页面的范围内(page、request、session或application),可以在整个页面或应用程序中使用。

<% 
pageContext.setAttribute("message", "Welcome!");
%>
4. removeAttribute()

removeAttribute(String name)方法从JSP页面的范围内(page、request、session或application)中移除一个属性。

<% 
pageContext.removeAttribute("message");
%>
5. findAttribute()

findAttribute(String name)方法查找一个属性的值。此方法支持取值的优先级,即先查找page变量,再查找request、session然后是application。 如果没有找到属性,返回null。

<% 
String message = (String) pageContext.findAttribute("message");
if (message == null) {
    message = "Welcome!";
}
out.print(message);
%>
作用域

在JSP页面中,PageContext对象包含了四个作用域范围:page、request、session和application。

1. Page

Page作用域表示当前页面范围,只在当前页面中可见。这个能够在页面的任何位置被访问的属性需要设置在这个范围内。

<% 
pageContext.setAttribute("message", "Welcome!", PageContext.PAGE_SCOPE);
%>
2. Request

Request作用域表示一个页面发送到服务器的请求范围,只在同一请求内的页面中可见。

<% 
pageContext.setAttribute("message", "Welcome!", PageContext.REQUEST_SCOPE);
%>
3. Session

Session作用域表示一个页面的用户会话(登录),在用户登录后就启用,并在用户退出或超时后终止。

<% 
pageContext.setAttribute("message", "Welcome!", PageContext.SESSION_SCOPE);
%>
4. Application

Application作用域表示整个应用程序的范围,在整个应用程序中可见。

<% 
pageContext.setAttribute("message", "Welcome!", PageContext.APPLICATION_SCOPE);
%>
结论

PageContext对象是JSP中最常用的隐式对象之一,它提供了对页面环境的访问,以及管理这些环境的属性和作用域,并提供有用的方法和功能。同时,它还是在JSP页面中最容易使用的对象之一,可以方便快捷地处理许多问题。