虽然现在基本上使用SpringMVC+AJAX进行开发了Java Web了,但是还是很有必要了解一下JSP的九大内置对象的。像request、response、session这些对象,即便使用其他框架也是会经常用到的。因此十分有了解的必要。
这些对象可以在JSP页面中调用,而不需要事先定义,这使得JSP编程更加的方便和快捷。其实这些内置对象都对应着某个Servlet类,在JSP被翻译成Servlet之后,这些内置对象会相应转换成对应的类实例。
JSP中使用到的内置对象主要有如下九个:
1 2 3 4 5 6 7 8 9 | 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对象主要用于客户端请求处理,其中,该对象中所包含的方法有:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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文件,该文件的详细源代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | <%@ page contentType= "text/html;charset=GBK" %> <html> <head><title> request 内置对象的实例 </title></head> <body> <form aciton= "request.jsp" > Get request results: <input type= "text" name= "myname" > <input type= "submit" name= "get value" > </form> 返回HTTP 请求信息中使用的方法名称:<%=request.getMethod()%> 返回请求信息中调用Servlet 的URL 部分:<%=request.getServletPath()%> 返回HTTP GET 请求信息中URL 之后的查询字符串:<%=request.getQueryString()%> 返回请求实体的MIME 类型:<%=request.getContentType()%> 返回请求信息中的协议名名字和版本号:<%=request.getProtocol()%> 有关任何路径信息:<%=request.getPathInfo()%> 返回接受请求的服务器主机:<%=request.getServerName()%> 返回服务器的端口号:<%=request.getServerPort()%> 返回提交请求的客户机的规范名字:<%=request.getRemoteHost()%> 返回提交请求的客户机的IP地址:<%=request.getRemoteAddr()%> 返回请求中使用的模式(协议)名字:<%=request.getScheme()%> 返回这个request值,提交过来的值:<%=request.getParameter( "myname" )%> </body> </html> |
程序说明:request中的getParameter()方法是最为常用的,使用此方法获取到上一页面所提交的参数值。此处,页面通过提交了一个myname参数给本页面,并调用request.getParameter(“myname”)获取到这个参数值。页面中的其他request方法是用来获取各种请求信息。
二、response内置对象
response对象与request对象相对应,它是用于响应客户请求,向客户端输出信息。response是javax.servlet.HttpServletResponse类的对象。
response对象的常用方法
response对象提供了多个方法用来处理HTTP响应,可以调用response中的方法修改ContentType中的MIME类型以及实现页面的跳转等等,
比较常用的方法如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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的代码实例:
1 2 3 4 5 6 7 8 9 10 11 | 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( "<table border=‘0‘ cellpadding=‘0‘ cellspacing=‘0‘ width=‘150‘ align=‘center‘>" );
out.println( "<tr><td height=‘5‘>这是HttpServletResponse类中的getWriter()方法的例子</td></tr>" );
out.println( "</table>" );
} } |
程序说明:该Java代码动态地向客户端返回一个简单的HTML页面。
注意:在JSP页面中,response就是HttpServletResponse类的一个对象,可以直接使用response在JSP页面中调用HttpServletResponse类中所有方法。
页面重定向实例
下面再通过一个例子来加深对用于页面重定向的sendRedirect(String location)方法的理解。在helloworld模块下创建一个index4.jsp文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <%@ page language= "java" contentType= "text/html;charSet=GBK" %> <html> <body> <center><h3>response.sendRedirect()使用例子</h3></center> <form action= "index4.jsp" >
<table border=1>
<tr>
<td>
<select name= "pg" >
<option value=0>本页</option>
<option value=1>hello页面</option>
<option value=2>goodbye页面</option>
</select>
</td>
</tr>
<tr><td><input type= "submit" value= "提交" ></td></tr>
</table> </form> <% String pg = request.getParameter( "pg" ); //获取传递参数pg if ( "1" .equals(pg)) //如果pg等于1 response.sendRedirect( "hello.jsp" ); //则页面重定向为hello.jsp else if ( "2" .equals(pg)) //如果pg等于2 response.sendRedirect( "goodbye.jsp" ); //则页面重定向为goodbye.jsp else //否则不进行页面重定向,即还显示本页 out.println( "没有进行页面重定向" ); %> </body> </html> |
程序说明:页面中有个下拉菜单,选择需要跳转的页面。request内置对象通过getParameter()方法获取到传递过来的参数值,response对象再根据参数值不同调用sendRedirect()方法进行页面跳转。
重定向的hello.jsp页面代码如下:
1 2 3 4 5 | <html>
<body>
<%out.print( "<center><h2>Hello!</h2></center>" );%>
</body> </html> |
Goodbye.jsp页面代码为:
1 2 3 4 5 | <html>
<body>
<%out.println( "<center><h2>Goodbye!</h2></center>" );%>
</body> </html> |
三、page内置对象
page对象有点类似于Java编程中的this指针,就是指当前JSP页面本身。page是java.lang.Object类的对象。
page对象的常用方法
比较常用的page内置对象的方法有:
1 2 3 4 5 6 | getClass():返回当时Object的类。 hashCode():返回此Object的哈希代码。 toString():把此时的Object类转换成字符串。 equals(Object o):比较此对象是否和指定的对象是否相等。 copy(Object o):把此对象复制到指定的对象当中去。 clone():对此对象进行克隆。 |
由于page内置对象在实际开发过程并不经常使用,所以page对象的其他方法在这里就不一一列举出来了。
page的常用方法实例
下面举一个实例来加深对page内置对象使用的理解。创建一个page.jsp文件,其详细源代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <%@ page language= "java" contentType= "text/html;charSet=GBK" %> <%@ page import= "java.lang.Object" %> <html>
<body> & 知识推荐
我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8
不良信息举报平台
互联网安全管理备案
Copyright 2023 www.wodecom.cn All Rights Reserved |