JSP9个内置对象

来源:互联网 发布:java类构造器 编辑:程序博客网 时间:2024/04/28 00:33

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

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

 

内置对象类型作用域requestjavax.servlet.http.HttpServletRequestrequestresponsejavax.servlet.http.HttpServletResponseresponsepageContextjavax.servlet.jsp.PageContextpagesessionjavax.servlet.http.HtpSessionsessionapplicationjavax.servlet.jsp.ServletContextapplicationoutjavax.servlet.jsp.JspWriterpageconfigjavax.servlet.ServletConfigpagepagejava.lang.Objectpageexceptionjava.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:指属性在一次请求范围内有效。如果页面从给一个页面跳转到另一个页面,那么该属性就失效了。这里所指的跳转是指客户端跳转,比如客户单击超链接跳转到其他页面或者通过浏览器地址栏浏览其他页面。如果使用服务器端跳转<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获取相关的CookiegetContextPath()String获取Context的路径getMethod()String获取客户端的提交方式getProtocol()String获取使用的HTTP协议getQueryString()String获取请求的字符串getRequestSessionId()String获取客户端的Session IDgetRequestURI()String获取请求的URIgetRemoteAddr()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的IDgetCreationTime()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 contextgetRealPathString获取指定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 contextgetServletName()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中的数组下标越界异常 信息

原创粉丝点击