`

JSP脚本中的九大内置对象详解(上)

 
阅读更多

原理:我们都知道,jsp在第一次被请求时会被编译成servlet,实际上是由该servlet来处理用户请求。

了解了上述内容,我们再来说说九大内置对象的实质。它们都是Servlet API中接口的实例,在jsp编译成servlet时进行了默认初始化,所以我们才能在jsp脚本中直接使用它们。

直接上代码:

public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws java.io.IOException, ServletException {

PageContext pageContext = null;
HttpSession session = null;
ServletContext application = null;
ServletConfig config = null;
JspWriter out = null;
Object page = this;
JspWriter _jspx_out = null;
PageContext _jspx_page_context = null;


try {
response.setContentType("text/html; charset=GBK");
pageContext = _jspxFactory.getPageContext(this, request, response,
"error.jsp", true, 8192, true);
_jspx_page_context = pageContext;
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
_jspx_out = out;

out.write("\r\n");
out.write("\r\n");
out.write("<!doctype html>\r\n");
out.write("<html>\r\n");
out.write("\t<head>\r\n");
out.write("\t\t<title>webDEMO欢迎您</title>\r\n");
out.write("\t</head>\r\n");
out.write("\t<body>\r\n");
out.write("\t\t");
out.write("\r\n");
out.write("\t\t");
out.write("\r\n");
out.write("\t\t<!-- html注释 -->\r\n");
out.write("\t\t<p>webDEMO欢迎您");
new Date();//从这里可以看出,jsp脚本中的内容会编译进该处理方法中
out.write("<br/>");
out.print((++count) );
out.write("<br/>");
out.print(info() );
out.write("<br/>");
out.print(getServletInfo() );
out.write("</p>\r\n");
out.write("\t\t");

String name = config.getInitParameter("name");//int a=1/0;

out.write("\r\n");
out.write("\t\t");
out.print(name );
out.write("\r\n");
out.write("\t</body>\r\n");
out.write("</html>");
} catch (Throwable t) {
if (!(t instanceof SkipPageException)){
out = _jspx_out;
if (out != null && out.getBufferSize() != 0)
try { out.clearBuffer(); } catch (java.io.IOException e) {}
if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
}
} finally {
_jspxFactory.releasePageContext(_jspx_page_context);
}
}

每一个jsp编译成的servlet中都有这一段,看红色标注部分,应该能理解为啥能在jsp脚本中直接使用这九大内置对象了吧。还有一点需要注意,这里只初始化了八个内置对象,对于exception,当我们在jsp中指定其isErrorPage=“true”时,才能看到其初始化的代码。

分享到:
评论

相关推荐

    韩顺平2013版“细说JSP”视频教程

    动作元素【】第4讲.jsp九大内置对象.jsp版本计算器①【】第5讲.jsp版本计算器②[ED2000.COM]【】第6讲.jsp版本计算器③【】第7讲.model 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很多例子都是目前web开发中经常使用的功能,具有相当的实用价值。本书不仅可以作为java web开发的学习用书,还可以作为从事java web开发的...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很多例子都是目前web开发中经常使用的功能,具有相当的实用价值。本书不仅可以作为java web开发的学习用书,还可以作为从事java web开发的...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很多例子都是目前web开发中经常使用的功能,具有相当的实用价值。本书不仅可以作为java web开发的学习用书,还可以作为从事java web开发的...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    本书语言生动、通俗易懂、讲解细致,大部分章节都提供了多个例子,而且很多例子都是目前web开发中经常使用的功能,具有相当的实用价值。本书不仅可以作为java web开发的学习用书,还可以作为从事java web开发的...

    J2EE应用开发详解

    JSP技术 67 5.1 JSP简介 67 5.2 JSP页面的结构 68 5.3 脚本元素 68 5.3.1 Scriptlet元素 69 5.3.2 Expression元素 69 5.3.3 Declaration元素 70 5.4 指令 73 5.4.1 page指令 73 5.4.2 include指令 75 5.5 动作 76 ...

    Java开发技术大全 电子版

    13.6.2时间格式转换符详解415 13.6.3格式说明符语法图417 13.7正则表达式417 13.7.1正则表达式的作用418 13.7.2正则表达式的基本规则418 13.7.3正则表达式中的一些高级规则421 13.7.4正则表达式中的其他通用...

    Java Web程序设计教程

    3.2.8jsp的内置对象 43 3.3认识servlet 46 3.3.1servlet的开发 46 3.3.2使用httpservlet 47 3.3.3servlet的生命周期 49 3.3.4load-on-startupservlet 50 3.4自定义标签库 51 3.5预处理用户请求:filter 53 ...

    Spring中文帮助文档

    2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. IoC(控制反转)...

    IBM WebSphere Portal门户开发笔记01

    40、JS内置对象属性及方法大全 312 41、JS REGEX示例 319 42、CSS鼠标样式 319 43、IFRAME WINDOW、DOCUMENT获取与其他 320 44、CSS Z-INDEX 取值范围 320 45、CSS背景图片与内容放大与缩小时相对定位 321 46、JS ...

    Spring-Reference_zh_CN(Spring中文参考手册)

    3.3.3. bean属性及构造器参数详解 3.3.3.1. 直接量(基本类型、Strings类型等。) 3.3.3.2. 引用其它的bean(协作者) 3.3.3.3. 内部bean 3.3.3.4. 集合 3.3.3.5. Nulls 3.3.3.6. XML-based configuration metadata ...

    spring chm文档

    3.3.3. bean属性及构造器参数详解 3.3.4. 使用depends-on 3.3.5. 延迟初始化bean 3.3.6. 自动装配(autowire)协作者 3.3.7. 依赖检查 3.3.8. 方法注入 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. ...

    Spring API

    2.6.4. 将Spring 应用程序上下文部署为JCA adapter 2.6.5. 计划任务 2.6.6. 对Java 5 (Tiger) 支持 2.7. 移植到Spring 2.5 2.7.1. 改变 2.8. 更新的样例应用 2.9. 改进的文档 I. 核心技术 3. IoC(控制反转)...

    Spring 2.0 开发参考手册

    3.3.3. bean属性及构造器参数详解 3.3.4. 使用depends-on 3.3.5. 延迟初始化bean 3.3.6. 自动装配(autowire)协作者 3.3.7. 依赖检查 3.3.8. 方法注入 3.4. bean的作用域 3.4.1. Singleton作用域 3.4.2. ...

Global site tag (gtag.js) - Google Analytics