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中的数组下标越界异常 信息

JSP 的9个内置对象的更多相关文章

  1. 在IDEA中使用JSP中的out内置对象,out.println()——println红色解决方法

    今天在学习JSP的时候,在jsp中使用out内置对象,开发工具用的是IDEA,结果如下图所示 郁闷了半天找度娘,可能关键字输的不准确,乱七八糟的方法一大堆,什么加依赖啊啥的,反正都不管用,最后找到一篇 ...

  2. Jsp的九个内置对象

    一.什么是内置对象?在jsp开发中,会频繁使用到一些对象.例如HttSession,ServletContext,HttpServletRequest.如果我们每次要使用这些对象都去创建这些对象,就会 ...

  3. 【JSP】JSP基础学习记录(三)—— JSP的9个内置对象

    本节说一下JSP中的9个内置对象.这9个内置对象都是Servlet API接口的实例,只是JSP规范对他们进行了默认初始化(由JSP页面对应Servlet的_jspService()方法来创建这些实例 ...

  4. 在jsp中常用的内置对象(5个)小总结和两种页面跳转方式(服务器端调转、客户端跳转)的区别

    jsp中常用的几个内置对象: 一.request对象 主要作用:  (1)获取请求页面的信息   比如:request.getParameter("参数名");  (2)获取客户端 ...

  5. JavaWeb笔记——Jsp的指令、内置对象和动作标签

    JSP三大指令   一个jsp页面中,可以有0~N个指令的定义! 1. page --> 最复杂:<%@page language="java" info=" ...

  6. jsp页面元素和内置对象

    java server pages其根本是一个简化的servlet设计.实现了在java当中使用html标签.javaEE标准 一.页面元素 1.静态内容 html.js.css相关标签元素. 2.指 ...

  7. JSP第二篇【内置对象的介绍、4种属性范围、应用场景】

    什么是JSP内置对象 JSP引擎在调用JSP对应的jspServlet时,会传递或创建9个与web开发相关的对象供jspServlet使用.JSP技术的设计者为便于开发人员在编写JSP页面时获得这些w ...

  8. JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象

    Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...

  9. JSP三大指令 六大内置对象

    (1)include指令 作用: 在当前页面用于包含其他页面 语法: <%@include file=”common/header.jsp”%> (2)page指令 作用: 告诉tomca ...

随机推荐

  1. Java class文件分析工具 -- Classpy

    Classpy Classpy是一个图形化的class文件分析工具,功能和javap类似,界面主要參考了Java Class Viewer: 为什么要又一次创造轮子? 写这个工具花了将近一周的时间.那 ...

  2. 注解配置 ssh

    注解 <?xml version="1.0" encoding="UTF-8"? > <beans xmlns="http://ww ...

  3. BitNami一键安装Redmine

    1. 简单介绍 对于一个新手,假设严格依照官方文档来安装redmine,我想会"疯"掉的.有没有一种简便的方法.有滴,那就是BitNami. BitNami提供redmine的一键 ...

  4. ceph install

    Ceph : performance, reliability and scalability storage solution Contents 1 Introduction 1.1 Testing ...

  5. html里面自定义弹出窗口

    网页上默认的提示框或对话框一般比较丑,可以利用div遮盖层来自定义对话框 1.定义一个按钮或者链接(项目里面是通过点击一个图片) <img src="images/zz.gif&quo ...

  6. 【转】理解RESTful架构

    [转]理解RESTful架构 越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时( ...

  7. python成长之路——第六天

    定义 Python 的 Class 比较特别,和我们习惯的静态语言类型定义有很大区别. 1. 使用一个名为 __init__ 的方法来完成初始化.2. 使用一个名为 __del__ 的方法来完成类似析 ...

  8. Java -- WeakHashMap

    一.引言 Java中的引用类型由四种情况,强引用.软引用.弱引用.虚引用.关于这些的介绍可以参见鄙人另外一篇博文.                                           ...

  9. POJ 3047 Fibonacci

    DEBUG很辛苦,且行, 且珍惜 原代码: ans[0][0] = (ans[0][0] * a[flag][0][0] + ans[0][1] * a[flag][1][0]) % 10000; a ...

  10. onekey_fourLED

    也许我们刚开始用到开发板的时候都会去做跑马灯的程序,后来给我们的要求是,如果硬件接口有限制,只有一个key 或者是button—— 我们的板子上是button,让你用一个button去控制这四个led ...