您的位置:首页 > Web前端 > JavaScript

Jsp隐式对象

2017-11-05 21:05 295 查看
1.简介

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

9个对象分别是

Response

Request

Session

Application

Config

Page

Exception

pageContext



Exception这里看不到的原因下面会讲的~

2.用途

Out对象

主要是用于向页面输出内容,因为JSP本身也是个Servlet,响应浏览器的方式还是用out对象write一堆的HTML标签。JSP内置的out类型是JspWriter。这玩意至今我都没用过,因为后面输出内容基本都是用EL表达式以及c:out标签,不需要这个东西。

page对象

这个对象就是指向jsp页面本身,类似类中this一样,但其声明类型是Objt,在JSP上边的图中可以看到。小例子:



pageContext 页面上下文

JSP页面的内置对象,都是通过pageContext获取的,意思就是整个页面中能用的对象,都是从它这里取的。 pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的session,也可以取本页面所在的application的某一属性值。

通过上下文获取request对象,再通过request对象获取上下文路径:



config对象

config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成),以及服务器的有关信息(通过传递一个ServletContext对象),还可以给JSP设置一个像Servlet一样的访问路径。

<servlet>
<servlet-name>outJSP</servlet-name>
<jsp-file>/day03/config.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>outJSP</servlet-name>
<url-pat
a075
tern>/config</url-pattern>
</servlet-mapping>


这种方式和直接访问JSP有所区别,这个访问方式可以初始化个Config对象,(Servlet中有个init方法是带个config参数的)那个对象和这个是一样的玩法,都可以通过在servlet标签中定义init-param,设置初始化参数。

<init-param>
<param-name> hey< param-name>
<param-value> dumpass </param-value>
</init-param>


注意:只有通过url-pattern的方式访问才可以设置获取到这个param。

Exception

exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象。

1.将一个JSP页面设置为Error页面的方法是:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isErrorPage="true"%>


2.当正常的业务JSP出现异常需要跳转到Error页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" ErrorPage="Error.jsp"%>


3.获取异常信息:

ByteArrayOutputStream baos=new ByteArrayOutputStream();
PrintStream ps=new PrintStream(baos);
exception.printStackTrace(ps);
String str = new String(baos.toByteArray());


其他几个就统称为作用域对象,拥有 setAttribute和getAttribute方法的对象统称为作用域对象。其对应的作用域(或者说是生命周期):

request 请求 -> 响应后就销毁

如果是重定向到别的网页,那么这个request的数据

还是会存在的,跳转到的页面中也可以获取Attribute

session

一次会话,或者会话超时之前

application(servletContext)

服务器启动 -> 关闭

PageContext 只有JSP有,作用域是当前页面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: