JSP的内置对象(一)
( 1 ) Out 对象out对象主要功能是把结果输出到网页上。
out对象的方法:
out.println(String Contents)和out.print(String Contents):输出Contents。两者最大的差别在于println( )在输出的数据后面会自动加上换行符号,下一个输出语句将在下一行开始输出;而print( )在输出的数据后面不会加上换行符号,下一个输出语句将继续在本行输出。
out.newLine():输出一个换行符号。
out.clear():清除缓冲区里的数据,但不把数据写到客户端去。
out.clearBuffer():清除缓冲区里的数据,并且把数据写到客户端去。
out.getBufferSize():获取当前缓冲区的大小(KB)。JSP的语法允许用户通过调用page 指令中的buffer(buffer="none|8kb|sizekb")属性调整缓冲区的大小,甚至允许用户关闭缓冲区。
out.getRemaining():获取使用后还剩余的缓冲区的大小(KB)。
out.isAutoFlush():如果auto flush(若缓冲区满了,会自动清除),那么返回true;反之,如果不是auto flush(若缓冲区满了,不会自动清除,而会产生异常处理),则返回false。是否auto fush可以用<% @page AutoFlush="true|false"%>来设置。
out.close():关闭输出流,清除所有的内容,从而可以强制终止当前页面的剩余部分向浏览器输出。
例子:
Out.jsp
<%@ page contentType="text/html;charset=GB2312" %>
<html>
<head>
<title>Out.jsp</title>
</head>
<body>
<h2>javax.servlet.jsp.JspWriter - out 对象</h2>
<%
int BufferSize = out.getBufferSize();
int Available = out.getRemaining();
int Used = BufferSize - Available;
%>
BufferSize : <%= BufferSize %><br>
Available : <%= Available %><br>
Used : <%= Used %><br>
</body>
</html>
out对象一般只在Scriptlet内使用,这是因为JSP表达式是自动发送到输出流的,很少需要专门调用out来输出。
(2)Request对象
Request对象代表了客户端的请求信息(如请求的来源、cookies和请求相关的参数值等等),主要用于接受客户端通过HTTP协议传送给服务器端的数据。通过request 可以查看请求参数的配置情况(调用 getParameter来实现 )、请求的类型(比如GET、POST、HEAD等等)以及请求的HTTP 头(Cookie、Referer等等 )。Request对象实现的是javax.servlet.http.HttpServletRequest接口。
Request对象的方法(分为四大类):
①能够储存和取得属性的方法
void setAttribute(String name,Java.lang.Object value):设定name属性的值为value。
void removeAttribute(String name):移除name属性的值。
Object getAttribute(String name):返回name属性的值。若不存在name属性,则返回null。
Enumeration getattributeNames():返回request对象所有属性的名字,结果集是一个Enumeration(枚举)类的实例。
※当 我 们 使 用Object getAttribute(String name)取得 name 属 性 的 值 时 ,它 会 回 传 一 个java.lang.Object,因此,我们还必须根据name属性值的类型做转换类型(Casting)的工作。
例如,若要取得String类型的Name属性时:
String Name = (String)Sessio.getAttribute("Name");
若要取得Integer类型的Year属性时:
Integer Year = (Integer)session.getAttribute("Year");
②能够取得请求参数的方法
String getParameter(String name):返回客户端传送给服务器端的某一个请求参数name的值。当请求参数name不存在时,则返回null。
String [] getParameterValues(String name):返回客户端传送给服务器端的某一个请求参数name的所有值。当请求参数name不存在时,则返回null。
Enumeration getParameterNames( ):返回客户端传送给服务器端的所有的参数名,结果集是一个Enumeration(枚举)类的实例。当传递给此方法的参数名不存在时,返回null。
Map getParameterMap( ):取得一个要求参数的 Map。
③能够取得请求HTTP标头的方法
Cookie[] getCookies( ):返回与客户端请求有关的cookie对象
String getHeader(String name):返回一个String类型的数据,表示客户端发送到服务器端的头信息。
int getIntHeader(String name):返回一个int类型的数据,表示客户端发送到服务器端的头信息中的某一个特定的信息。
long getDateHeader(String name):返回一个long类型的数据,表示客户端发送到服务器的头信息中的时间信息。
Enumeration getHeaders(String name):取得所有客户端发送到服务器端的头信息。
Enumeration getHeaderNames():取得客户端发送到服务器端的所有头信息的名称。
④其他的方法
String getServerName():获得服务器的名字。如果没有设定服务器名,则返回服务器IP地址。
int getServerPort():获得服务器的端口号。
String getRemoteAddr():获得客户端的IP地址。
String getRemoteHost():获得客户端主机的名字。如果客户端电脑没有设定名字,则返回客户端电脑的IP地址。
int getRemotePort():获得客户端主机的端口号。
String getRemoteUser():获得用户名。
String getMethod():获得客户端向服务器端传送数据的方法(GET、POST、PUT等)。
String getProtocol():获得客户端向服务器端传送数据所依据的协议名称,如http/1.0、http/1.1。
String getQueryString():获得查询字符串,该字符串由客户端以GET方法向服务器端传送。
String getRequestURI():获得发出请求字符串的客户端URL。
void etCharacterEncoding(String encoding):设定编码格式,用来解决窗体传递中文的问题。
HttpSession getSession(boolean create):返回和当前客户端请求相关联的HttpSession对象,如果当前客户端请求没有和任何HttpSession对象关联,那么当create变量为true时,则创建一个HttpSession对象并返回;反之,返回null。
Boolean isSecure():如果客户机是通过一个安全的访问方式访问的,就返回true;反之,返回false.
String getServletPath():获得客户端所请求的脚本文件的文件路径。
String getContextPath():返回环境路径。对于JSP来说,一般是当前Web应用程序的根目录。
String getRequestedSessionId():获得客户端的 Session ID。
Boolean isRequestedSessionIdValid():返回一个指示客户端请求发送Session ID是否仍然有效的布尔值。
Boolean isRequestedSessionIdFromCookie():返回一个指示客户端请求发送Session ID是否存在于Cookie中的布尔值。
Boolean isRequestedSessionIdFromURL():返回一个指示客户端请求发送Session ID是否存在于URL中的布尔值。
例子:
Request.html
<html>
<head>
<title> Request.html</title>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
</head>
<body>
<form action="Request.jsp" method="GET">
Name:<input type="text" name="Name" size="20" maxlength="20"><br>
Number:<input type="text" name="Number" size="20" maxlength="20"><br><br>
<input type="submit" value="传送">
</form>
</body>
</html>
Request.jsp
<%@ page language="java" contentType="text/html;charset=GB2312" %>
<html>
<head>
<title> Request.jsp</title>
</head>
<body>
<h2>javax.servlet.http.HttpServletRequest 接口所提供的方法</h2>
getParameter("Name"):<%= request.getParameter("Name") %><br>
getParameter("Number"):<%= request.getParameter("Number") %><br>
getAttribute("Name"):<%= request.getAttribute("Name") %><br>
getAttribute("Number"):<%= request.getAttribute("Number") %><br><br>
getAuthType( ):<%= request.getAuthType() %><br>
getProtocol( ):<%= request.getProtocol() %><br>
getMethod( ):<%= request.getMethod() %><br>
getScheme( ):<%= request.getScheme() %><br>
getContentType( ):<%= request.getContentType() %><br>
getContentLength( ):<%= request.getContentLength() %><br>
getCharacterEncoding( ):<%= request.getCharacterEncoding() %><br>
getRequestedSessionId( ):<%= request.getRequestedSessionId() %><b
getContextPath( ):<%= request.getContextPath() %><br>
getServletPath( ):<%= request.getServletPath() %><br>
getPathInfo( ):<%= request.getPathInfo() %><br>
getRequestURI( ):<%= request.getRequestURI() %><br>
getQueryString( ):<%= request.getQueryString() %><br><br>
getRemoteAddr( ):<%= request.getRemoteAddr() %><br>
getRemoteHost( ):<%= request.getRemoteHost() %><br>
getRemoteUser( ):<%= request.getRemoteUser() %><br>
getRemotePort( ):<%= request.getRemotePort() %><br>
getServerName( ):<%= request.getServerName() %><br>
getServerPort( ):<%= request.getServerPort() %><br>
</body>
</html>
在 Name的字段中输入 browser;Number字段中输入123456789,看看有什么结果。