JSP内置对象
JSP内置对象
Jsp提供了由容器实现和管理的内置对象,也可以称之为隐含对象,这些内置对象不需要通过jsp页面编写来实例化,在所有的jsp页面中都可以直接使用,
它起到了简化页的作用。Jsp 的内置对象被广泛应用于 jsp 的各种操作中。本章将对 jsp 提供的 9 个内置对象进行详细介绍。通过阅读本章,您可以:
- 获取访问请求参数和表单提交的信息
- 通过 request 对象进行数据传递
- 获取客户端信息和 cookie
- 应用 response 对象实现重定向页面
- 向客户端输出数据
- 创建及获取客户的会话
- 从会话中移去指定的对象
- 设置 session 的有效时间以及销毁 session
- 应用 application 实现网页计数器
- 使用 exception 对象获取异常信息
由于JSP 使用Java 作为脚本语言,所以 JSP 将具有强大的对象处理能力,并且可以动态创建Web 页面内容。但 Java 语法在使用一个对象前,需要先实例
化这个对象,这其实是一件比较烦琐的事情。JSP 为了简化开发,提供了一些内置对象,用来实现很多 JSP 应用。在使用 JSP 内置对象时,不需要先定义这些
对象,直接使用即可。
在 JSP 中一共预先定义了 9 个这样的对象,分别为 request、response、session、application、out、pageContext、config、page、exception。本章将分别介绍
这些内置对象及其常用方法。
request对象
request 对象封装了由客户端生成的 http 请求的所有细节,主要包括了 http 头信息、系统信息、请求方式和请求参数等。
例子1:访问请求参数
当我们通过超链接的形式发送请求时,可以为该请求传递参数,这可以通过在超链接的后面加上问号“?”来实现。
(1)index.jsp 主要代码

(2)deal.jsp 具体代码

例子2:在作用域中管理属性
在进行请求转发时,需要把一些数据传递到转发后的页面进行处理。这时,就需要使用 request 对象的 setAttribute()方法将数据保存到 request 范围内的变
量中。在将数据保存到指定需要再 request 范围内的变量中,可以通过 request 对象的 getAttribute()方法获取该变量的值,该变量名在 request 范围内有效。
使用 request 对象的 setAttribute() 方法保存 t request 范围内的变量,并应用 t request 对象的 getAttribute() 方法读取 t request 范围内的变量。
(1)index2.jsp 主要代码

(2)deal2.jsp 主要代码

例子3:解决中文乱码
在上面的代码中我们为 id 参数传递了一个字符串类型的值“001”,如果将这个参数的值更改为中文,则在 show.jsp 就会发生大家都不愿意看到的问题
——在显示参数值时中文内容变成了乱码。这是因为请求参数的文字编码方式与页面中的不一致所造成的,所有的 request 请求都是 iso-8859-1 的,而在此页
面采用的是 UTF-8 的编码方式。要解决此问题,只要将获取到的数据通过 String 的构造方法使用指定的编码类型重新构造一个 String 对象即可正确地显示出
中文信息。
(1)index3.jsp

(2) show.jsp 主要代码

例子4:显示国际化信息
浏览器可以通过 accept-language 的 HTTP 报头向 Web 服务器指明它所使用的本地语言。request 对象中的 getLocale()和 getLocales()方法允许 JSP 开发人员
获取这一信息,获取的信息属于 java.util.Local 类型。java.util.Local 类型的对象封装了一个国家和一种国家所使用的语言。使用这一信息,JSP 开发者就可以
使用语言所特有的信息作出响应。
1 <% 2 java.util.Local locale=request.getLocale(); // 获取本地的语言 3 String str=””; 4 if(locale.equals(java.util.Locale.US)){ // 将本地语言与美国的语言比较 5 // 如果本地语言与美国语言相同,表示用户是美国用户,显示英语 6 str=”hello,welcome to access our company·s web!” 7 } 8 %>
获取客户端信息
通过 request 对象可以获取客户端的相关信息。

使用 request 对象的相关方法获取客户端信息

response对象
通过 response 对象可以设置 HTTP 响应报头,其中,最常用的是禁用缓存、设置页面自动刷新和定时跳转网页。下面分别进行介绍
1 、禁用缓存
<%
response.setHeader(“Cache-control”,”no-store”);
response.setDateHeader(“Expires”,0);
%>
2、设置页面自动刷新
<%
response.setHeader(“refresh”,”10”);
%>
3、定时跳转网页
<%
response.setHeader(“refresh”,”10;URL=login.jsp”);
%>
设置输出缓冲
通常情况下,服务器要输出到客户端的内容不会直接写到客户端,而是先写到一个输出缓冲区,在计算机术语中,缓冲区被定义为暂时放置输入或输出资
料的内存。实际上,缓冲区也可以这样理解:在一个粮库中,由于装缷车队的速度要快于传送带的传输速度,为了不造成装缷车队的浪费,粮库设计了一个站
台,装缷车队可以先将运送的粮食缷到这个平台上,然后让传送机慢慢传送。粮库的这个站台就起到了缓冲的作用。当满足以下三种情况之一,就会把缓冲区
的内容写到客户端。
(1)JSP 页面的输出信息已经全部写入到缓冲区
(2)缓冲区已满
(3)在 jsp 页面中,调用了 response 对象的 flushBuffer()方法 out 对象的 flush()方法。
response 对象提供了对缓冲区进行配置的方法。
设置缓冲区的大小为 32kb;
response.setBuffer(32);
session对象
session 是较常用的内置对象之一,与 requeset 对象相比其作用范围更大。下面通过实例介绍 session 对象的应用,session不需要想request那样传递给下一个页面
例子:
index.jsp

session.jsp

result.jsp

application对象
Application 对象用于保存所有应用程序中的共有数据。它在服务器时自动创建,在服务器停止时销毁。当application 对象没有被销毁时,所有用户都可以
共享该 application 对象。与 session 对象相比,application 对象的生命周期更长,类似于系统的“全局变量”。(application即Servlet对象里面的ServletContext)
访问应用程序初始化参数
application 对象提供了对应用程序初始化参数进行访问的方法。应用程序初始化参数在 web.xml 文件中进行设置,web.xml 文件位于Web 应用所在目录下
的 WEB-INF 子目录中。在 web.xml 文件中通过<context-param>标记配置应用程序初始化参数。
<context-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://127.0.0.1:3306/da_databases</param-value>
</context-param>
Application 对象提供了两种访问应用程序初始化参数的方法,下面进行介绍。
(1) getInitParameter(String name); // 该方法用于返回已命名的参数值。
(2) getInitParameterNames( ) // 该方法用于返回所有已定义的应用程序初始化参数名的枚举。
使用getInitParameterNames():
1 <% 2 Enumeration enema=application.getInitParameterNames(): //获取全部初始化参数 3 while(enema.hasMoreElements()){ 4 String name=(String)enerma.nextElement(); //获取参数名 5 String value=application.getInitParameter(name); //获取参数值 6 out.println(name+” ”); //输出参数名 7 out.println(value); //输出参数值 8 } 9 %>
管理应用程序环境属性
与 session 对象相同,也可以在 application 对象中设置属性。与 session 对象不同的是,session 只是在当前客户的会话范围内有效,当超过保存时间,session
对象就被收回;而 application 对象在整个应用区域中都有效。application 对象管理应用程序环境属性的方法分别介绍如下。(session只对某一个用户负责,application对所有的用户负责)
| 方法 | 说明 |
| getAttributeNames() | 获得所有 application 对象使用的属性名。 |
| getAttribute(String name) | 从 application 对象中获取指定对象名。 |
| setAttribute(String key,Object obj) | 使用指定名称和指定对象在 application 对象中进行关联。 |
| removeAttribute(String name) | 从 application 对象中去掉指定名称的属性 |
out对象
Out 对象用于在web 浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲
区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。
向客户端输出数据
out 对象一个最基本的应用就是向客户端浏览器输出信息。out 对象可以输出各种数据类型的数据,在输出非字符串类型的数据时,会自动转换为字符串
进行输出。out 对象提供了 print()和 println()两种向页面中输出信息的方法
管理响应缓冲

pageContext对象(获取会话范围)
通过该对象可以获取其他八大对象

Servlet里面获取pageContext:
JspFactory _jspxFactory =JspFactory.getDefaultFactory();
PageContext pageContext =_jspxFactory.getPageContext(this,request,response,"",true,8192,true);
config对象(2 、读取 l web.xml 配置信息)
Config 对象主要用于取得服务器的配置信息。通过 pageContext 对象的 getServletConfig()方法可以获取一个 config 对象。当一个 Servlet 初始化时,容
器把某些信息通过 config 对象传递给这个 Servlet。常用方法如下:

返回一个枚举对象
page对象(应答或请求)
Page 对象代表 JSP 本身,只有在 JSP 页面中才是合法的。Page 对象本质上是包含当前的 Servlet 接口引用的变量,可以看作是 this 关键字的别名。常用方
法如下:

exception对象(获取异常信息)
只有在 page 指令中设置为 isErrorPage 属性值为 true 的页面中才可以被使用,在一般的 jsp 页面中使用该对象将无法编译 jsp 文件。Exception 对象几乎定
义所有的异常情况,在Java程序中,可以使用try...catch关键字来处理异常情况,如果在jsp页面中出现没有捕捉到的异常,就会生成exception对象,并把exception
对象传送到在 page 指令中设定的错误页面中,然后再错误页面处理响应的 exception 对象,exception 对象的常用方法如图所示。

例子
index.jsp
1 <body> 2 <% 3 request.setAttribute("price","12.5 元"); //保存单价到 request 范围内的变量 price 中 4 float price=Float.parseFloat(request.getAttribute("price").toString()); //获取单价,并转换为 float 型 5 %> 6 </body>
error.jsp
1 <body> 2 错误提示为:<%=exception.getMessage() %> 3 </body>

浙公网安备 33010602011771号