`

JSP9个内置对象

    博客分类:
  • jsp
 
阅读更多

原文地址:http://www.blogjava.net/RoyPayne/archive/2012/01/05/367930.html

JSP内置对象:我们在使用JSP进行页面编程时可以直接使用而不需自己创建的一些Web容器已为用户创建好的JSP内置对象。如request,session,response,out等。

下面就JSP2.0给出的9个内置对象:

 

内置对象 类型 作用域
request javax.servlet.http.HttpServletRequest request
response javax.servlet.http.HttpServletResponse response
pageContext javax.servlet.jsp.PageContext page
session javax.servlet.http.HtpSession session
application javax.servlet.jsp.ServletContext application
out javax.servlet.jsp.JspWriter page
config javax.servlet.ServletConfig page
page java.lang.Object page
exception java.lang.Throwable page

 

我们同样可以根据它们的作用进行分类:

第一类:与Servlet有关:page和config

第二类:与Input/Output有关:out,request和response

第三类:与Context有关:application,session和pageContext

第四类:与Error有关:exception

 

一、属性保存范围

在JSP中可以通过setAttribute()和getAttribute()这两个方法来设置和取得属性。从而实现数据的共享。JSP提供了四种属性保存范围:response,request,session和application。

1、page:就是设置的属性只能在当前页面有效。通过pageContext的setAttribute()和getAttribute()。

2、 request:指属性在一次请求范围内有效。如果页面从给一个页面跳转到另一个页面,那么该属性就失效了。这里所指的跳转是指客户端跳转,比如客户单击 超链接跳转到其他页面或者通过浏览器地址栏浏览其他页面。如果使用服务器端跳转<jsp:forward>,则该属性仍然生效。同理使用 request对象的setAttribute()和getAttribute()。

3、session:指客户浏览器与服务器一次会话范围内,如果服务器断开连接,那么属性就失效了。同理通过session对象的setAttribute()和getAttribute()。session范围的例外比如重新打开一个浏览器。

4、 application:指在整个服务器范围,知道服务器停止以后才会失效。同理通过application对象的setAttribute()和 getAttribute()。application范围就是保存的属性只要服务器不重启,就能在任意页面中获取,就算重新打开浏览器也是可以获取属性 的。

 

二、移除属性:在属性的作用域还未到就想清除相应的属性时,必须编程清除。即调用相应对象的removeAttribute()方法就可以移除指定属性。

<%@ page language="java" contentType="text/html;charset=gb2312"%> <html> <head> <title>移除属性</title> </head> <body> <%-- 在page范围设置属性 --%> <% pageContext.setAttribute("name","James"); //设置属性name,其值为James pageContext.setAttribute("age","12"); //设置属性age,其值为12 pageContext.setAttribute("sex","男"); //设置属性sex,其值为男 %> <%-- 移除属性--%> <% pageContext.removeAttribute("sex"); %> <%-- 取得page范围属性--%> <% String strName = (String)pageContext.getAttribute("name"); //取值属性name的值 String strAge = (String)pageContext.getAttribute("age"); //取值属性age的值 String strSex = (String)pageContext.getAttribute("sex"); //取值属性sex的值 out.println("page范围:name属性值为" + strName + "<br>"); out.println("page范围:age属性值为" + strAge+ "<br>"); out.println("page范围:sex属性值为" + strSex); %> </body> </html>

  

 

 结果页面输出:page范围:name属性值为James
                        page范围:age属性值为 12

                        page范围:sex属性值为 null

三、request对象:request对象不但可以用来设置和取得request范围变量,还可以用来获取客户端请求参数、请求的来源、表头、Cookies等。

1、request获取客户端请求参数方法

 

 方法 返回值类型  方法说明 
 getParameter(String name) String   获取参数名为name的参数值
 getParameterNames() Enumeration   获取所有参数的名称,可与上一个方法合用获取所有参数的值
 getParameterValues(String name)  String[]  获取参数名为name的所有参数,比如参数是多个checkbox
 getParameterMap()  Map  获取所有参数封装的Map实例,通过Map实例的String[] get("id")方法返回对应参数名为id的值数组

 

2、request的其他方法

 

方法 返回值类型 方法说明
getHeader(String name) String 获取指定标题名称为name的标头
getHeaderName() Enumeration 获取所有的标头名称
getIntHeader(String name) int 获取标题名称为name的标头,内容以整数类型返回
getDateHeader(String name) long 获取标题名称为name的标头,内容以日期类型返回
getCookies() Cookie 获取相关的Cookie
getContextPath() String 获取Context的路径
getMethod() String 获取客户端的提交方式
getProtocol() String 获取使用的HTTP协议
getQueryString() String 获取请求的字符串
getRequestSessionId() String 获取客户端的Session ID
getRequestURI() String 获取请求的URI
getRemoteAddr() String 获取客户端IP地址

 

四、response对象:用来向客户端传送输出信息。

 

方法 返回值 方法说明
addCookie(Cookie cookie) void  
addDateHeader(String name,long date) void  
addHeader(String name,String value) void  
addIntHeader(String name,int value) void  
setDateHeader(String name,long date) void  
setHeader(String name,String value) void  
setIntHeader(String name,int value) void  
sendError(int sc) void 传送状态码
sendError(int sc,String msg) void 传送状态码和错误信息
setStatus(int sc) void 设置状态码
sendRedirect(String URL) void 页面重定向,用来实现页面跳转

 

注:这里的response对象的sendRedirect(String URL)方法设置页面重定向将改变浏览器地址栏信息,所以也称客户端跳转。

实例1:response对象实现页面的自动刷新:只需要早JSP页面中加上

<%--使用response对象的setIntHeader设置属性Refresh的值(单位为秒)来实现页面自动刷新--%> <% response.addIntHeader("Refresh",10); %>

 

实例2:实现页面自动跳转:可以通过response对象的setHeader()方法添加一个标题为Refresh的标头,并制定页面跳转时间及跳转页面,从而实现页面自动跳转。 <% response.setHeader("Refresh","10;URL=http://www.baidu.com"); %>

  这里使用setHeader方法添加一个标题为"Refresh",值为"10,URL=http://www.baidu.com"的标头。

 

 

五、out对象:用来向页面输出信息。

 

方法 返回值类型 方法说明
clear() void 清除网页上输出内容
clearBuffer() void 清除缓冲区内容
close() void 关闭缓冲区,清除所有内容
getBufferSize() int 取得缓冲区大小
getRemaining() int 取得缓冲区剩余大小
isAutoFulsh() boolean 获得缓冲区是否进行自动清除的信息
print(String str) void 进行页面输出
println(String str) void 进行页面输出并换行

 

 

 

六、session对象:用来表示用户的会话状况,一般用于保存用户的各种信息,直到生命周期超时或者被认为释放掉为止。

 

方法 返回值类型 方法说明
getId() String 获取session的ID
getCreationTime() long 获取session的生成时间
getLashAccessedTime() long 获取用户最后通过session发送请求时间
getMaxInactiveInterval() long 获取session生命周期,如果超过这个时间则失效
invalidate() void 清空session内容
isNew() boolean 判断session是否为“新”的
setMaxInactiveInterval() void 设置session生命周期,如果超过这个时间则失效

 

七、application对象:用来取得和设置Servlet的相关信息。

 

方法 返回值类型 方法说明
getMajorVersion() int 获取主要的Servlet API版本
getMinorVersion() int 获取次要的Servlet API版本
getServerInfo() String 获取服务器版本
getMimeType() String 获取指定文件的MIME类型
getContext() ServerContext 获取指定Local的Application context
getRealPath String 获取指定path的绝对路径

 

八、pageContext对象:可以用来设置page范围的属性,还可以设置其他范围属性,不过需要指定范围参数,同时还可以获取其他内置对象。

 

方法 返回值 方法说明
getException() Exception 获取当前的exception内置对象
getOut() JspWriter  
getPage() Object  
getRequest() ServletRequset  
getResponse() ServletResponse  
getServletConfig() ServletConfig  
getServeltContext() ServletContext  
getSession() HttpSession  
getAttribute(String name,int scope) Object 获取指定范围的name属性值
getAttributeNamesInScope(int scope) Enumeration 获取指定范围所有属性名称
getAttributesScope(String name) int 获取属性名称为name的属性范围
removeAttribute(String name) void 移除属性名称为name的 属性
removeAttribute(String name,int scope) void 移除指定范围的属性名称为name的 属性
setAttribute(String name,Object value,int scope) void 设置指定范围的name属性
findAttribute(String name) Object 寻找所有范围的属性名称为name的属性

 

九、page对象:page对象代表JSP转译后的Servlet,通过page对象可以非常方便地调用Servlet类中定义的方法。

实例1:通过page对象调用Servlet类中定义的方法 

<%@ page language="java" contentType="text/html;charset=gb2312"%> <%@ page info="this is the page Object Practice" %> <html> <head> <title>page对象</title> </head> <body> <%--通过page对象调用Servlet中的getServletInfo()方法 --%> <% String info = ((javax.servlet.jsp.HttpJspPage)page).getServletInfo(); %> <%=info %> </body> </html>

  

输出:this is the page Object Practice.

 

十、config对象:可以用来获取Servlet的配置信息。

 

方法 返回值类型 方法说明
getInitParameter(name) String 获取Servlet初始化参数
getInitParameterNames() Enumeration 获取Servlet所有初始化参数名称
getServletContext() ServletContext 获取当前Application context
getServletName() String 获取Servlet名称

 

十一、exception对象:用来处理错误异常,如果要用exception对象,必须指定page中的isErrorPage属性值为true。

实例:exception用来处理错误异常

1、包含错误的页面:error.jsp

<%@ page language="java" contentType="text/html;charset=gb2312" errorPage="ExceptionDemo01.jsp"%> <html> <head> <title>错误页面</title> </head> <body> <% int[] arr = {1,2,3}; out.println(arr[3]); %> </body> </html>

 

 注:error.jsp中arr[3]数组下表越界.需在page指令中指定errorPage的属性值为相应的异常处理程序。

2、异常处理页面:exceptionDo.jsp

<%@ page language="java" contentType="text/html;charset=gb2312" isErrorPage="true"%> <%@page import="java.io.PrintStream"%> <html> <head> <title>处理错误异常</title> </head> <body> <%=exception%><br> <%=exception.getMessage()%><br> <%=exception.getLocalizedMessage()%><br> <% exception.printStackTrace(new java.io.PrintWriter(out)); %> </body> </html>

 

 注:必须在page指令中指定属性isErrorPage属性值为true。也就是说这个页面可以用于异常处理。

将会在exceptionDo.jsp中打印出error.jsp中的数组下标越界异常 信息

分享到:
评论

相关推荐

    jsp9个内置对象

    jsp9个内置对象

    jsp九个内置对象 六个基本动作 三个指令元素

    ### JSP九个内置对象 六个基本动作 三个指令元素 #### 四种属性范围 在JSP中,有四种不同的属性范围,这些范围决定了属性的生命周期与可见性: 1. **Page Scope (页面作用域)**:仅在一个JSP页面内有效。一旦该...

    jsp九大内置对象

    ### JSP九大内置对象详解 #### 一、Request对象 - **定义**:`javax.servlet.http.HttpServletRequest` 类型的对象。 - **用途**:用于接收客户端发送到服务器端的数据(包括但不限于HTTP请求头、请求参数等)。 - ...

    jsp九大内置对象讲解

    request对象是JSP九大内置对象之一,每当客户端请求一个JSP页面时,JSP引擎就会制造一个新的request对象来代表这个请求。request对象提供了一系列方法来获取HTTP头信息、cookies、HTTP方法等等。 2. response对象...

    JSP的九个内置对象及四个作用域

    JSP 九个内置对象及四个作用域 JSP(Java Server Pages)是一种基于Java的服务器端脚本语言,用于生成动态网页。在JSP中,九个内置对象是指不需要预先声明就可以在脚本代码和表达式中使用的对象,这些对象都是javax...

    jsp 9个内置对象

    ### JSP中的九个内置对象详解 在Java Server Pages(JSP)技术中,有九个内置对象,它们是JSP引擎自动创建并提供给开发者使用的,无需显式实例化。这九个内置对象分别是:`out`、`request`、`response`、`session`...

    JSP九大内置对象

    jsp九大内置对象是学习jsp必须了解的内容,所以现在总结一下,以便以后学习中可以使用。

    Jsp九大内置对象代码

    在"Jsp九大内置对象对应代码"这个压缩包中,包含了针对这九大内置对象的具体应用示例。通过这些代码,你可以更深入地理解每个对象的功能和使用场景。例如,你可能会看到如何使用request对象获取参数,如何通过...

    Jsp的九个内置对象

    **JSP内置对象详解** JSP(Java Server Pages)是一种动态网页技术,它允许开发者将HTML、CSS和Java代码结合在一起,以实现服务器端的逻辑处理。在JSP中,有九个内置对象,它们提供了方便的功能,无需显式创建就...

    JSP内置对象实验报告.doc

    charset=UTF-8");...通过这些实验,你可以深入理解JSP内置对象的用途和功能,并学会如何在实际开发中有效利用它们来构建更复杂的Web应用程序。练习部分鼓励你尝试更多的方法和属性,以增强你的理解和实践能力。

    jsp九大内置对象.doc

    【jsp九大内置对象】是JavaServer Pages (JSP) 技术的核心组成部分,它们提供了一种方便的方式来访问和操作与HTTP请求相关的各种信息。以下是这九大内置对象的详细说明: 1. **Request对象**:全称为...

    jsp内置对象 jsp的几个内置的对象图解

    jsp内置对象 有关jsp的一些内置的对象的总结

    jsp九种内置对象举例讲解

    以下是JSP的九种内置对象,其中我们将详细讨论`request`对象,并简要提及其他几个。 1. **request对象**: `HttpServletRequest`类型的`request`对象用于处理客户端的HTTP请求。它包含了用户提交的所有信息,包括...

    jsp9大内置对象讲解

    在JavaServer Pages (JSP) 技术中,开发者可以使用九个预定义的、与请求处理相关的对象,这些对象被称为“内置对象”。这些对象提供了对HTTP请求的访问,简化了网页开发,使得程序员能够更高效地处理用户交互。以下...

    JSP语法与内置对象课件

    ### JSP内置对象 1. **PageContext对象**: 提供了访问JSP页面所有作用域的统一接口,如获取请求、响应、session等对象。 2. **Request对象**: `HttpServletRequest`,代表客户端的HTTP请求,提供了获取请求参数、...

    JSP内置对象(9个常用的内置对象)

    ### JSP内置对象详解 #### 一、Request对象 ...以上就是关于JSP内置对象的一些详细介绍,每个对象都有其特定的功能和作用范围,了解并熟练掌握这些内置对象可以帮助开发者更高效地进行Web应用开发。

Global site tag (gtag.js) - Google Analytics