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>

 

posted @ 2018-05-15 21:06  Jin同学  阅读(175)  评论(0)    收藏  举报