Tag9.java
package tag9;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import java.io.IOException;
import java.util.Enumeration;
public class Tag9 extends TagSupport {
public int doStartTag() throws JspException {
try {
JspWriter out = pageContext.getOut();
out.println(this.getAttributes());
} catch (IOException ioe) {
throw new JspException(ioe.getMessage());
}
return SKIP_BODY;
}
private String getAttributes() {
StringBuffer returns = new StringBuffer();
int[] scopes = {pageContext.PAGE_SCOPE,
pageContext.REQUEST_SCOPE,
pageContext.SESSION_SCOPE,
pageContext.APPLICATION_SCOPE
};
String[] strScopes = {"page_scope",
"request_scope",
"session_scope",
"application_scope"
};
for (int i = 0; i < scopes.length; i++) {
returns.append("<p>" + strScopes[i] + ":<br>");
for (Enumeration enums = pageContext.getAttributeNamesInScope(scopes[i]); enums.hasMoreElements(); ) {
String attributeName = (String) enums.nextElement();
Object attributeValue = pageContext.findAttribute(attributeName);
returns.append(attributeName + " = [" + attributeValue.getClass().getName() + "] " + attributeValue + "<br>");
}
}
return returns.toString();
}
}
tag9.jsp
<%@ page contentType="text/html;charset=GBK" %>
<%@ taglib prefix="tag" uri="tag9.tld" %>
<html>
<body>
<%
pageContext.setAttribute("attr1", "aaaaaaaaaaaa");
pageContext.setAttribute("attr2", new Integer(213443));
pageContext.setAttribute("attr7", "ggggggggggggggggg");
request.setAttribute("attr3","bbbbbbbbbbbbb");
request.setAttribute("attr4", new Float(23.34));
request.setAttribute("attr5", "ffffffffffffff");
session.setAttribute("attr5", "cccccccccccccccc");
session.setAttribute("attr6", new Boolean(true));
session.setAttribute("attr7", "eeeeeeeeeeeeeeee");
application.setAttribute("attr7", "dddddddddddddddd");
application.setAttribute("attr8", new Byte((byte)12));
%>
<tag:tag9 />
</body>
</html>
结果:
page_scope:
javax.servlet.jsp.jspOut = [org.apache.jasper.runtime.JspWriterImpl] org.apache.jasper.runtime.JspWriterImpl@1dc64a5
javax.servlet.jsp.jspPage = [org.apache.jsp.tag9_jsp] org.apache.jsp.tag9_jsp@53c3f5
javax.servlet.jsp.jspSession = [org.apache.catalina.session.StandardSessionFacade] org.apache.catalina.session.StandardSessionFacade@166340c
attr7 = [java.lang.String] ggggggggggggggggg
attr2 = [java.lang.Integer] 213443
javax.servlet.jsp.jspApplication = [org.apache.catalina.core.ApplicationContextFacade] org.apache.catalina.core.ApplicationContextFacade@e33e18
javax.servlet.jsp.jspPageContext = [org.apache.jasper.runtime.PageContextImpl] org.apache.jasper.runtime.PageContextImpl@101ac93
javax.servlet.jsp.jspConfig = [org.apache.catalina.core.StandardWrapperFacade] org.apache.catalina.core.StandardWrapperFacade@e90943
attr1 = [java.lang.String] aaaaaaaaaaaa
javax.servlet.jsp.jspResponse = [org.apache.coyote.tomcat5.CoyoteResponseFacade] org.apache.coyote.tomcat5.CoyoteResponseFacade@15f1f9c
javax.servlet.jsp.jspRequest = [org.apache.coyote.tomcat5.CoyoteRequestFacade] org.apache.coyote.tomcat5.CoyoteRequestFacade@1474ea
request_scope:
attr5 = [java.lang.String] ffffffffffffff
attr4 = [java.lang.Float] 23.34
attr3 = [java.lang.String] bbbbbbbbbbbbb
session_scope:
attr7 = [java.lang.String] ggggggggggggggggg
attr5 = [java.lang.String] ffffffffffffff
attr6 = [java.lang.Boolean] true
application_scope:
org.apache.catalina.jsp_classpath = [java.lang.String] /K:/tomcat/webapps/tags/WEB-INF/classes/;K:/tomcat/shared/classes/;K:/tomcat/common/classes/;K:/tomcat/common/endorsed/xercesImpl.jar;K:/tomcat/common/endorsed/xml-apis.jar;K:/tomcat/common/lib/ant-launcher.jar;K:/tomcat/common/lib/ant.jar;K:/tomcat/common/lib/commons-collections-2.1.1.jar;K:/tomcat/common/lib/commons-dbcp-1.2.1.jar;K:/tomcat/common/lib/commons-el.jar;K:/tomcat/common/lib/commons-pool-1.2.jar;K:/tomcat/common/lib/jasper-compiler.jar;K:/tomcat/common/lib/jasper-runtime.jar;K:/tomcat/common/lib/jsp-api.jar;K:/tomcat/common/lib/naming-common.jar;K:/tomcat/common/lib/naming-factory.jar;K:/tomcat/common/lib/naming-java.jar;K:/tomcat/common/lib/naming-resources.jar;K:/tomcat/common/lib/servlet-api.jar;K:/tomcat/common/lib/j2ee.jar;K:/tomcat/common/lib/mysql-connector-java-3.0.15-ga-bin.jar;/K:/j2se/lib/tools.jar;/K:/tomcat/bin/bootstrap.jar;/K:/j2se/jre/lib/ext/dnsns.jar;/K:/j2se/jre/lib/ext/ldapsec.jar;/K:/j2se/jre/lib/ext/localedata.jar;/K:/j2se/jre/lib/ext/sunjce_provider.jar
javax.servlet.context.tempdir = [java.io.File] K:\tomcat\work\Catalina\localhost\tags
attr7 = [java.lang.String] ggggggggggggggggg
org.apache.catalina.resources = [org.apache.naming.resources.ProxyDirContext] org.apache.naming.resources.ProxyDirContext@107bd0d
attr8 = [java.lang.Byte] 12
org.apache.catalina.WELCOME_FILES = [[Ljava.lang.String;] [Ljava.lang.String;@10ca208
分析:
1、在page_scope和application_scope中保存有很多服务器预定义的Attribute。
2、对于PageContext的findAttribute()方法。它会从page_scope开始,依次寻找与key匹配的value值。如果不同scope中的key重名,较低scope中的attribute将覆盖较高scope中的对应值。
分享到:
相关推荐
正确的做法应该是从JSP页面或Servlet中直接访问`PageContext`,或者通过`RequestDispatcher`来转发或包含其他资源时间接访问`PageContext`。 ### 示例代码 尽管直接在普通Java类中获取`PageContext`并非易事,下面...
5. `pageContext`:提供对所有其他JSP对象的访问。 6. `out`:用于向响应输出流写入内容。 7. `config`:提供Servlet配置信息。 8. `exception`:捕获并处理页面的异常。 9. `page`:代表当前JSP页面的实例,通常是...
而用户自定义行为元素则是开发者根据需求自行创建的,它们通过标记库和TLD文件进行定义,并使用<jsp:taglib>指令引入到JSP页面中。 **自定义标记处理类** 自定义标记的核心是生成能够实现标记功能的方法,这些方法...
### jsp验证码——数字 #### 知识点详解 ##### JSP 验证码实现原理与过程 在本文档中,我们关注一个基于JavaServer Pages (JSP) 的数字验证码生成示例。此示例主要涉及到JSP页面的配置、Java图形处理库的使用以及...
- `pageContext`: 提供对JSP上下文的访问,可以获取所有其他内置对象。 - `page`: 指向当前JSP页面实例的引用。 - `exception`: 用于处理未捕获的异常。 4. **JSP表达式语言(EL)** - EL简化了JSP中的数据获取...
【JSP源码——中帆智能建站系统基础版JSP版_basic3.zip】是一个包含JSP源代码的压缩包,主要用于构建企业政府类网站。这个基础版的系统旨在提供一个快速、便捷的建站解决方案,它基于JavaServer Pages (JSP) 技术,...
`pageContext`对象,提供对整个JSP页面范围的访问等。 3. **HTML和CSS**:为了实现闪字效果,JSP页面通常会结合HTML和CSS。HTML用于构建页面结构,而CSS用于样式设计和动画效果。在闪字程序中,可能使用CSS的`@...
1. **初始化**:Web容器通过设置`pageContext`属性来初始化标记处理器。 2. **开始**:容器调用`doStartTag()`方法,标志着标记的开始。 3. **体内容处理**:对于处理内容体的标记,`doBody()`方法会被调用来处理...
《Java Web开发基础——从Servlet到JSP》是一本深入探讨Java Web开发的教程,主要涵盖了从基础的Servlet到高级的JSP技术。这个压缩包包含的源代码是该书教学内容的实践部分,旨在帮助读者更好地理解和应用所学知识。...
- pageContext:提供对其他JSP对象的访问。 - exception:捕获并处理异常。 5. JSP生命周期: - 加载:JSP文件被服务器读取并转换为Servlet源代码。 - 编译:源代码被编译成Java类(Servlet)。 - 初始化:...
EL是JSP 2.0引入的一种轻量级表达式语言,用于从JSP页面中检索JavaBean属性或JSP内置对象的值。 ### JSP标签 JSP标签提供了更清晰、可维护的代码结构,例如JSTL和自定义标签。它们可以替代脚本元素,提高代码的...
在学习JSP内置对象的过程中,阅读相关文档、实践案例以及参考博客(如《web学习笔记 —— jsp内置对象》)是非常有益的。不断实践和探索,将使你更好地理解和运用这些对象,从而在Web开发领域更加游刃有余。
PageContext对象为JSP页面提供了全局访问请求、响应以及页面范围内的属性的能力。在这个示例项目中,"jsp__demo2.zip"很可能是包含了一个或多个JSP文件,用于演示和学习PageContext的用法。 【描述】"JSP(5)_...
本教程“从零开始——JSP动态网页制作基础培训教程-源代码”旨在为初学者提供一个全面的学习路径,让你逐步掌握JSP的基础知识和实际应用。 **1. JSP基本结构与语法** JSP页面由静态内容(HTML、CSS、JavaScript)...
在JavaServer Pages (JSP) 开发中,${pageContext.request.contextPath} 是一个非常有用的表达式,它用于获取当前应用程序或项目的根路径。这个表达式是基于Java Servlet API的PageContext对象和HttpServletRequest...
通过以上介绍,你已经了解了JSP标记库的基本概念,以及如何创建和使用一个简单的自定义标签。在实际开发中,掌握好标记库的使用能大大提高JSP应用程序的质量和效率。希望这个教程对你有所帮助!
2. PageContext 对象的生命周期:PageContext 对象的生命周期与当前 JSP 页面的生命周期相同,它们都是在 JSP 页面被访问时创建的。 PageContext 对象是一个非常重要的对象,它提供了访问当前 JSP 页面的信息和资源...
JSP 程序设计的运行原理是当服务器上的一个 JSP 页面被第一次请求执行时,服务器上的 JSP 引擎将 JSP 页面文件转译成一个 Java 文件,再将这个 Java 文件编译生成字节码文件,然后通过执行字节码文件响应客户的请求...
Java开发指南——Servlets与JSP篇,是Java开发者深入理解Web应用开发的重要参考资料。Servlets和JSP(JavaServer Pages)是Java EE平台中用于构建动态网站的关键技术。Servlets是Java编程语言中的服务器端应用程序...
- `pageContext`:提供对当前JSP页面上下文的访问。 - `config`:服务器配置信息。 - `exception`:捕获到的异常对象。 - `page`:当前JSP页面的Java实例。 **5. JSP生命周期** JSP页面经历三个阶段:翻译、编译和...