JSP pageContext隐式对象,它是javax.servlet.jsp.PageContext
的一个实例。使用此对象,您可以在以下任何级别找到属性,获取属性,设置属性和删除属性:
- JSP 页面 – 范围:
PAGE_CONTEXT
- HTTP 请求 – 范围:
REQUEST_CONTEXT
- HTTP 会话 – 范围:
SESSION_CONTEXT
- 应用级别 – 范围:
APPLICATION_CONTEXT
pageContext
隐式对象的方法
Object findAttribute(String AttributeName)
:**此方法按以下顺序搜索所有四个级别中的指定属性 – 页面,请求,会话和应用。当在任何级别找不到属性时,它返回NULL
。Object getAttribute (String AttributeName, int Scope)
: 它在指定范围内查找属性。此方法类似于findAttribute
方法。唯一的区别是findAttribute
会按顺序在所有四个级别中查找,而getAttribute
则在指定的范围中查找。 例如在以下语句中,getAttribute
方法将在会话范围(或会话级别/层)中搜索属性"geek-docs"
。如果找到该属性,则将其分配给Object obj
,否则将返回Null
。Object obj = pageContext.getAttribute("geek-docs", PageContext.SESSION_CONTEXT);
同样,该方法也可用于其他范围:
Object obj = pageContext.getAttribute("geek-docs", PageContext. REQUEST_CONTEXT); Object obj = pageContext.getAttribute("geek-docs", PageContext. PAGE_CONTEXT); Object obj = pageContext.getAttribute("geek-docs", PageContext. APPLICATION_CONTEXT);
void removeAttribute(String AttributeName, int Scope)
:此方法用于从给定范围中删除属性。例如 – 下面的 JSP 语句将从页面范围中删除属性"MyAttr"
。pageContext.removeAttribute(“MyAttr”, PageContext. PAGE_CONTEXT);
void setAttribute(String AttributeName, Object AttributeValue, int Scope)
:它在给定范围内写入属性。示例–下面的语句将在应用程序范围内存储值为"This is my data"
的属性"mydata"
。pageContext.setAttribute(“mydata”, “This is my data”, PageContext. APPLICATION_CONTEXT);
类似地,这将在请求范围中创建名为
attr1
的属性,其值为"Attr1 value"
。pageContext.setAttribute(“attr1”, “Attr1 value”, PageContext. REQUEST_CONTEXT);
pageContext
隐式对象示例
index.html
在这里,我们只是要求用户输入登录详细信息。
<html>
<head>
<title> User Login Page – Enter details</title>
</head>
<body>
<form action="validation.jsp">
Enter User-Id: <input type="text" name="uid"><br>
Enter Password: <input type="text" name="upass"><br>
<input type="submit" value="Login">
</form>
</body>
</html>
validation.jsp
在此页面中,我们使用pageContext
隐式对象和会话范围存储用户凭据,这意味着我们将能够访问详细信息,直到用户的会话处于活动状态。我们还可以使用其他范围参数存储属性,例如页面,应用和请求。
<html>
<head> <title> Validation JSP Page</title>
</head>
<body>
<%
String id=request.getParameter("uid");
String pass=request.getParameter("upass");
out.println("hello "+id);
pageContext.setAttribute("UName", id, PageContext.SESSION_SCOPE);
pageContext.setAttribute("UPassword", pass, PageContext.SESSION_SCOPE);
%>
<a href="display.jsp">Click here to see what you have entered </a>
</body>
</html>
display.jsp
在这个 JSP 页面中,我们使用getAttribute
方法获取存储的属性。这里需要注意的是,我们已经使用会话范围存储了属性,因此我们必须将范围指定为会话才能获取这些属性的值。
<html>
<head>
<title>Displaying User Details</title>
</head>
<body>
<%
String username= (String) pageContext.getAttribute("UName", PageContext.SESSION_SCOPE);
String userpassword= (String) pageContext.getAttribute("UPassword", PageContext.SESSION_SCOPE);
out.println("Hi "+username);
out.println("Your Password is: "+userpassword);
%>
</body>
</html>
示例输出的屏幕截图
我们从用户接收用户 ID 和密码的登录页面。
有详细页面链接的页面:
用户凭据显示页面,我们已通过pageContext
实例从登录页面传递到此页面。