java 9个内置对象_JSP系列四:JSP9个内置对象

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

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

内置对象类型作用域

requestjavax.servlet.http.HttpServletRequestrequest

responsejavax.servlet.http.HttpServletResponseresponse

pageContextjavax.servlet.jsp.PageContextpage

sessionjavax.servlet.http.HtpSessionsession

applicationjavax.servlet.jsp.ServletContextapplication

outjavax.servlet.jsp.JspWriterpage

configjavax.servlet.ServletConfigpage

pagejava.lang.Objectpage

exceptionjava.lang.Throwablepage

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

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

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

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

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

移除属性 "); out.println("page范围:age属性值为" + strAge+ "
"); out.println("page范围:sex属性值为" + strSex); %>

结果页面输出: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页面中加上

实例2:实现页面自动跳转:可以通过response对象的setHeader()方法添加一个标题为Refresh的标头,并制定页面跳转时间及跳转页面,从而实现页面自动跳转。

这里使用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

getRealPathString获取指定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对象

输出: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

错误页面

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

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

处理错误异常

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值