欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

全面解析JSP内置对象

最编程 2024-08-11 10:04:04
...

java提供了预设的内置对象并内置在jsp的网页环境中,而且提供了编写jsp所需的基本功能。目前jsp中有9个隐含对象,分别为request、response、out、session、application、pageContext、config、page、exception。使用这些对象可以方便请求、响应或会话等信息。

jsp内置对象:
request:取得客户端数据与系统的信息。
response:响应客户端信息。
application:记录与处理上线者共享的数据。
session:记录与处理上线者的个别数据。
out:控制数据输出的操作。
config:取得JSP编译后Servlet的信息。
pageContext:存取与处理系统运行时期的各项信息。
page:表示当前的JSP网页。
request对象常用方法:

方法 说明
Object getAttribute(String name) 返回name 所指定的属性值
void setAttribute(String name,Object obj) 设定name所指定的属性值为obj
void removeAttribute(String name) 删除name所指定的属性
java.util.Enumeraton getAttributeNames() 返回request对象所有属性的名称集合
String getParameter(String name) 从客户端获取name所指定的参数值
java.util.Enumeraton getParameterNames() 从客户端获取所有参数名称
String [] getParameterValues(String name) 从客户端获取name所指定参数的所有值
int getServerPort() 返回服务器接收请求的端口
String getServerName() 返回服务器名称
String getRemoteAddr() 获取客户端的IP地址
int getRemotePort 获取客户端的请求端口
String getContextPath() 返回环境路径(Web服务程序根目录)
String getCharacterEncoding() 返回请求正文中所使用的字符编码
void setCharacterEncoding(String chaen) 设定请求正文中所使用的字符编码
Cookie[] getCookies() 返回客户端所有的Cookie对象
Session getSession() 返回请求相关的session对象
String getContentType() 返回请求正文的MIME类型
int getContentLength() 返回请求的Body的长度,单位为字节

response对象的常用方法

方法 说明
void sendRedirect(String redirectURL) 将客户端重定向到指定的URL
void setContentType(String contentType) 设置响应数据内容的类型
void setContentLength(int contentLength) 设置响应数据内容的长度
void setHeader(Stringname ,String value) 设置HTTP应答报文的首部字段和值以及页面的自动刷新
void setStatus(int n) 设置响应的状态行
ServletOutputStream getOutputStream() 获取二进制类型的输出流对象
printWriter getWriter() 获取字符类型的输出流对象
String encodeRedirectURL(String url) 编码指定的URL,以便向sendRedirect发送
int getBufferSize(int bufferSize) 获取缓冲区的大小
void setBufferSize(int bufferSize) 设置缓冲区的大小
void flushBuffer() 强制发送当前缓冲区的内容到客户端
void resetBuffer() 清楚响应缓冲区的内容
void addCookie(Cookie cookie) 向客户端发送一个cookie
void addHeader(String name,String value) 添加HTTP文件的头文件
boolean isCommitted() 判断服务器是否已将数据输出客户端
String encodeURL(String url) 编码指定的url

out对象

方法 说明
clear() 清除缓冲区的数据,若缓冲区中已经是空的,则会产生IOException的异常
clearBuffer() 清除缓冲区的数据,若缓冲区中已经是空的,并不会产生IOException的异常
flush() 直接将目前暂存于缓冲区中的数据输出
getBufferSize() 返回缓冲区的大小
getRemaining() 返回缓冲区中剩余的空间大小
isAutoFlush() 返回布尔值表示是否自动输出缓冲区中的数据
newLine() 输出换行
print(datatype data) 输出数据类型为datatype的数据data
println(datatype data) 输出数据类型为datatype的数据data并自动换行

session对象
建立session变量:session.setAttribute(“变量名称”,变量内容)
eg:session.setAttribute(“id”,编号);
返回session变量:session.getAttribute(“变量名称”);
返回所有session中的变量名称:session.getAttributeNames();
清除session中的变量:session.removeAttribute(“变量名称”);
结束session : session.invalidate();
其他session对象的常用方法:

方法 说明
getCreationTime() 返回session建立的时间,返回值为格林威治时间1970年1月1日开始算起到session建立时的毫秒数
getLastAceessedTime() 返回客户端对服务器端提出请求至处理session中数据最后的时间,若为新建立的session则返回-1
getMaxInactiveInterval() 返回客户端未对session提出请求而session开始停滞到自动消失之间所间隔的时间,返回值以秒为单位
isNew() 返回布尔值表示是否为新建的session
SetMaxInactiveInterval(int interval) 设置客户端未对session提出请求而session开始停滞到自动消失之间所间隔的时间为interval,以秒为单位

application 内置对象
建立application变量:application.setAttribute(“变量名称”,变量内容)
返回application中的变量:application.getAttribute(“变量名称”);
删除application中的变量数据:application.removeAttribute(“变量名称”);
返回所有的application变量:application.getAttributeNames();
使用application对象取得信息

方法 说明
getMajorVersion() 返回服务器解释引擎所支持的最新servlet API版本
getMinorVersion 返回服务器解释引擎所支持的最低servlet API版本
getMimeType(String file) 返回文件file的文件格式与编码格式
getRealPath(String path) 返回虚拟路径path的真实路径
getServerInfo() 返回服务器解释引擎的信息

application与session对象存储数据变量的方式有何区别?

application:记录联机用户共享的数据。
session:记录联机用户的个别数据。

pageContext 对象

方法 说明
Object getAttribute(String name) 返回当前页面内的name变量
void setAttribute(String name,Object obj) 设定当前页面内name的变量值为obj
void removeAttribute(String name) 删除当前页面内的name变量
HttpSession getSession() 取得页面的session对象
ServletContext getServletContext() 返回ServletContext对象,这个对象对所有的页面都是共享的
javax.servlet.ServletRequest getRequest() 该方法的返回对象时jsp内置对象request,主要用于获取客户端的信息

pageContext.setAttribute(“useName”,name)设置的属性在当前页面内有效
pageContext.getSession().setAttribute(“session value”,name)设置的属性在 session中有效
pageContext.getServeltContext().setAttribute(“sharevalue”,name)设置的属性对所有页面共享

config对象

方法 说明
String getInitParameter(String name) 返回name所指定的初始参数
java.util.Enumeration getInitParameterNames() 返回所有初始参数
ServletContext getServletContext 返回Servlet相关的上下文对象
String getServletName() 返回Servlet名称

exception对象

方法 说明
String getMessage() 返回错误信息
String getLocalizedMessage() 取得本地语系的错误提示信息
void printStackTrace() 以标准错误的形式输出一个错误和错误的堆栈
String toString() 该方法以字符串的形式返回一个对异常的描述
Throwable fillInStackTrace() 重写错误的堆栈

response重定向方法sendRedirect()和动作元素jsp:forward的区别

1)response.sendredirect()会在客户端呈现跳转后的URL地址;

这种跳转称为客户端跳转。使用response.sendredirect()将重定向的URL发送到客户端,

浏览器再根据这个URL重新发起请求。所以用这个方法时,

你在浏览器地址栏上会看到新的请求资源的地址。

并且这个时候的request,response都和第一次的不一样了。

这时是重新产生了新的request,response。

(2)使用<jsp:forward>完全是在服务器上进行,浏览器地址栏中的地址保持不变;

这种跳转称为服务器端跳转。所以使用这个方法时没有产生新的用request,response。

因为request没有变,在同一个请求内,可以用request来转递参数。

(3)response.sendRedirect()想带参数的话,

自己在地址中写成 xxx.jsp?param1=aaa&... 这种形式传递参数。

<jsp:forward>能够使用<jsp:param/>标签向目标文件传送参数和值 ,

目标文件必须是一个动态的文件,能够处理参数。

(4<jsp:forward>后面的语句不会被执行也不会继续发送到客户端,

response.sendRedirect()后面的语句会继续执行,除非语句前面有return。

(5<jsp:forward>是在服务器的内部进行转换,只发送给客户端最后转到的页面,

速度会比较快;response.sendRedirect()需要服务器与客户端之间的往返,

可以转到任何页面,包括网络有效域名。但速度比较慢。

session对象的生命周期在哪些状况下会结束


当以下四种情形之一发生时,session与其中的数据便会消失:

(1)用户关闭当前正在使用的浏览器程序。

(2)关闭网页服务器。

(3)用户未向服务器提出请求超过预设的时间,Tomcat服务器预设为30分钟。

(4)运行程序结束session。