JSP隐式对象
js隐式转换规则
![js隐式转换规则](https://img.taocdn.com/s3/m/2f8173f60d22590102020740be1e650e52eacfe6.png)
js隐式转换规则
JavaScript中存在隐式转换,即在运算过程中自动将一种类型转换成另一种类型。
以下是一些常见的隐式转换规则:
1. 字符串和数字相加时,数字会被转换成字符串:
console.log("Hello " + 42); "Hello 42"
2. 字符串和布尔值相加时,布尔值会被转换成字符串:
console.log("Hello " + true); "Hello true"
3. 数字和布尔值相加时,布尔值会被转换成数字(true为1,false为0):console.log(42 + true); 43
4. 对象和原始类型相加时,原始类型会被转换成字符串:
console.log(42 + {}); "42[object Object]"
5. 当比较两个不同类型的值时,JavaScript会尝试将它们转换成同一类型进行比较:
console.log(42 == "42"); true
6. 执行逻辑运算时,非布尔值类型会被转换成布尔值。
以下是一些“假值”,它们会被转换成false:
- undefined
- null
- 0
- NaN
- "" (空字符串)
if (0) {
console.log("foo"); not executed
}
总之,隐式转换可以简化代码,并且使得代码更加灵活,但它也可能导致一些意外的结果。
因此,在编写代码时,应该小心处理类型转换。
jsp期末试题及答案
![jsp期末试题及答案](https://img.taocdn.com/s3/m/ceaa1d8dc0c708a1284ac850ad02de80d5d80677.png)
jsp期末试题及答案一、选择题(每题2分,共20分)1. 在JSP中,以下哪个不是JSP内置对象?A. requestB. responseC. sessionD. database答案:D2. JSP页面的默认内容类型是什么?A. text/htmlB. application/xmlC. text/plainD. application/json答案:A3. 以下哪个不是JSP表达式的语法?A. <%= expression %>B. <% expression %>C. <%@ expression %>D. <%! declaration %>答案:C4. 在JSP中,以下哪个标签用于包含其他JSP页面?A. <jsp:include>B. <jsp:forward>C. <jsp:param>D. <jsp:useBean>答案:A5. Servlet是JSP的基础,以下哪个不是Servlet的生命周期方法?A. init()B. service()C. doGet()D. destroy()答案:C6. JSP页面的注释有几种?A. 1种B. 2种C. 3种D. 4种答案:B7. 以下哪个不是JSP的指令标签?A. <%@ page %>B. <%@ include %>C. <%@ taglib %>D. <%@ directive %>答案:D8. 在JSP中,以下哪个不是标准的自定义标签库?A. JSTLB. JSFC. ELD. Struts答案:D9. 在JSP中,以下哪个不是JSP的隐式对象?A. outB. configC. applicationD. response答案:B10. JSP页面的输出编码默认是什么?A. ISO-8859-1B. UTF-8C. GBKD. ASCII答案:A二、判断题(每题1分,共10分)1. JSP页面最终会被转换成Servlet。
JSP经典笔试题目(含答案)
![JSP经典笔试题目(含答案)](https://img.taocdn.com/s3/m/f43f5727866fb84ae45c8d7e.png)
JSP综合测试笔试1)在Java EE中,Servlet是在服务器端运行,以处理客户端请求而做出的响应的程序,下列选项中属于Servlet生命周期阶段的是()A.加载和实例化B.初始化C.服务D.销毁E.以上全部2)在Java EE中的MVC设计模式中,()负责接受客户端的请求数据A.JavaBeanB.JSPC.ServletD.HTML3)过滤器应实现的接口是( )。
A. HttpServletB. HttpFilterC. ServletFilterD. Filter4)开发Java Web应用程序的时候,创建一个Servlet,该Servlet重写了父类的doGet()和doPost()方法,那么其父类可能是()A.RequestDispatcherB.HttpServletResponseC.HttpServletRequestD.HttpServlet5)在Java Web开发中,如果某个数据需要跨多个请求存在,则数据应该存储在()中A.sessionB.pageC.requestD.Response6)在开发Java Web应用程序的时候,HTTP请求消息使用Get或POET方法以便在WEB上传输数据,下列关于GET和POST 方法描述正确的是()A.POST请求的数据在地址栏不可见B.GET请求提交的数据在理论上没有长度限制C.POST请求对发送的数据的长度限制在240——255个字符D.GET请求提交数据更加安全7)在JSP中有EL表达式${10*10 ne 10},结果是( )A.100B. trueC. fasleD. 以上都不对8)JSTL标签的分类以下说法正确的是( )A. 通用标签与迭代标签B. 核心标签与迭代标签C. 核心标签与sql标签D. 以上都不是9)在Java Servlet API中,HttpServletRequest接口的()方法用于返回当前请求相关联的会话,如果没有,返回nullA.getSession() //=gerSession(true)默认为:getSession(true)B.getSession(true)C.getSession(false)D.getSession(null)10)在Java Web开发中,不同的客户端需要共享数据,则数据应该存储在()中A.sessionB.applicationC.requestD.response11)利用三层结构搭建某网上书店系统,设计用户登陆界面,如果你是设计人员,你将在三层结构的()中实现A.模型层B.表示层C.数据访问层D.业务逻辑层12)在Java EE中,()接口定义了getSession()方法A.httpServletB.HttpSessionC.HttpServletRequestD.HttpServletResponse13)JSP标准标签库(JSTL)提供的主要标签库中,其中()可用于操作数据库。
JSP 隐含对象
![JSP 隐含对象](https://img.taocdn.com/s3/m/377b58791711cc7931b71668.png)
数据类型则要进行对象数据类型的转换。如整数1,则转换为 new Integer(1); •获得属性 – 当我们使用getAttribute(String name)取得name 属性的值时, 它返回一个ng.Object类型的对象,因此,还必须根据 name 属性值的类型进行类型转换 (Casting)工作。 – 例如,如果要取得String 类型的Name 属性时: String userName = (String)pageContext.getAttribute(“userName”); 或者String userName = pageContext.getAttribute(“userName”).toString();
• 3 、JSP中的隐含对象
• 4、错误处理
3 Sept. 2008 Confidential
JSP中隐含对象的概念
一. 什么是JSP的隐藏对象 二. JSP中有哪些隐藏对象
3 Sept. 2008 Confidential
JSP隐藏对象的由来
下面是一个普通的jsp页面文件helloworld.jsp
对当前JSP页面的引用,即 Java中的this
JSP页面的ServletConfig对象 响应信息 JSP的数据输出对象 异常处理
3 Sept. 2008 Confidential
主要内容
• 1 、JSP中隐含对象的定义 • 2 、属性(Attribute) 与范围
• 3 、JSP中的隐含对象
• 4、错误处理
Object getAttribute(String name)
void removeAttribute(String name)
取得name属性的值
删除名称为name的属性
北大青鸟-JSP教程 (7)
![北大青鸟-JSP教程 (7)](https://img.taocdn.com/s3/m/44b29b4e852458fb770b5663.png)
Request Session
Application
Bean 在整个应用程序中均可使用
17
ACCP V4.0
<jsp:setProperty>动作
<jsp:setProperty>动作和<jsp:useBean>一起使用,使用 Bean中的setXXX()方法设置JavaBean的简单属性和索 引属性。 <jsp:setProperty>元素各属性含义 name Bean实例的名字,必须是<jsp:useBean>中通过 id属性指定的名字
8
ACCP V4.0
属性的命名约定-续
get/set 命名方式有一个例外。那就是对于 boolean类型的属性,应该使用is/set命名方法, 也可以使用get/set方法 例子:
private boolean married public boolean isMarried() public void setMarried()
value
19
ACCP V4.0
<jsp:getProperty>动作
用来访问一个Bean的属性,并把属性的值转化成 一个String,然后发送到输出流中。如果属性是一 个对象,将调用该对象的toString()方法 <jsp:getProperty>动作元素的属性有name, property和<jsp:setProperty>中的相同
22
ACCP V4.0
<jsp:forward>动作
23
ACCP V4.0
Forward 动作 3-2
创建一个 JSP 页面 使用 forward 动作转发用户的请求 <html> <head> <title> 转发此页面 </title> </head> <body> <jsp:forward page="requestedpage.jsp"/> </body> </html>
jsp测试题及答案
![jsp测试题及答案](https://img.taocdn.com/s3/m/b74bb749e3bd960590c69ec3d5bbfd0a7856d55d.png)
jsp测试题及答案一、单选题(每题2分,共10分)1. JSP页面中,用于声明变量、方法等的指令是:A. `<%@ page %>`B. `<%@ include %>`C. `<%! ... %> `D. `<% ... %>`答案:C2. JSP中,以下哪个对象用于获取客户端请求信息?A. requestB. responseC. sessionD. application答案:A3. 在JSP页面中,以下哪个元素用于包含其他JSP页面?A. `<jsp:forward page="other.jsp" />`B. `<jsp:include page="other.jsp" />`C. `<%@include file="other.jsp"%>`D. `<%@ page import="other.jsp" %>`答案:B4. JSP页面中,以下哪个指令用于设置页面的默认内容类型和编码?A. `<%@ page contentType="text/html; charset=UTF-8" %>`B. `<%@ page import="java.io.*" %>`C. `<%@ page session="true" %>`D. `<%@ page language="java" %>答案:A5. 在JSP中,以下哪个对象用于向客户端发送响应?A. requestB. responseC. sessionD. application答案:B二、多选题(每题3分,共15分)1. JSP页面中,以下哪些指令用于控制页面的属性?A. `<%@ page %>`B. `<%@ include %>`C. `<%@ taglib %>`D. `<%@ page import %>`E. `<%@ page session="true" %>`答案:A, C, D, E2. 在JSP页面中,以下哪些对象是隐式对象?A. requestB. responseC. outD. sessionE. application答案:A, B, C, D, E3. JSP页面中,以下哪些指令用于导入Java类或包?A. `<%@ page import="java.util.*" %>`B. `<%@ page contentType="text/html; charset=UTF-8" %>`C. `<%@ page session="true" %>`D. `<%@ include file="other.jsp" %>`E. `<%@ page language="java" %>`答案:A, E4. 在JSP页面中,以下哪些元素用于条件判断?A. `<% if (condition) { %> ... <% } %>`B. `<%@ if (condition) { %> ... <%@ } %>`C. `<% while (condition) { %> ... <% } %>`D. `<% for (int i = 0; i < 10; i++) { %> ... <% } %>`E. `<%@ for (int i = 0; i < 10; i++) { %> ... <%@ } %>` 答案:A, C, D5. JSP页面中,以下哪些对象用于会话管理?A. requestB. responseC. sessionD. applicationE. out答案:C, D三、简答题(每题5分,共20分)1. 简述JSP页面的生命周期。
隐式对象简介
![隐式对象简介](https://img.taocdn.com/s3/m/4fe78320aaea998fcc220e38.png)
JSP隐式对象简介一、out对象:在JSP页面中应使用out隐式对象来向客户端发送文本形式的实体内容。
out 对象是通过调用pageContext对象的getOut方法返回的,其作用及用法与ServletResponse.getWriter方法返回的PrintWriter对象非常相似,但两者是两种不同类型的对象。
JSP页面中的out隐式对象的类型为JspWriter,它相当于一种带有缓存功能的PrintWriter,设置JSP页面的page指令的buffer属性可调整它的缓存大小,甚至关闭它的缓存。
只有向out隐式对象中写入了内容,且满足如下任何一个条件时,out对象才去调用ServletResponse.getWriter方法,并通过该方法返回的PrintWriter 对象将out对象的缓冲区中的内容真正写入到Servlet引擎提供的缓冲区中: 设置page指令的buffer属性关闭了out对象的缓存功能写入到out对象中的内容充满了out对象的缓冲区整个JSP页面结束JSP页面的out隐式对象中的缓冲区与Servlet引擎提供了缓冲区之间的工作关系如图所示:注:JSP规范禁止在JSP页面中直接调用ServletResponse.getWriter返回PrintWriter对象和调用ServletResponse.getOutputStream返回ServletOutputStream对象。
这是为了避免输出时发生异常。
(具体原因略…)二、pageContext对象:pageContext对象是javax.servlet.jsp.PageContext类的实例对象,它封装了当前JSP 页面的运行信息,它提供了返回JSP页面的其他隐式对象的方法。
pageContext对象是通过调用JspFactory.getPageContext方法返回的,getPageContext方法的完整语法如下:public PageContext getPageContextI(javax.servlet.Servlet servlet, ------代表当前JSP页面所翻译成的Servletjavax.servlet.ServletRequest request, ------当前请求对象javax.servlet.ServletResponse response, -----当前响应对象ng.String errorPageURL, ------错误处理页面boolean needsSession, -------是否创建Session对象int buffer, --------out对象的缓冲区大小boolean autoFlush ------- 缓冲区已满时是否自动刷新)如果一个JSP页面调用一个普通Java类,而这个普通Java类要访问JSP页面中的多个隐式对象,由于pageContext对象封装了其他的隐式对象并提供了返回这些隐式对象的方法,所以在JSP页面中只需要将pageContext对象传递给那个普通Java类,在那个普通Java类中就可以访问和调用其他隐式对象的功能了。
javaweb机试题及答案
![javaweb机试题及答案](https://img.taocdn.com/s3/m/7925203324c52cc58bd63186bceb19e8b8f6ece2.png)
javaweb机试题及答案一、单选题1. 在Java Web开发中,以下哪个不是Servlet的生命周期方法?A. init()B. service()C. destroy()D. start()答案:D2. 下列哪个不是JSP的隐式对象?A. requestB. responseC. sessionD. out答案:B3. 在Java Web中,以下哪个不是HTTP请求方法?A. GETB. POSTC. PUTD. DELETE答案:C二、多选题1. 以下哪些是Java Web开发中常用的会话管理技术?A. CookieB. URL重写C. HttpSessionD. 隐藏表单字段答案:A, B, C, D2. 在Java Web应用中,以下哪些可以作为过滤器(Filter)的用途?A. 日志记录B. 权限检查C. 请求修改D. 响应修改答案:A, B, C, D三、简答题1. 简述Java Web中使用Servlet的步骤。
答案:使用Servlet的步骤通常包括:- 创建一个继承自javax.servlet.http.HttpServlet的类。
- 重写doGet()或doPost()方法来处理客户端的请求。
- 在web.xml中配置Servlet映射。
- 启动Web服务器,访问Servlet。
2. 描述JSP页面的生命周期。
答案:JSP页面的生命周期包括:- 翻译:JSP页面被翻译成Servlet源代码。
- 编译:Servlet源代码被编译成class文件。
- 初始化:Servlet实例化并调用init()方法。
- 服务:调用service()方法来处理请求并生成响应。
- 销毁:调用destroy()方法,然后Servlet实例被垃圾回收。
四、编程题1. 编写一个简单的Servlet,用于返回当前日期和时间。
答案:```javaimport java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class DateTimeServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<html><body>");out.println("<p>当前日期和时间是:" + new java.util.Date() + "</p>");out.println("</body></html>");}}```2. 编写一个JSP页面,用于显示用户提交的表单数据。
jsp题库及参考答案
![jsp题库及参考答案](https://img.taocdn.com/s3/m/cc2dfc2b0242a8956bece4d6.png)
选择题:1)下面对Http请求消息使用GET和POST方法陈述正确的是:(单选)(C)A POST方法提交信息可以保存为书签,而GET则不行B 可以使用GET方法提交敏感数据C 使用POST提交数据量没有限制D 使用POST方法提交数据比GET方法快2)Web应用程序打包后的扩展名是:(单选)(B)A EARB WARC JARD RAR3)下面关于Servlet的陈述正确的是:(多选)(BC)A 我们在浏览器的地址栏直接输入要请求的Servlet,该Servlet默认会使用doPost方法处理请求B Servlet运行在服务器端C Servlet的生命周期包括:实例化,初始化,服务,破坏,不可以用D Servlet不能向浏览器发送Html标签4)在Web应用程序中web.xml配置了Servlet的信息,如果你的项目为LoginDemo,那么web.xml最可能位于哪个目录下。
(单选)(D)A LoginDemo/B LoginDemo/src/C LoginDemo/logindemo/WEB-INF/bin/D LoginDemo/logindemo/WEB-INF/5)下面说法错误的是:(多选)(CD)A Http协议是无状态的协议B 会话跟踪技术有:用户授权,隐藏表单域,URL重写,Cookie等C 使用request.getSession(false)可以新建会话D 使用request.addCookie()可以添加Cookie到客户端6)在login.html中存在如下代码<form action=”/logindemo/login”>username:<input type=’text’ name=’userName’ id=’myName’value=’your name’></form>在login servlet中获得文本框的值正确的是:(单选)(D)A 无法获取,因为代码在Html中B request.getAttribute(“userName”)C request.getParameter(“myName”)D request.getParameter(“userName”)7)可以用于发送邮件的协议有:(多选)(BD)A Pop3B SMTPC FTPD IMAP8)在使用JavaMailAPI发送邮件时可以使用哪个方法:(单选)(A)A Transport.send()B Store.sent()C Message.send()D Message.sent()9)Jsp在转译阶段生成文件的扩展名是(B)A classB javaC exeD bin10)下面的说法错误的是:(单选)(D)A Jsp可以处理动态内容和静态内容B 在Jsp最终会编译成字节码后执行C 在jsp中可以使用脚本控制Html的标签生成D Jsp中不能使用//注释Java脚本中的代码11)关于下面这段代码说法正确的是:(单选)(B)<%!String temp;String convertMoney(String money){temp = money+”.00”out.println(temp);retrun temp;}%>A 这里不能调用temp,超出temp的生命周期B 这里不能使用outC 程序通过编译D 不能在这里定义方法12)在myjsp.jsp中,关于下面的代码说法错误的是:(单选)(A)<%@ page language="java" import="java.util.*" errorPage="error.jsp" isErrorPage="false" %>A 该页面可以使用exception对象B 该页面发生异常会转向error.jspC 存在errorPage属性时,isErrorPage是必须的属性值且一定为falseD error.jsp页面一定要有isErrorPage属性且值为true;13)下面不属于Jsp隐式对象的是:(单选)(B)A sessionB configC pageScopeD exception14)在jsp中作用域由小到大的组合是:(单选)(C)A request page session applicationB page request session applicationC pageContext request session applicationD pageScope request sessionScope applicationScope15)在项目中已经建立了一个JavaBean该类为:bean.Student,给bean具有name属性,则下面标签用法正确的是:(单选)(C)A <jsp:useBean id="student" class="Student" scope="session"></jsp:useBean>B <jsp:useBean id="student" class="Student" scope="session">hello student!</jsp:useBean>C <jsp:useBean id="student" class="bean.Student" scope="session">hello student!</jsp:useBean>D <jsp:getProperty name="name" property="student"/>16)下列标签使用正确的是:(多选)(AC)A <jsp:forward page="XXX.jsp"><jsp:param name="xxx" value="xxx"/></jsp:forward>B <jsp:forward page="XXX.jsp"></jsp:forward>C <jsp:forward page="XXX.jsp"/>D <jsp:forward page="XXX.jsp"/><jsp:param name="xxx" value="xxx"/></jsp:forward>17)${empty ""}的结果是:(单选)(C)A not nullB nullC trueD false18)在input.jsp中存在如下的代码:<input type="text" name="stuid" value="1001"/>则在display.jsp中可以使用可以使用哪些语句可以获取stuid的值:(多选)(ABD)A <%=request.getPramater("stuid")%>B ${param.stuid}C ${param[stuid]}D ${param["stuid"]}19)在标签处理类中返回值EV AL_PAGE的含义是:(单选)(B)A 重复执行标签B 继续处理页面内容C 跳过标签体内容D 跳过页面内容20)标签文件的扩展名是:(单选)(A)A tldB tagC dtdD xml21)关于MVC下面说法正确的是:(多选)(ABCD)A MVC表示模型,视图,控制器B 在model 1体系结构中没有使用ServletC model 1体系结构适合小型项目,开发效率较高,但大型项目会有维护问题D JavaBean可以访问数据库22)Model 2体系结构中控制器对象是一个:(单选)(A)A ServletB JavaBeanC Jsp页面D Html页面23)FilterConfig的哪个方法可以返回init参数的名称(D)A getServletContext()B getInitParameter(String name)C getFilterName()D getInitParameterNames()24)下面关于JSP自定义标记的描述正确的是(A)。
Jsp详解
![Jsp详解](https://img.taocdn.com/s3/m/dfb89e3d915f804d2b16c195.png)
Jsp详解1.简介2.Jsp的运行原理3.Jsp的语法1.Jsp模板元素2.Jsp中的脚本表达式3.Jsp中的脚本片段4.Jsp的声明5.Jsp注释6.Jsp指令1.首先我们来看一下page指令的用法2.下面在来看一下include指令3.最后来看一下taglib指令7.Jsp中内置的9个隐式对象8.JSP标签库1.jspinclude标签2.jspforward标签3.jspparam或者jspparams标签4.jspuseBean标签jspsetProperty标签jspgetProperty标签9.Jsp中怎么排查错误简介:JSP全称是JavaServer Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。
JSP这门技术的最大的特点在于,写jsp就像在写html,但:它相比html而言,html只能为用户提供静态数据,而Jsp技术允许在页面中嵌套java代码,为用户提供动态数据。
相比servlet而言,servlet很难对数据进行排版,而jsp除了可以用java代码产生动态数据的同时,也很容易对数据进行排版。
不管是JSP还是Servlet,虽然都可以用于开发动态web资源。
但由于这2门技术各自的特点,在长期的软件实践中,人们逐渐把servlet作为web应用中的控制器组件来使用,而把JSP技术作为数据显示模板来使用。
其原因为,程序的数据通常要美化后再输出:让jsp既用java代码产生动态数据,又做美化会导致页面难以维护。
让servlet既产生数据,又在里面嵌套html代码美化数据,同样也会导致程序可读性差,难以维护。
因此最好的办法就是根据这两门技术的特点,让它们各自负责各的,servlet只负责响应请求产生数据,并把数据通过转发技术带给jsp,数据的显示jsp来做。
Jsp的运行原理:目标:Web服务器是如何调用并执行一个jsp页面的?Jsp页面中的html排版标签是如何被发送到客户端的?Jsp页面中的java代码服务器是如何执行的?Web服务器在调用jsp时,会给jsp提供一些什么java对象?思考:JSP为什么可以像servlet一样,也可以叫做动态web资源的开发技术?其实Jsp就是一个Servlet,所以我们要先介绍Servlet的相关技术,当我们第一次访问Jsp 的时候,Jsp引擎都会将这个Jsp翻译成一个Servlet,这个文件存放在Tomcat中的work目录中,这里,我们新建一个MyJsp.jsp页面,然后访问以下,我们看一下翻译后的源码:1.<%@ page language="java"import="java.util.*"pageEncoding="utf-8"%>2.3.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML4.01 Transitional//EN">4.<html>5.<head>6.7.<title>My JSP 'MyJsp.jsp' starting page</title>8.9.</head>10.11.<body>12. This is my JSP page. <br>13.</body>14.</html>1.package org.apache.jsp;2.3.import javax.servlet.*;4.import javax.servlet.http.*;5.import javax.servlet.jsp.*;6.import java.util.*;7.8.public final class MyJsp_jsp extends org.apache.jasper.runtime.HttpJspBase9.implements org.apache.jasper.runtime.JspSourceDependent {10.11.private static final JspFactory _jspxFactory = JspFactory.getDefaultFactory();12.13.private static java.util.List _jspx_dependants;14.15.private javax.el.ExpressionFactory _el_expressionfactory;16.private org.apache.AnnotationProcessor _jsp_annotationprocessor;17.18.public Object getDependants() {19.return _jspx_dependants;20. }21.22.public void _jspInit() {23. _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();24. _jsp_annotationprocessor = (org.apache.AnnotationProcessor) getServletConfig().getServletContext().getAttribute(org.apache.AnnotationProcessor.class .getName());25. }26.27.public void _jspDestroy() {28. }29.30.public void _jspService(HttpServletRequest request, HttpServletResponse response)31.throws java.io.IOException, ServletException {32.33. PageContext pageContext = null;34. HttpSession session = null;35. ServletContext application = null;36. ServletConfig config = null;37. JspWriter out = null;38. Object page = this;39. JspWriter _jspx_out = null;40. PageContext _jspx_page_context = null;41.42.43.try {44. response.setContentType("text/html;charset=utf-8");45. pageContext = _jspxFactory.getPageContext(this, request, response,46.null, true, 8192, true);47. _jspx_page_context = pageContext;48. application = pageContext.getServletContext();49. config = pageContext.getServletConfig();50. session = pageContext.getSession();51. out = pageContext.getOut();52. _jspx_out = out;53.54. out.write("\r\n");55. out.write("\r\n");56. out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n");57. out.write("<html>\r\n");58. out.write(" <head>\r\n");59. out.write(" \r\n");60. out.write(" <title>My JSP 'MyJsp.jsp' starting page</title>\r\n");61. out.write(" \r\n");62. out.write(" </head>\r\n");63. out.write(" \r\n");64. out.write(" <body>\r\n");65. out.write(" This is my JSP page. <br>\r\n");66. out.write(" </body>\r\n");67. out.write("</html>\r\n");68. } catch (Throwable t) {69.if (!(t instanceof SkipPageException)){70. out = _jspx_out;71.if (out != null && out.getBufferSize() != 0)72.try { out.clearBuffer(); } catch (java.io.IOException e) {}73.if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);74. }75. } finally {76. _jspxFactory.releasePageContext(_jspx_page_context);77. }78. }79.}我们看到,这个类继承了org.apache.jasper.runtime.HttpJspBase,要想看到这个类的源码,我1./*2. * Licensed to the Apache Software Foundation (ASF) under one or more3. * contributor license agreements. See the NOTICE file distributed with4. * this work for additional information regarding copyright ownership.5. * The ASF licenses this file to You under the Apache License, Version 2.06. * (the "License"); you may not use this file except in compliance with7. * the License. You may obtain a copy of the License at8. *9. * /licenses/LICENSE-2.010. *11. * Unless required by applicable law or agreed to in writing, software12. * distributed under the License is distributed on an "AS IS" BASIS,13. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.14. * See the License for the specific language governing permissions and15. * limitations under the License.16. */17.18.package org.apache.jasper.runtime;19.20.import java.io.IOException;21.22.import javax.servlet.ServletConfig;23.import javax.servlet.ServletException;24.import javax.servlet.http.HttpServlet;25.import javax.servlet.http.HttpServletRequest;26.import javax.servlet.http.HttpServletResponse;27.import javax.servlet.jsp.HttpJspPage;28.import javax.servlet.jsp.JspFactory;29.30.import piler.Localizer;31.32./**33. * This is the super class of all JSP-generated servlets.34. *35. * @author Anil K. Vijendran36. */37.public abstract class HttpJspBase38.extends HttpServlet39.implements HttpJspPage40.41.42.{43.44.protected HttpJspBase() {45. }46.47.public final void init(ServletConfig config)48.throws ServletException49. {50.super.init(config);51. jspInit();52. _jspInit();53. }54.55.public String getServletInfo() {56.return Localizer.getMessage("");57. }58.59.public final void destroy() {60. jspDestroy();61. _jspDestroy();62. }63.64./**65. * Entry point into service.66. */67.public final void service(HttpServletRequest request, HttpServletResponse response)68.throws ServletException, IOException69. {70. _jspService(request, response);71. }72.73.public void jspInit() {74. }75.76.public void _jspInit() {77. }78.79.public void jspDestroy() {80. }81.82.protected void _jspDestroy() {83. }84.85.public abstract void _jspService(HttpServletRequest request,86. HttpServletResponse response)87.throws ServletException, IOException;88.}好吧,看到了,继承了HttpServlet类,所以说其实Jsp就是一个ServletJsp的语法:1.JSP模版元素2.JSP表达式3.JSP脚本片段4.JSP注释5.JSP指令6.JSP标签7.JSP内置对象8.如何查找JSP页面中的错误Jsp模板元素JSP页面中的HTML内容称之为JSP模版元素。
第5单元 JSP内置对象
![第5单元 JSP内置对象](https://img.taocdn.com/s3/m/846def46be1e650e52ea9973.png)
Enumeration getAttributeNamesInScope(int scope )
取得所有scope范围的属性名称组成的列举表
void removeAttribute(String name[, int scope])
内置(又称隐含)对象是特定Java类的实例, 它们由JSP引擎在运 行时根据情况自动创建并管理,在JSP页面中可以直接使用。
能实现很多功能, 如: 从客户端获得数据、向客户端发回数据、控制 传输数据的有效域和异常处理等。
对象的名称是JSP的保留字, 使用内置对象可简化应用开发。
隐含对象功能:
不必使用表达式, 直接使用out对象向客户端输出信息。
getParameter() :读取请求参数 getParameterNames():获取指定范围内的请求参数名的集合; getParameterValues():读取指定参数的所有值; getHeader():读取指定字段名的请求头信息。
此外该接口还包含大量的方法, 概括起来分为四类。
请求对象reques
在错误页面中显示出错信息。
<% String st=exception.getMessage();%>
等等… …
9种隐含对象
2
JSP内置对象的由来
3
转译为Servlet
编写jsp页面可 使用隐含对象 注意: 它们在 _jspService() 方法中定义,故 只能在脚本和 表达式中使用
页面对象: page
page对象代表当前JSP页面, 即代表转译后的Servlet
4
JSP容器将JSP页面转译成Servlet后, 将指针this赋给了page对象
第三章:JSP内置对象 (request对象、response对象session对象、application对象、cookie)
![第三章:JSP内置对象 (request对象、response对象session对象、application对象、cookie)](https://img.taocdn.com/s3/m/b8d4c6fa551810a6f52486ee.png)
第三章:Jsp隐式对象(request对象、response对象session对象、application对象、cookie)Jsp隐式对象概述:由JSP规范提供,不用编写者实例化。
通过Web容器实现和管理。
所有JSP页面均可使用。
只有在脚本元素的表达式或代码段中才可使用(<%=使用内置对象%>或<%使用内置对象%>)。
常用九大内置对象的作用和方法1、out对象:代表提供输出流的访问。
2、request对象:request对象是从客户端向服务器端发出请求,包括用户提交的信息以及客户端的一些信息。
常用方法:getparameter()getParameterValues()setAttribute() getAttribute()3、response对象:允许直接访问HttpServletResponse对象常用方法:sendRedirect()4、session对象:允许直接访问HttpServletResponse对象常用方法:setAttribute()、getAttribute()5、application对象:用于多个程序或者多个用户之间共享数据。
常用方法:setAttribute()、getAttribute()6、config :将初始化数据传递给一个JSP页面7、page :代表JSP页面对应的Servlet类实例8、exception:针对错误网页,未捕捉的例外9、pageContext :管理网页的属性内置对象的作用域:◆application:服务器启动到停止这段时间◆session:HTTP会话开始到结束这段时间◆request:HTTP请求开始到结束这段时间◆page:当前页面从打开到关闭这段时间对于每一个用户都共享同一个对象的是:application对象,而每个用户分别使用不同对象实例的是:session对象forword和sendRedirect的区别:forword仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;sendRedirect则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接getParameter(String name);例题一:文件名:input.html<html>< body bgcolor="white"><font size=1><form action="requestdemo1.jsp" method=post name=form><input type="text" name="boy"><input type="submit" value="Enter" name="submit"></form></font></body></html>文件名:requestDemo1.jsp:<%@ page contentType="text/html;charset=GB2312" %><html><body bgcolor="white"><font size=4><p>获取文本框提交的信息:<%String strContent=request.getParameter("boy");%><%=strContent%> // 输出文本框boy提交的信息<p> 获取按钮的名字:<%String strButtonName=request.getParameter("submit");%><%=strButtonName%> // 输出按钮的value名字</font></body></html>例题二:设计一个简单的“JSP程序设计网上测试系统”,如下图所示。
JSP内置对象
![JSP内置对象](https://img.taocdn.com/s3/m/9e9d22757fd5360cba1adb44.png)
JSP内置对象本讲主要介绍JSP主要内置对象,包括对象的作用、常用函数,并通过具体实例说明其用法,并介绍了Cookie的概念和使用方法。
通过本讲的学习,重点掌握以下内容:●掌握常用内置对象的作用●掌握常用内置对象的用法●了解Cookie的有关操作1.1 内置对象介绍JSP九大隐式对象:[1]request:表示客户端的请求,包含了所有的请求信息,是Servlet中service(或doPost/doGet方法)方法的resquest参数。
[2]response:处理JSP生成的响应,然后将响应结果发送给客户端。
是service(或doPost/doGet方法)方法的response参数。
[3]out:表示输出流,将作为请求的响应发送给客户端。
是JspWriter的一个实例。
[4]session:表示用户的会话状况,用此机制可以轻易的识别每一个用户,能保存和跟踪用户的会话状态。
是HttpSession的一个实例。
[5]pageContext:作用于此页面,可以访问页面作用域中定义的所有隐式对象。
是PageContext的一个实例。
[6]application:作用于整个应用程序。
是ServletContext的一个实例。
[7]page:提供对网页上定义的所有对象的访问。
是一个Object对象。
是此Servlet的一个引用。
[8]config:存储Servlet的一些初始信息。
是ServletConfig的一个实例。
[9]exception:此对象负责处理程序执行过程中引发的异常。
1.2 out:输出对象out对象是JspWriter类的实例,主要用于向客户端输出数据。
out对象与response.getWriter()得到的PrintWriter对象的关系:一、都是继承自java.io.Writer类。
JspWriter在JSP页面中直接用out对象输出,也可以用pageContext.getOut(); 得到out对象。
第6章 JSP技术题与答案
![第6章 JSP技术题与答案](https://img.taocdn.com/s3/m/00caafa2bcd126fff7050bc0.png)
第6章JSP技术一、选择题1.下面选项中,属于jsp:forward标签中的属性的是()A: file B: url C: path D: page2.下面JSP标签中,具有转发功能的是()A: jsp:include B: jsp:forwardC: jsp:param D: jsp:redirect3.JSP隐式对象pageContext所对应的类是()A: javax.servlet.http.PageContextB: javax.servlet.jsp.PageContextC: javax.servlet.http.jsp.PageContextD: javax.servlet.jsp.http.PageContext4.下面关于JSP作用域对象的描述,错误的是()A: request对象可以得到请求中的参数B: session对象可以保存用户信息C: application对象可以被多个应用共享D: 作用域范围从小到大是request、session、application5.下列选项中,哪个属性可以指定JSP翻译成Servlet源文件中导入包或类?()A: language B: extends C: import D: session二、填空题1.需要在JSP页面静态包含一个文件时,可采用【】指令来实现。
2.使用EL表达式中的pageContext对象,可以成功的获取到了request、response、【】和servletConfig对象中的属性。
3.JSP页面中的静态HTML内容称之为【】。
4.在JSP文件中,可以同时存在HTML代码与【】代码。
5.JSP全名是Java Server Page,它是建立在【】规范之上的动态网页开发技术。
三、判断题1.EL表达式中的隐式对象与JSP中的隐式对象除了pageContext对象是它们共有的,其它隐式对象则毫不相关。
()2.在处理JSP页面的异常时,如果page指令的errorPage属性和web.xml文件中的元素都进行了配置,那么这两项配置都会起作用。
java综合测试三(有答案)
![java综合测试三(有答案)](https://img.taocdn.com/s3/m/a1377a97e53a580216fcfe44.png)
7、在 servlet 中,调用 HttpSession 对象的(
容器中一直保持有效状态(选择一项)
A、setTimeout(0);
B、setTimeout(-1);
D、setMaxInactiveInterVal(-1);
)方法,可以使这个 HttpSession 对象在 Servlet C、setMaxInactiveInterval(0);
A、Filter
B、FilterConfig
)接口用于调用过滤器链中的下一个过滤器(选
C、FilterChain
D、Servlet
22、在 JSP 中,要定义一个方法,需要用到以下( )元素(选择一项)
A、<%= %>
B、<% %>
C、<%! %>
D、<%@ %>
23、Servlet 中,HttpServletResponse 的(
<html>
<% int Count=1;%>
Count:<%=++Count %>
</html>
A、Count:1
B、Count:2
C、1:2
D、Count
28、某 JSP 程序中声明使用 javaBean 的语句如下: <jsp:useBean id=“user“ class =“er“ scope=“application“/> user 对象会作为属性存放在( )类型的对象中(选择一项) A、PageContext B、HttpServlet C、ServletContext D、ApplicationContext
B、PrintWrite out =resquest.getWrite()
北大青鸟ACP5.0测试题
![北大青鸟ACP5.0测试题](https://img.taocdn.com/s3/m/3cfa6a8a16fc700aba68fc4c.png)
20)在WinForms中,有一个多文档应用程序,主窗体中打开了三个子窗体,布局如图所示,请问该布局是通过()代码实现的。(选择一项)
a)youtMdi(MdiLayout.Cascade);
b)youtMdi(MdiLayout.TileHorizontal);
c)youtMdi(MdiLayout.TileVertical);
25)在中,下列()不属于SqlDataAdapter对象的属性。(选择一项)
a)SqlCommand
b)SelectCommand
c)DeleteCommand
d)InsertCommand
e)UpdateCommand
26)WinForms中的状态栏由多个()组成。(选择一项)
a)面板
b)转译、加载类、创建实例、编译、调用jspInit方法、调用jspService方法、调用jspDestroy方法
c)编译、转译、加载类、创建实例、调用jspInit方法、调用jspService方法、调用jspDestroy方法
d)转译、编译、加载类、创建实例、调用jspInit方法、调用jspService方法、调用jspDestroy方法
c)this.mnmMenu.MenuItems.RemoveAt(1);
d)this.mnmMenu.MenuItems.RemoveAt(“文件”);
9)在C#中,()访问修饰符修饰的变量只能由当前程序集访问。(选择一项)
a)public
b)protected
c)internal
d)private
a)System.Int16
b)System.Single
{
string name;
03-JSP隐式对象-课后作业
![03-JSP隐式对象-课后作业](https://img.taocdn.com/s3/m/c9054f628e9951e79b89278f.png)
1.1、下面不属于JSP内置对象的是:A out对象B respone对象C application对象D page对象1.2、以下哪个对象提供了访问和放置页面中共享数据的方式?A pageContextB responseC requestD session1.3、调用getCreationTime()可以获取session对象创建的时间,该时间的单位是:A 秒B 分秒C 毫秒D 微秒1.4、当response的状态行代码为哪个时,表示用户请求的资源不可用?A 101B 202C 303D 4041.5、可以利用JSP动态改变客户端的响应,使用的语法是:A response.setHeader()B response.outHeader()C response.writeHeader()D response.handlerHeader()2、简述request对象和response对象的作用及常用方法的功能。
3、简述请求转发和请求重定向的定义及它们区别。
一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理(服务器内部的调用),称之为请求转发一个web资源收到客户端请求后,通知浏览器去访问另外一个web资源(浏览器进行2次请求),称之为请求重定向请求重定向和请求转发的区别1.forward是服务器内部转发,而redirect是通过客户端进行转发2.如果用forward进行转发的话,客户端的url地址不会改变,但是如果用redirect的话,则url地址会改变3.如果用forward进行转发,转发页面和被转发页面处于一个request请求内,而redirect不是。
4、session对象与application对象有何区别?请编写JSP程序实现如图所示的简易计算器。
要求:输入“第一个参数”,选择运算类型(+,-,*,/),输入“第二个参数”后,按“计算”按钮,结果将显示在“结果”文本框中。
JSP九大内置对象及四个作用域
![JSP九大内置对象及四个作用域](https://img.taocdn.com/s3/m/ee57bbe90975f46527d3e1cd.png)
JSP九大内置对象及四个作用域九大对象:内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用1-out: out对象是JspWriter类的实例,是向客户端输出内容常用的对象javax.servlet.jsp.JspWriter类型,代表输出流的对象。
作用域为page(页面执行期)request:javax.servlet.ServletRequest的子类型,此对象封装了由WEB浏览器或其它客户端生成地HTTP客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。
它是HttpServletRequest类的实例。
请求的细节(参数,属性,头标和数据)。
作用域为request(用户请求期)。
方法由可查看APIresponse:javax.servlet.ServletResponse的子类型,此对象封装了返回到HTTP客户端的输出,向页面作者提供设置响应头标和状态码的方式。
经常用来设置HTTP标题,添加cookie,设置响应内容的类型和状态,发送HTTP重定向和编码URL。
作用域为page (页面执行期)。
response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。
它是HttpServletResponse类的实例。
pageContext:javax.servlet.jsp.PageContext(抽象类)类型,作用域为page(页面执行期)。
此对象提供所有四个作用域层次的属性查询和修改能力,它也提供了转发请求到其它资源和包含其他资源的方法:pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本类名也叫pageContext。
该对象的方法都是抽象方法session:javax.servlet.http.HttpSession类型,主要用于跟踪对话。
Web((2)
![Web((2)](https://img.taocdn.com/s3/m/6ca034200722192e4536f6ba.png)
}
if(ps!=null){ try{ps.close();ps=null;}catch(SQLException
ex){ex.printStackTrace();} } if(conn!=null){ try{conn.close();conn=null;}catch(SQLException
《Java Web 应用开发》本科复习题
一、 单项选择题
1、 ServletContext 接口的(d)方法用于将对象保存到 Servlet 上下文中 A、GetServletContext() B、GetContext() C、GetAttributes() D、SetAttributes()
2、 ( a)指令用于将文件嵌入 JSP 页面 A、include B、taglib C、page D、language
<option value="a">1</option> <option value="b">2</option> <option value="c">3</option> </select> </form> 2、自定义一个 Servlet 类 public class XxxServlet extends HttpServlet{ public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Jsp的隐式对象和EL的隐式对象学习2009-09-02 21:48JSP共有九大内置对象:(1) HttpSession类的session对象作用:主要用于来分别保存每个用户信息,与请求关联的会话;会话状态维持是Web应用开发者必须面对的问题。
(2) HttpServletRequest类的request对象作用:代表请求对象,主要用于接受客户端通过HTTP协议连接传输到服务器端的数据。
(3) HttpServletResponse类的respone对象作用:代表响应对象,主要用于向客户端发送数据(4) JspWriter类的out对象作用:主要用于向客户端输出数据;Out的基类是javax.servlet.jsp.JspWriter(5) ServletContext类的application对象作用:主要用于保存用户信息,代码片段的运行环境;它是一个共享的内置对象,即一个容器中的多个用户共享一个application对象,故其保存的信息被所有用户所共享.(6) PageContext类的pageContext对象作用:管理网页属性,为JSP页面包装页面的上下文,管理对属于JSP中特殊可见部分中已命名对象的访问,它的创建和初始化都是由容器来完成的。
(7) ServletConfig类的config对象作用:代码片段配置对象,表示Servlet的配置。
(8) Object类的page(相当于this)对象作用:处理JSP网页,是Object类的一个实例,指的是JSP实现类的实例,即它也是JSP本身,只有在JSP页面范围之内才是合法的。
(9)Exception作用:处理JSP文件执行时发生的错误和异常EL共有11大内置对象:JSP开发人员可以在EL表达式中使用EL隐式对象,而无须任何显式的编码活声明。
隐式对象就是设计用来为 JSP 编程提供方便的,通过隐式对象,用EL编写的代码就可以直接使用JSP页面的一些最常用的地方。
总共有11个隐式对象,这11个隐式对象可以分为5大类:*JSP隐式对象。
*作用域访问隐式对象。
*参数访问隐式对象。
*首部访问隐式对象。
*初始化参数访问隐式对象。
JSP隐式对象类中只有一个EL隐式对象,这就是pageContext隐式对象。
这与同名的JSP隐式对象实际上就是同一个对象。
余下的EL隐式对象都是Java映射(map),他们只是提供了更容易的途径来访问pageContext隐式对象的某些性质。
共有4个作用域隐式对象,分别为pageScope, requestScope, sessionScope和applicationScope. 这些隐式对象都是映射,利用他们可以很容易的访问作用域属性。
例如:附加到request作用域的username属性可以通过EL表达式${ ername}来直接访问。
有两个参数访问隐式对象,可以用来访问HTTP请求参数(表单提交参数),即param和paramValues. param 是一个用于访问单值参数的映射, paramValues则可用于访问可能包含多个值的参数。
接下来的实验会展示这将如何处理。
有3个首部访问隐式对象,可以用于访问HTTP首部,分别是header, headerValues和cookie。
如果想以原始的方式访问HTTP首部或cookie, 这些映射就很有用。
另外还有一个初始化参数访问隐式对象:initParm。
这个映射可以用于访问初始化参数的值,初始化参数的值一般都在web.xml中设置。
其实我的主要目的是为了搞清楚pageContext对象,如下:Jsp中pageContext的作用pageContext 隐含物件对应於javax.servlet.jsp.PageContext型态之物件,,隐含物件都自动的被加入至pageContext中,您可以藉由它来取得与JSP相关的隐含物件对应之Servlet物件,像是getRequest()可以取得ServletRequest, getServletConfig()可以取得ServletConfig,getSession()可以取得HttpSession等等。
提供取得隐含物件对应之Servlet物件并不是pageContext的主要作用,它的主要功能在提供一个单一个介面,以管理各种的公开物件(像是 HttpSession、ServletContext、ServletConfig、ServletRequest、ServletResponse等等),提供一个单一的API来管理属性作用范围等等。
我们之前曾经使用过session的setAttribute()等方法设定一个进程可以共用的属性物件,使用session 设定的属性在同一个进程中可以共用,除了session之外,还有pageContext、 request、application也都可以使用setAttribute()之类的方法(详请查阅API文件)来设定可以共用的属性物件,只不过这四个物件所设定的属性其共用范围各不相同。
使用pageContext所设定的属性物件,其共用范围限於同一个 JSP页面,使用request所设定的属性物件,其在同一个request处理期间可以共用(包括forward给其它JSP页面),session物件所设定的属性物件则限於同一个进程作用期间可以共用,而application物件所设定的属性,则在整个Web应用程式中的JSP页面都可以共用。
以下举application为例,您可以将一些物件当作属性设定给application,则另一个JSP页面就可以在适当的时候取得这个属性物件,例如:<%String attr = "字串物件";out.println("设定属性给application:" + attr);application.setAttribute("str", attr);%>我们先连上这个JSP网页以执行属性设定,然后我们再连上这个JSP网页:<%String attr = (String) application.getAttribute("str");out.println("取得application属性:" + attr);%>由於我们之前已经将字串物件设定在application中作为属性,所以我们可以在上面这个页面中取得之前设定的物件,同样的道理,您也可以用相同的方式设定属性给pageContext、request、session等物件,只要在允许的作用范围中,就可以取得所设定的属性物件。
您可以使用pageContext物件来设定属性,并指定属性的作用范围,而不用使用个别的pageContext、request、session、 application来进行设定,这就是之前所提的,以pageContext提供一个单一的API 来管理属性作用范围,您可以使用以下的方法来进行设定:getAttribute(String name, int scope)setAttribute(String name, Object value, int scope)removeAttribute(String name, int scope)其中的scope可以使用以下的常数来进行指定:pageContext.PAGE_SCOPE、pageContext.REQUEST_SCOPE、pageContext.SESSION_SCOPE、pageContext.APPLICATION_SCOPE,常数的名称已经直接指明属性范围,我们可以将上面的两个JSP页面改为以下的形式:<%String attr = "字串物件";out.println("设定属性给application:" + attr);pageContext.setAttribute("str", attr, pageContext.APPLICATION_SCOPE);%><%String attr = (String) pageContext.getAttribute("str", pageContext.APPLICATION_SCOPE); out.println("取得application属性:" + attr);%>JSP隐式对象和EL隐式对象2008-07-04 16:49:59JSP隐式对象:首先要了解什么是JSP隐式对象,它是Web容器加载的一组类的实例,它不像一般的Java对象那样需要“new”去获取实例,而是直接就可以在JSP页面中使用的对象。
JSP提供的隐式对象分为4个主要类别,如下介绍:1、输入和输出对象:request、response和out对象。
2、作用域通讯对象:session、application、pagecontext。
3、servlet对象:config和page。
4、错误对象:exception。
-------------------------------------------EL 隐式对象的标识符不要将这些对象与JSP 隐式对象(一共只有九个)混淆,其中只有一个对象是它们所共有的。
EL 隐式对象类别标识符描述JSP pageContext PageContext 实例对应于当前页面的处理作用域 pageScope 与页面作用域属性的名称和值相关联的Map 类requestScope 与请求作用域属性的名称和值相关联的Map 类sessionScope 与会话作用域属性的名称和值相关联的Map 类applicationScope 与应用程序作用域属性的名称和值相关联的Map 类请求参数param 按名称存储请求参数的主要值的Map 类paramValues 将请求参数的所有值作为String 数组存储的Map 类请求头header 按名称存储请求头主要值的Map 类headerValues 将请求头的所有值作为String 数组存储的Map 类Cookie cookie 按名称存储请求附带的cookie 的Map 类初始化参数initParam 按名称存储Web 应用程序上下文初始化参数的Map 类尽管JSP 和EL 隐式对象中只有一个公共对象(pageContext ),但通过EL 也可以访问其它JSP 隐式对象。
原因是pageContext 拥有访问所有其它八个JSP 隐式对象的特性。