JSP 页面上下文–隐式对象
原文:https://www . geesforgeks . org/JSP-page context-implicit-objects/
PageContext 扩展 JspContext 以贡献有用的上下文细节,同时 JSP 技术被应用在 Servlet 环境中。页面上下文是一个实例,它允许访问与 JSP 页面相关的所有名称空间,允许访问一些页面属性和应用程序细节的一个层。隐式对象因此连接到页面上下文。
- 页面上下文类是一个抽象类,它的形成是为了通过兼容的 JSP 引擎运行时环境来扩展应用程序相关的应用程序。在 JSP 中,pageContext 是javax . servlet . JSP . page context的一个实例。
- 整个 JSP 页面由 PageContext 对象表示。这个对象被认为是一种获取页面细节的方法,同时远离大部分执行信息。
- 对于每个请求,响应和请求对象的凭据都由该页面上下文对象保存。通过访问 pageContext 对象的属性,可以获得 out、会话、配置和应用程序对象。
- 这个页面上下文对象还保存了关于提供给 JSP 页面的指令的信息,以及页面范围、缓冲信息和错误页面 URL。
-
通过使用页面上下文对象,您可以设置属性、获取属性并移除不同范围内的属性,如页面、请求、会话和应用程序范围,如下所示:
-
页面–范围:页面 _ 上下文
- 请求–范围:请求 _ 上下文
- 会话–范围:会话 _ 上下文
- 应用–范围:应用 _ 上下文
注意:页面范围是 JSP 中的默认范围。
语法:
public abstract class PageContext
extends JspContext
语法:使用页面上下文
pageContext.methodName(“name of attribute”, “scope”);
继续向前,现在让我们讨论一下 pageContext 隐式对象中使用的方法。下面提出了几种在 pageContext 对象中使用的方法,其中最常涉及的方法将在下面单独深入讨论,接下来是干净的 java 程序,以说明 JSP PageContext 类中隐式对象的实现。
记住:它支持 40 多种继承自 ContextClass 的方法。
方法 1:getAttribute(String AttributeName,int Scope)
getAttribute 方法在描述的范围内找到一个属性。例如,getAttribute 方法下面给出的语句在 Session(会话层)的范围内找到属性“GeeksforGeeks”。如果它找到属性,那么它将把属性分配给对象对象,否则它将返回空值。
语法:
Object obj = pageContext.getAttribute("GeeksforGeeks", PageContext.SESSION_CONTEXT);
相应地,该方法也可以用于更多的其他范围,如下所示:
- object obj = pageContext . GetAttribute(" GeeksForgeks ",page context)。REQUEST _ CONTEXT);
- object obj = pageContext . get attributes(" geeksforgeeks ",page context)。PAGE_CONTEXT:
- object obj = pageContext . GetAttribute(" GeeksForgeks ",page context)。APPLICATION _ CONTEXT);
方法 2: 查找属性(字符串属性名)
findAttribute()方法按照下面列出的顺序在所有四个级别中查找所描述的属性。在任何级别,如果没有找到属性,那么它将返回空值。
Page --> Request --> Session and Application
方法 3: void setAttribute(字符串属性名,对象属性值,整型范围)
此方法在给定的范围内设置属性。例如,考虑下面给出的语句将在应用范围内保存一个属性“数据”,值为“这是数据”。
语法:
pageContext.setAttribute(“data”, “This is data”, PageContext. APPLICATION_CONTEXT);
相应地,该方法将在请求范围内设计一个名为 attr1 的属性,其值“Attr1 值”如下:
pageContext.setAttribute(“attr1”, “Attr1 value”, PageContext. REQUEST_CONTEXT);
方法 4:void remove attribute(String AttributeName,int Scope)
在命令到从给定范围移除属性时,使用此方法。例如,考虑下面给出的 JSP 语句将从页面范围中移除属性“属性”。
语法:
pageContext.removeAttribute(“Attr”, PageContext. PAGE_CONTEXT);
最后,让我们通过演示页面上下文隐式对象的 HTML 代码示例来实现
例 1:index.html
第 1 页:在这个 HTML 页面中,我们只是要求用户输入姓名。
超文本标记语言
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>GeeksforGeeks</title>
</head>
<body>
<form action="welcome.jsp">
<input type="text" name="uname">
<input type="submit" value="go"><br/>
</form>
</body>
</html>
页面 2: 这是一个 JSP 页面,我们正在使用带有会话范围的 pageContext 隐式对象保存用户名,这意味着我们将能够访问详细信息,直到用户的会话处于活动状态。
例 2:welcome.jspT3】
超文本标记语言
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
String name=request.getParameter("uname");
out.print("Welcome "+name);
pageContext.setAttribute("user",name,PageContext.SESSION_SCOPE);
%>
<a href="second.jsp">second jsp page</a>
</body>
</html>
第 3 页:在这个 JSP 页面中,我们正在使用 getAttribute 方法检索保存的属性。这里需要考虑的一点是,我们已经保存了具有会话范围的属性,因此我们需要将范围声明为会话,以便检索这些属性的值。
例 3:second.jsp
超文本标记语言
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
String name=(String)pageContext.getAttribute("user",PageContext.SESSION_SCOPE);
out.print("Hello "+name);
%>
</body>
</html>
输出:
一个我们接收用户名的网页。
B JSP 页面连同详细信息页面链接。
C 用户凭据显示页面,我们已经通过页面上下文实例从 html 页面移动到该页面。
版权属于:月萌API www.moonapi.com,转载请注明出处