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,主要用于获取客户端的信息 |
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。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232840.html原文链接:https://javaforall.net
