开发者社区> 陈嘻嘻哈哈> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

JSP的九个隐式对象

简介: JSP使用脚本元素作为一种简易方法在模板数据中嵌入java代码,这些脚本元素在JSP翻译成Servlet的阶段,都被转化为Servlet中的java代码。 JSP引擎在调用JSP对应的_jspServlet时,会传递或创建9个与web开发相关的对象供_jspServlet使用。
+关注继续查看

JSP使用脚本元素作为一种简易方法在模板数据中嵌入java代码,这些脚本元素在JSP翻译成Servlet的阶段,都被转化为Servlet中的java代码。

JSP引擎在调用JSP对应的_jspServlet时,会传递或创建9个与web开发相关的对象供_jspServlet使用。JSP技术的设计者为便于开发人员在编写JSP页面时获得这些web对象的引用,特意定义了9个相应的变量,开发人员在JSP页面中通过这些变量就可以快速获得这9大对象的引用。

JSP翻译成Servlet代码都存在有:

 1  public void _jspService(HttpServletRequest request, HttpServletResponse response)
 2         throws java.io.IOException, ServletException {
 3 
 4     PageContext pageContext = null;
 5     HttpSession session = null;
 6     ServletContext application = null;
 7     ServletConfig config = null;
 8     JspWriter out = null;
 9     Object page = this;
10     JspWriter _jspx_out = null;
11     PageContext _jspx_page_context = null;
12     ......
13 }

在上面的代码中就存在九个隐式对象

对象名

描述

作用域

request

代表与请求相关的HttpServletRequest对象

request

response

代表与响应相关的HttpServletResponse对象

page

pageContext

代表封装请求某个JSP页面时请求环境的pageContext对象

page

session

代表特定用户请求会话的HttpSession对象。该对象只有在JSP页面参与一个HTTP会话时才有意义

session

application

代表Web应用程序的ServletContext对象

application

out

代表与响应输出流相关的JspWriter对象

page

config

代表JSP 页面的Servlet相关的ServletConfig对象

page

page

等于Java编程语言中的this变量

page

exception

代表JSP页面抛出的Trowable对象。这个对象只能在JSP错误页面中使用

page

request,response,session,application,config这些对象之前都讲过了的。还有out , page,pageContext没讲过!下面就主要介绍着三个对象。

一 out  对象

out对象是javax.servlet.jsp.JspWriter的实例,用于发送内容到响应中。JspWriter相当于一种带缓存功能的PrintWriter,设置JSP页面的page指令的buffer属性可以调整它的缓存大小。

只有向out对象中写入了内容,且满足如下任何一个条件时,out对象才去调用ServletResponse.getWriter方法,并通过该方法返回的PrintWriter对象将out对象的缓冲区中的内容真正写入到Servlet引擎提供的缓冲区中:

  • 设置page指令的buffer属性关闭了out对象的缓存功能
  • out对象的缓冲区已满
  • 整个JSP页面结束

out对象的使用方法,只要简单的调用out.print()或者out.println()方法即可。

 out对象的其他方法:

abstract void clear()
Clear the contents of the buffer.
abstract void clearBuffer()
Clears the current contents of the buffer.
abstract void close()
Close the stream, flushing it first.
abstract void flush()
Flush the stream.
int getBufferSize()
This method returns the size of the buffer used by the JspWriter.
abstract int getRemaining()
This method returns the number of unused bytes in the buffer.
boolean isAutoFlush()
This method indicates whether the JspWriter is autoFlushing.

示例:

 

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     
12     <title>out隐式对象演示</title>
13     
14     <meta http-equiv="pragma" content="no-cache">
15     <meta http-equiv="cache-control" content="no-cache">
16     <meta http-equiv="expires" content="0">    
17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
18     <meta http-equiv="description" content="This is my page">
19     <!--
20     <link rel="stylesheet" type="text/css" href="styles.css">
21     -->
22   </head>
23   
24   <body>
25    <%out.print("演示out隐式对象方法的使用"); %><br/>
26    <%int getBufferSize=out.getBufferSize();
27      int getRemaining=out.getRemaining();
28      out.print("当前缓冲区的大小:"+getBufferSize+"<br/>");
29      out.print("当前可使用的缓冲区大小:"+getRemaining+"<br/>");
30      /* out.clear();
31      out.close(); */
32     %>   
33   </body>
34 </html>
 

显示结果:

 

二  page  对象

page对象表示当前一个JSP页面,可以理解为一个对象本身,即:把一个JSP当作一个对象来看待。page对象在开发中几乎不用。

三  PageContext 对象

PageContext 是javax.servlet.jsp.PageContext 的实例。pageContext对象是JSP技术中最重要的一个对象,它代表JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的引用,它自身还是一个域对象(容器),可以用来保存数据。他有三个主要的功能

3.1 用它可以存取其他的隐式对象;

3.2 用它可以对四个作用域空间进行数据的存取;

3.3 可以用它进行页面的转发和包含。

PageContext 对象中用于存取其他隐式对象的方法:

abstract Exception getException()
The current value of the exception object (an Exception).
abstract Object getPage()
The current value of the page object (In a Servlet environment, this is an instance of javax.servlet.Servlet).
abstract ServletRequest getRequest()
The current value of the request object (a ServletRequest).
abstract ServletResponse getResponse()
The current value of the response object (a ServletResponse).
abstract ServletConfig getServletConfig()
The ServletConfig instance.
abstract ServletContext getServletContext()
The ServletContext instance.
abstract HttpSession getSession()
The current value of the session object (an HttpSession).

PageContext 对象中用于对作用域空间进行数据存取的方法:

1 public void setAttribute(java.lang.String name,java.lang.Object value)
2 public java.lang.Object getAttribute(java.lang.String name)
3 public void removeAttribute(java.lang.String name)
4 public java.lang.Object findAttribute(java.lang.String name)

PageContext 类提供了四个常量,用来表示四个作用域的范围:

PAGE_SCOPE 表示存储在PageContext 对象中,只在当前页面有效。

REQUEST_SCOPE 表示存储在request对象中,在request作用域有效。

SESSION_SCOPE 表示存储在session对象中,在session作用域有效。

APPLICATION_SCOPE 表示存储在application对象中,在application作用域有效。

 

PageContext引入和跳转到其他资源

PageContext类中定义了一个forward方法(用来跳转页面)和两个include方法(用来引入页面)来分别简化和替代RequestDispatcher.forward方法和include方法。
  方法接收的资源如果以“/”开头, “/”代表当前web应用。

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
java创建对象的过程详解(从内存角度分析)
java对象的创建操作其实我在《JVM系列之类的加载机制》一文曾经提到过,包含两个过程:类的初始化和实例化。
44 0
js 实现 bind 的这五层,你在第几层?
js 实现 bind 的这五层,你在第几层?
29 0
前端培训-中级阶段(4)- BOM浏览器对象模型(2019-07-04期)
前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。 前面我们已经基本掌握常规的语法语义,以及基本的使用方法。接下来我们讲深入进去了解其中内在的原理。 上一节,我们聊了聊 BOM对象。这节我们来了解一下 BOM对象(浏览器对象)。 BOM对象其实就是我们的 window对象
15 0
json的使用 前后台统一以对象的方式编程 (转)
前台插件的介绍 jquery.json 插件{jQuery插件} 主要方法: $.toJSON(json对象): 将json对象转化为字符串 $.evalJSON(str): 将字符串转化为json对象 插件下载: jquery.
978 0
+关注
陈嘻嘻哈哈
我是一个小小的程序媛!
241
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载