在JSP页面的转换阶段,容器在_jspService()方法中申明并初始化一些变量,可以在JSP页面小脚本中或表达式中直接使用这些变量。

一、JSP页面中可使用的隐含变量

1、applicationjavax.servlet.ServletContext接口引用WEB应用程序的上下文

2、sessionjavax.servlet.http.HttpSession接口引用用户会话

3、requestjavax.servlet.http.HttpServletRequest接口引用页面的当前请求对象

4、responsejavax.servlet.http.HttpServletResponse接口引用向客户发送的一个响应

5、outjavax.servlet.jsp.JspWriter类引用页面输出流

6、pagejava.lang.Object类引用页面的Servlet实例

7、pageContextjavax.servlet.jsp.PageContext类引用页面上下文

8、configjavax.servlet.Servletconfig接口引用Servlet的配置对象

9、exceptionjava.lang.Throwable类用来处理错误

下面的是JSP页面转换成Servlet中的部内容:

...

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

...其他代码

PageContext pageContext = null;

HttpSession session = null;

ServletContext application= null;

ServletConfig config= null;

JspWriter out = null;

Object page = this;

...创建有关对象的代码

pageContext = _jspFactoty.getPageContext(this,request,response,null,ture,8192,true);

session = pageContext.getSession();

application = pageContext.getServletContext();

config = pageContext.getServletConfig();

out = pageContext.getOut();

...其他代码

}

可以看到在_jspService方法中申明了8个变量(加粗字体表示的)。如果一个也I安是错误处理页面的,即页面中包含下面的page指令:

<%@ page isErrorPage="true" %>

则页面实现类中将自动申明一个exception隐含变量,如下:

Throwable exception = (Throwable) request.getAttribute("javax.servlet.jsp.jspException");

二、各隐含变量讲解

1、request与response变量

request与response分别对应HttpServletRequest和HttpServletResponse类型的隐含变量,当页面的Servlet向客户端提供服务时,他们作为参数传递给_jspService()方法。在jsp页面中他们与在servlet中使用完全一样,即用来分析请求和发送响应。

例如:

<% String remoteAddr = request.getRemoteAddr();

response.setContextType("text/html,charset=ISO-8859-1");

%>

<html><body>

Hi,Your IP address is <%=remoteAddr%>

</body></html>

2、out变量

out是javax.servlet.jsp.JspWriter类型的隐含变量,JspWriter类扩展了java.io.writer并继承了所有重载的write()方法。在此基础上,还增加了其自己的一组print()和println()方法来打印输出所有的基本数据类型、字符串以及用户定义的对象。可以在小脚本中直接使用它,也可以在表达式中间间接使用它产生HTML代码。

例如:

<% out.print("Hello World!"; %>

<%= "Hello User" %>

3、application变量

application是javax.servlet.ServletContext类型的隐含变量,它是JSP页面所在的Web应用程序的上下文的引用。

例如下面两个是等价的:

<% String path = application.getRealPath("/WEB-INF/counter.db");

application.log("Using:"+path);

%>

<% String path = getServletContext().getRealPath("/WEB-INF/counter.db");

getServletContext().log("Using:"+path);

%>

4、session变量

session是javax.servlet.http.HttpSession类型的隐含变量,它在JSP页面中表示会话对象。要使用会话对象,必须要求JSP页面参加Http会话,即要求将JSP页面的page指令的session属性值设置为true。

如果page指令的session属性设置为true,那么在页面转换的类中就会申明一个session隐含变量。由于默认情况下,session属性的值为true,所以即使没有指定page指令,该变量也会被申明并可以使用。然而,如果明确将session属性设置为false,容器将不会申明改变量,对该变量的使用将产生错误。

例如;

<%@ page session="false" %>

<html><body>

会话ID=<%=session.getId()%>

</body></html>

5、pageContext是javax.servlet.jsp.PageContext类型的隐含变量,它是一个页面上下文对象。PageContext类是一个抽象类,容器厂商提供了一个具体子类(如jspContext),它有三个作用:

(1)、存储隐含对象的引用。pageContext对象是作为管理所有在JSp页面中使用的其他对象的一个地方,包括用户定义的和隐含的对象,并且它提供了一个访问方法来检索他们。session、application、config、out这些隐含变量都是调用pageContext对象的相应方法得到的。

(2)、提供了在不同作用域内返回或设置属性的方便的方法。

(3)、提供了forward()方法和include()方法实现将请求转发到另一个资源和将一个资源的输出包含到当前页面中的功能,它们的格式如下:

1)、public void include(String relativeURL)将另一个资源的输出包含在当前页面的输出中,与RequestDispatcher()接口的include()方法功能类似。

2)、public void forward(String relativeURL)将请求转发到参数指定的资源,与RequestDispatcher接口中的forward()方法功能相同。

例如:

RequestDispatcher view = request.getRequestDispatcher("index.html");

view.forward(request,response);

或者

pageContext.forward("index.html");

6、page变量

page变量是java.lang.Object类型的对象,申明如下:

Object page = this;

它指生成的servlet实例,该变量较少适用。

7、config变量

config是javax.servlet.ServletConfig类型的银行变量。可以在JSp页面传递一组初始化参数,这些参数可以在JSp页面中使用config隐含变量来检索。

例如:

<html><body>

Servlet Name = <%= config.getServletName() %><br>

Email Address = <%=config.getInitParameter("email") %>

</body></html>

8、exception变量

exception是java.lang.Throwable类型的隐含变量,它被用来作为其他页面的错误处理器。为使页面能够使用exception变量,必须在页面的page指令中将isErrorPage的属性值为true。

例如:

<%@ page isErrorPage='true' %>

<html><body>

页面发生了下面的错误:<%= exception.toString() %>

</body></html>

出处:http://write.blog.csdn.net/postedit/9624413 作者:伫望碧落

转载于:https://www.cnblogs.com/jiangu66/p/3228840.html

JSP技术模型(五)JSP隐含变量相关推荐

  1. java技术及ssh框架和jsp技术的介绍 外文文献及翻译_外文翻译 java技术及ssh框架和jsp技术的介绍 jsp程序.docx...

    外文翻译 java技术及ssh框架和jsp技术的介绍 jsp程序.docx 未苹炽浑餐胚北止提妹抑知苦芦绎斩军档阮磊记在千充浑鱼判餐趾北蜘刷知宠仑涩雍柱诡卞翼前细鞍音裤冯站投凝烟葬舜技绪秽崇踊鞋雍膊庸 ...

  2. Servlet笔记四(JSP技术)

    本栏博客目录 Serlvet笔记一(Servlet基础) Servlet笔记二(请求和响应) Servlet笔记三(会话及其会话技术) Servlet笔记四(JSP技术) Servlet笔记五(EL表 ...

  3. 基于JSP技术进行信息交互的研究与应用

    首页 | 最新栏目 | 关于我们 | 读者园地 | 联系我们 基于JSP技术进行信息交互的研究与应用       摘  要  从信息交互的方式着手,结合开发项目中遇到的实际问题,本文总体上将JSP动态 ...

  4. JSP 技术(一)--简述

    在动态web项目的开发中,经常需要动态生成HTML内容(如系统中的当前在线人数需要动态生成).如果使用Servlet实现HTML页面数据的统计,则需要使用大量的输出语句.同时,如果静态内容和动态内容混 ...

  5. JSP隐含变量和Spring中Model在EL表达式中的读取顺序

    偶然中存在着必然,必然中存在着偶然 偶然出现的bug,必然存是由代码的不合理甚至错误的 代码逻辑越长,越复杂,就越容易出现bug 之前项目里几次偶然出现了一个bug,简单的描述就是第一次新增了之后进行 ...

  6. JavaBean 技术与 JSP 开发模型练习题

    <JavaBean 技术与 JSP 开发模型练习题> 文章目录 单选题 多选题 判断题 填空题 JavaBean 技术与 JSP 开发模型 单选题 1. JSP Model2模型就是MVC ...

  7. JAVA-SUST实验一 JSP技术及JSP语法基础

    一.实验目的 1 了解MyEclipse 开发环境的构成 2 掌握MyEclipse 下JAVA EE开发环境的设置 3 掌握JSP技术及JSP语法的基础内容 二.实验内容 1.测试简单 jsp 文件 ...

  8. 【JSP教科书】JSP知识在线指南(记录知识JSP体系、EL表达式、JSTL标签库、JSP开发模型和分页查询)

    文章目录 @[toc] 一.JSP简介 1.1 什么是JSP? 1.2 JSP的特点 1.3 JSP为什么也是Servlet 1.4 tomact服务器中的资源分析 1.4.1 tomact服务器中的 ...

  9. Java Web(五) JSP详解(四大作用域九大内置对象等)

    前面讲解了Servlet,了解了Servlet的继承结构,生命周期等,并且在其中的ServletConfig和ServletContext对象有了一些比较详细的了解,但是我们会发现在Servlet中编 ...

最新文章

  1. 2022-2028年中国免疫诊断行业市场前瞻与投资战略规划分析报告
  2. tag标签[置顶] 高级NFC
  3. T-SQL 聚合函数Count与NULL
  4. linux下vsftp
  5. 6.TMG2010公网发布
  6. Airbnb上市,又一批工程师财富自由:入职一年就能北京买房
  7. intellij运行多个工程
  8. 英语不会读怎么办?它来教你……
  9. Ansible结合跳板机控制远程服务器
  10. 第二十九章:学校招生
  11. 你为什么要学习WordPress?
  12. Linux协议栈:基于ping流程窥探Linux网络子系统,及常用优化方法
  13. 零基础带你学习MySQL—数学函数(十四)
  14. 简单说说JAVA的String和byte[]的关系
  15. Qt总结之十九:Qt中控件new之后需不需要delete的问题
  16. matlab2c使用c++实现matlab函数系列教程-det函数
  17. JavaScript如何获取css属性
  18. 7-7 旅游规划 (25 分)
  19. win10 开机启动_win10 -- 取消不需要的开机启动项和服务项加快win10系统开机速度...
  20. spark提交任务的两种的方法

热门文章

  1. 要啥网·商信:一款让所有商业活动一步跨入移动互联时代的APP
  2. 从MapX到MapXtreme2004[4]-标注AutoLabel
  3. java和硬件交互_Java内存模型
  4. emacs 剪切板_将Emacs用作RPG仪表板的5种方法
  5. vim使用zsh_使用zsh,坚固的DevOps工具,Python库,vim,shell dotfile,Linux命令等来提高生产力
  6. (3)JavaScript 的注释
  7. webapi输出炜json_webapi转化为json格式
  8. ubuntu 12安装oracle,Ubuntu12.04(32位)安装Oracle 11g(32位)全过程
  9. 计算机数学渤海船舶职业学院,渤海船舶职业学院2020年高职扩招录取原则
  10. asp html转义字符串,asp.net – 转义HTML实体并避免WebForm标签中的HTML注入?