JSP九大内置对象

您所在的位置:网站首页 jsp的隐藏对象 JSP九大内置对象

JSP九大内置对象

2023-07-27 10:17| 来源: 网络整理| 查看: 265

虽然现在基本上使用SpringMVC+AJAX进行开发了Java Web了,但是还是很有必要了解一下JSP的九大内置对象的。像request、response、session这些对象,即便使用其他框架也是会经常用到的。因此十分有了解的必要。

这些对象可以在JSP页面中调用,而不需要事先定义,这使得JSP编程更加的方便和快捷。其实这些内置对象都对应着某个Servlet类,在JSP被翻译成Servlet之后,这些内置对象会相应转换成对应的类实例。

JSP中使用到的内置对象主要有如下九个:

request内置对象 response内置对象 page内置对象 session内置对象 application内置对象 out内置对象 exception内置对象 config内置对象 pageContext内置对象

在jsp开发当中使用比较多的就request、response、session和out对象。

下面是各个对象的介绍和使用实例。

一、request内置对象

request内置对象是最常用的对象之一,它代表的是java.servlet.HttpServletRequest类的对象。request内置对象中包含了有关浏览器请求的信息,并提供了多个用于获取cookie、header以及session内数据的方法。

request对象常用方法

request对象主要用于客户端请求处理,其中,该对象中所包含的方法有:

request对象主要用于客户端请求处理,其中,该对象中所包含的方法有: getMethod():返回HTTP请求信息中所使用到的方法名称; getServletPath():返回请求信息中调用Servlet的URL部分; getQueryString():返回HTTP GET请求信息中URL之后的查询字符串; getContentType():返回请求实体的MIME类型; getProtocol():返回请求信息中的协议名名字与版本号; getPathInfo():返回有关任何路径信息; getServletName():返回接受请求的服务器主机; getServletPort():返回服务器的端口号; getRemoteHost():返回提交请求的客户机的规范名字; getRemoteAddr():返回提交请求的客户机的IP地址; getScheme():返回请求使用的模式(协议)名字; getParameter():返回客户端通过表单提交过来的参数值。例如request.getParameter(“myname”),通过该语句来获取客户端传递过来的myname 参数。 getContextPath():返回HTTP 请求中指示请求上下文的部分。 getHeaderNames():返回一个枚举类型,此枚举集合中包含了请求所含有的所有请求名。 getAuthType():返回用于保护Servlet 的认证模式的名字。例如,BASIC,SSL 或者NULL(没有保护)。 gtRequestURL():返回HTTP 请求信息中的第一行从协议名开始直至查询字符串之间的URL 部分。例如,对HTTP GET 请求http://www.zzbsite.com/helloworld?name=johnson&age=20,这个方法将返回http://www.zzbsite.com/helloworld 字符串。 gtCountLength():返回整数,表示请求实体的长度(以字节为单位)。 gtUestPrincipal():返回java.security 类的Principal 对象,其中包含有目前授权用户的名字。 iUserInRole(String role):返回一个布尔值,指示某个授权用户是否包含在某个具体的逻辑角色role 中。 gtRemoteHost():如果用户已经被授权,则返回提交请求的用户的注册名字,否则返回一个NULL。

request常用方法的实例

下面通过一个实例讲解来让读者了解有关request内置对象中的常见调用方法。创建一个request.jsp文件,该文件的详细源代码如下:

request 内置对象的实例 Get request results: 返回HTTP 请求信息中使用的方法名称: 返回请求信息中调用Servlet 的URL 部分: 返回HTTP GET 请求信息中URL 之后的查询字符串: 返回请求实体的MIME 类型: 返回请求信息中的协议名名字和版本号: 有关任何路径信息: 返回接受请求的服务器主机: 返回服务器的端口号: 返回提交请求的客户机的规范名字: 返回提交请求的客户机的IP地址: 返回请求中使用的模式(协议)名字: 返回这个request值,提交过来的值:

程序说明:request中的getParameter()方法是最为常用的,使用此方法获取到上一页面所提交的参数值。此处,页面通过提交了一个myname参数给本页面,并调用request.getParameter(“myname”)获取到这个参数值。页面中的其他request方法是用来获取各种请求信息。

二、response内置对象

response对象与request对象相对应,它是用于响应客户请求,向客户端输出信息。response是javax.servlet.HttpServletResponse类的对象。

response对象的常用方法

response对象提供了多个方法用来处理HTTP响应,可以调用response中的方法修改ContentType中的MIME类型以及实现页面的跳转等等, 比较常用的方法如下:

setContentLength(int len):此方法用于设置响应头的长度。 setContentType(String type):用于设置HTTP响应的contentType中的MIME类型,其中可以包含字符编码的规则。例如可以把contentType设置为“text/html;charset=GBK”。在Servelet编写过程中,需要调用此方法进行设置,但是在JSP中一般都是使用page指令直接指定contentType的属性。 getOutputStream():此方法返回一个Servlet的输出流。用于在响应中写入二进制数据。Servlet容器不对二进制数据进行编码。 getWriter():此方法返回一个PrintWriter对象,在Servlet编写过程使用的比较频繁,而在JSP文件中,由于out是用getWriter()创建的PrintWriter对象的隐含对象,所以可以直接调用out对象作输出响应。 getCharacterEncoding():该方法获得此时响应所采用的字符编码类型。 sendError(int status):使用指定错误状态码向客户机发送相应的错误信息。 sendError(int status, String message):使用自定义的错误状态码以及描述信息向客户机发送错误的提示信息。 sendRedirect(String location):将请求重新定位到一个不同的URL(页面)上。此方法在实际开发过程中会经常使用到。 setDateHeader(String headername, long date):把指定的头名称以及日期设置为响应头信息。其中日期是用long值表示的,这是按照从新纪元开始算起的毫秒数。 ContainsHeader(String name):检测指定的头信息是否存在。返回一个布尔类型。 setHeader(String headername, String value):此方法使用指定的头名字以及相应的值来设置头信息。如果此头信息已经设置,则新的值会覆盖掉旧的值。如果头信息已经被发送出去,则此方法的设置将被忽略。 addheader(String headername, String value):把指定的头名字以及相应值添加到头信息当中去。 addIntHeader(String headername, int value):把指定的头名字以及整数值设置为头信息。如果头信息已经设置了,则新的设置值将覆盖掉以前的值。 setStatus(int sc):给响应设置状态的代码。 setStatus(int sc, String sm):为响应设置状态代码以及信息。这是在没有错误的时候使用的。

这些方法中,getWriter()和sendRedirect(String location)在实际开发中使用的最为频繁。getWriter()常出现在Servlet编写中。

response对象的getWriter()方法实例

在服务器端的Servlet类文件中,会经常使用getWriter()方法来获取一个PrintWriter对象,从而调用其中的println()方法来向客户端输出内容。下面一段Servlet的代码实例:

package com.helloworld; import java.io.PrintWriter; //引入PrintWriter类 import javax.servlet.http.HttpServletResponse; //引入HttpServletResponse类 public class PrintHTML { //打印出HTML代码的方法 public static void printHTML(HttpServletResponse response) throws Exception{ PrintWriter out = response.getWriter(); //调用HttpServletResponse类中的getWriter()方法。 out.println(""); out.println("这是HttpServletResponse类中的getWriter()方法的例子"); out.println(""); } }

程序说明:该Java代码动态地向客户端返回一个简单的HTML页面。 注意:在JSP页面中,response就是HttpServletResponse类的一个对象,可以直接使用response在JSP页面中调用HttpServletResponse类中所有方法。

页面重定向实例

下面再通过一个例子来加深对用于页面重定向的sendRedirect(String location)方法的理解。在helloworld模块下创建一个index4.jsp文件:

response.sendRedirect()使用例子 本页 hello页面 goodbye页面

程序说明:页面中有个下拉菜单,选择需要跳转的页面。request内置对象通过getParameter()方法获取到传递过来的参数值,response对象再根据参数值不同调用sendRedirect()方法进行页面跳转。

重定向的hello.jsp页面代码如下:

Goodbye.jsp页面代码为:

三、page内置对象

page对象有点类似于Java编程中的this指针,就是指当前JSP页面本身。page是java.lang.Object类的对象。

page对象的常用方法

比较常用的page内置对象的方法有:

getClass():返回当时Object的类。 hashCode():返回此Object的哈希代码。 toString():把此时的Object类转换成字符串。 equals(Object o):比较此对象是否和指定的对象是否相等。 copy(Object o):把此对象复制到指定的对象当中去。 clone():对此对象进行克隆。

由于page内置对象在实际开发过程并不经常使用,所以page对象的其他方法在这里就不一一列举出来了。

page的常用方法实例

下面举一个实例来加深对page内置对象使用的理解。创建一个page.jsp文件,其详细源代码如下:

Page内置对象的实例 getClass: hashCode: toString: equals: equlas2: 四、session内置对象

session是与请求有关的会话期,它是java.servlet.http.HttpSession类的对象,用来表示和存储当前页面的请求信息。

在实际的Web应用开发过程会经常遇到这样的一个问题:会话状态的维持。当然有很多种方法可以用来解决这个问题,例如:Cookies、隐藏的表单输入域或者将状态信息直接附加到URL当中去,但是这些方法使用非常不便。

Java Servlet提供了一个可以在多个请求之间持续有效的会话对象HttpSession,此对象允许用户存储和提取会话状态的信息。JSP同样也支持了Servlet中的这个概念。JSP中的session内置对象就是对应于Servlet中的HttpSession对象。当Web应用系统希望通过多个页面完成一个事务的时候,session的使用是非常有用和方便的。

session对象的常用方法

session内置对象中的常用方法如下:

getId():此方法返回唯一的标识,这些标识为每个session而产生。当只有一个单一的值与一个session联合时,或当日志信息与先前的sessions有关时,它被当作键名用。 getCreationTime():返回session被创建的时间。最小单位为千分之一秒。为得到一个对打印输出很有用的值,可将此值传给Date constructor 或者GregorianCalendar的方法setTimeInMillis。 getLastAccessedTime():返回session最后被客户发送的时间。最小单位为千分之一秒。 getMaxInactiveInterval():返回总时间(秒),负值表示session永远不会超时。 getAttribute(String key):通过给定的关键字获取一个存储在session中相对应的信息。例如,Integer item = (Integer) session.getAttrobute("item")。 setAttribute(String key, Object obj):提供一个关键词和一个对象值,然后存在session当中。例如,session.setAttribute("ItemValue", itemName)。

session一般在服务器上设置了一个30分钟的过期时间,当客户端停止操作后30分钟,session中存储的信息会自动失效。

另外读者要非常注意的,session中保存和查找的信息不能是基本的类型,如int、double等,而必须是Java相对应的对象,例如Integer、Double等。

问题回答操作实例

接下来本书将创建三个页面来模拟一个多页面的Web应用,使得读者能够对session的使用有深入的了解。第一个页面(session1.jsp)仅仅包含了一个要求输入用户名的HTML表单,代码如下:

用户名输入页面 用户名: 程序说明:通过把参数提交给session2.jsp页面进行处理。这一页面的效果如图8.4所示。

第二个页面(session2.jsp)需要通过request对象获取session1.jsp页面中的username参数值,并把它保存在session中。session对象是以哈希表存储信息的。session2.jsp的另外一个操作是询问第二个问题,具体的代码如下:

回答问题页面 您的用户名为: 您喜欢吃什么: 程序说明:使用request内置对象中的getParameter()方法获取到session1.jsp页面传递过来的参数值,并使用session对象中的setAttribute()方法把用户名当着对象存储在session的哈希表中,这里需要指定一个关键字theusername。另外页面使用向session3.jsp页面递交了另外一个参数food。

第三个页面(session3.jsp)主要任务是显示回答结果。具体代码如下:

显示答案 您的用户名: 您喜欢吃:

程序说明:通过关键字theusername使用session对象中的getAttribute(String key)方法获取到用户名,并把用户名和第二个问题的答案显示出来。

session内置对象的使用非常频繁,例如,使用session来存储用户的信息,并可以根据session中的用户对象是否为空来判断用户是否已经登陆。所以读者对此对象的使用要熟练掌握。

五、application内置对象

application是javax.servlet.ServletContext类对象的一个实例,用于实现用户之间的数据共享(多使用于网络聊天系统)。

application对象与session对象的区别

它的作用有点类似于前一节介绍的session内置对象。但是它们之间还是有区别的,一般来说,一个用户对应着一个session,并且随着用户的离开session中的信息也会消失,所以不同客户之间的会话必须要确保某一时刻至少有一个客户没有终止会话;而applicat则不同,它会一直存在,类似于系统的“全局变量”,而且只有一个实例。

application对象的常用方法

application内置对象的常用方法如下:

getAttribute(String key):通过一个关键字返回用户所需要的信息,返回类型为对象(Object),类似于session中的getAttribute(String key)方法。 getAttributeNames():返回所有可用的属性名,返回类型为枚举(Enumeration)。 setAttribute(String key, Object obj):保存一个对象信息,并指定给一个关键字。 removeAttribute(String key):通过关键字来删除一个对象信息。 getServletInfo():返回JSP引擎的相关信息。 getRealPath(String path):返回虚拟路径的真实路径。 getContext(String URLPath):返回执行Web应用的application对象。 getMajorVersion()和getMinorVersion():返回服务器所支持的Servlet API最大和最小版本号。 getMineType(String file):返回指定文件的MIME类型。 getResource(String path):返回指定资源的URL路径。 getResourceAsStream(String path):返回指定资源的输入流。 getRequestDispatcher(String URLPath):返回指定资源的RequestDispatcher对象。 getServlet(String name):返回指定名称的Servlet。 getServlets():返回所有的Servlet,返回类型为枚举型。 getServletNames():返回所有的Servlet名称,返回类型为枚举型。 log(String msg):把指定信息写入到Servlet的日志文件中。 log(String msg, Throwable throwable):把栈轨迹以及给出的Throwable异常的说明信息写入Servlet的日志文件。

网站计数器实例

同样,下面将通过一个实例来讲解Application内置对象中常用方法的使用。

在模块helloworld中创建一个setappattr.jsp页面,用于获取application内置对象中的信息以及设置计数初始值,详细代码如下:

获得application信息 ServletInfo: application.jsp real path: HelloServlet Real Path: Major Version: get MIME: getResource:

程序说明:此处调用了application内置对象中的setAttribute()方法来存储用户名信息以及计数初始值。

另外在相同目录下创建另外一个getappattr.jsp文件,用于获取计数值。具体的代码如下:

获得用户名: 计数值:

程序说明:和session对象一样,application存储的是对象类型而不是普通的数值类型。此处调用了application对象中的getAttribute()方法来获取前一个页面所存储的信息,并把读取出的计数值加一,然后重新存储在application当中去。

当关闭以上运行的两个浏览器窗口,再多次交替地打开和关闭getappattr.jsp窗口,会看到计数值一直在递增,只用tomcat服务不关闭。而session对象存储的信息会随着窗口的关闭而释放。

六、out内置对象

out对象是在JSP开发过程中使用得最为频繁的对象,但使用也是最为简单的。

out对象的常用方法

out对象的常用方法如下:

print():在页面中打印出字符串信息,不换行; println():在页面中打印出字符串信息,并且换行; clear():清除掉缓冲区中尚存在的内容。 clearBuffer():此方法清除掉当前缓冲区中尚存在的内容。 flush():清除掉数据流。 getBufferSize():返回缓冲区的内存大小,单位为字节流。如果不进行缓冲区的设置,大小为0。 getRemaining():此方法返回缓冲区还剩下多少字节数可以使用。 isAutoFlush():检查当前缓冲区是设置为自动清空,还是满了就抛出异常。 close():关闭输出流。

其中print()与println()两个方法是使用最为频繁的。

数据输出实例

下面,同样将举一个例子来讲解out内置对象的使用方法。创建一个out.jsp文件,详细代码如下:



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3