以下文字皆是我阅读《JSP2.0 技术手册》1-7 章的心得&笔记,此书做为 JSP 入门参考手册,值得推荐。
1、JSP 的执行过程(1)客户端发出 Request(请求);
(2)JSP 容器将 .jsp 页面转译成 Servlet 的 .java 源码;
(3)将产生的 Sevlet 源码进行编译,并加载的内存执行;
(4)把结果 Response (响应)至客户端。
ps.更详细的说明可以参考 IBM dW 社区的文章:
Scott Johnson:JavaServer Pages 新手入门
里面详细的说明了 JSP 容器在处理阶段(转换和请求)实践细节。
2、JSP 语法
JSP 页具有元素和模板数据。
元素是 JSP 容器已知的元素类型的实例。
其他的都是模板数据,即所有 JSP 转换器不知道的内容。
HTML 是模板文本;JSP 技术并不知道如何解析或验证 HTML 标记(如 codegen.jsp 中的 <html><head><title>)。这意味着可以将 HTML 嵌入到 JSP 页,会在页执行时直接将此内容发送到浏览器。
元素 有四种类型:Directive ELements(指令元素)、Scripting ELements(脚本元素)、Action ELements(动作元素)和 EL表达式。
3、指令元素 指令(Directives)主要用来提供整个 JSP 网页相关的信息,并且用来设定 JSP 网页的相关属性,例如:网页的编码方式、语法、信息等。
<%@ directive attribute1="value" attribute2="value" %>
4 attribute指令
5 tag指令
6 variable指令
1 page指令
1、page指令
主要作用为设定整个 JSP 网页的属性和相关功能。
主要属性定义如下:
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
language = "scriptingLanguage"
指定服务器端脚本语言,默认 java
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
import="importList"
在程序中导入一个或多个类/包,在同一页面,页面指令的属性只有import可以设置多次,JSP默认import属性的值已有:"java.lang.*","java.servlet.*","java.servlet.jsp*","java.servlet.http.*"
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
contentType="text/html; charset=GBK"
指定 MIME 类型和 JSP 页面的字符编码格式,"MIME类型;字符集类型",默认值 "contentType="text/html; charset=ISO-8859-1"
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
pageEncoding = "cinfo"
表示 JSP 网页的编码方式,默认为 "ISO-8859-1"
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
isELIgnored = "true | false"
表示此 JSP 网页是否忽略 EL表达式,默认为 false 不忽略 EL表达式
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
extends = "className"
主要指定此 JSP 网页产生的 Servlet 是继承哪个父类,默认可忽略
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
session = "true | false"
指定本页Session是否参与会话,默认 true
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
buffer = "none | size in kb"
指定客户端的输出流中的缓存的模式,默认为 8kb
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
autoFlash = "true | false"
设置缓冲区填满时是否进行缓冲自动刷新,值为false时,运行时会出现缓存溢出异常报错,默认true
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
isThreadSafe = "true | false"
设置JSP是否支持多线层,值为 false 时限制每次只能有一个用户访问该页面,默认为true
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
info = "text"
此 JSP 页面的相关信息,该信息可由 servlet.getServletInfo() 方法获得,默认可忽略
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
isErrorPage = "true | false"
指定当前页面是否可以作为另一页面的错误处理网页,默认值false
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
errorPage = "error_url"
当如果发生异常错误是,网页的重定向 URL,默认可忽略
2 include指令
2 include指令
在 JSP 编译时插入一个包含文本或者代码的文件,这个包含是静态的,而包含的文件可以是 JSP 网页、HTML 网页、文本文件,或者是一段 Java 程序。指令语法如下:
<%@ include file="relativeURLspec" %>
注意:
包含文件中药避免使用<html>..</html>、<body>
</body>,会影响原来的 JSP 网页同样标签,产生错误。
包含是静态包含其他的文件,即 file 不能为一变量 URL,而且 URL 路径里面不能带有任何参数。
包含文件中不能嵌套包含。
3 taglib指令
3 taglib指令
定义一个标签库以及其自定义标签的前缀.
<%@ taglib uri="URIToTagLibrary" prefix="tagPrefix" %>
属性
uri = "URIToTagLibrary" 一个相对或绝对的路径
prefix = "tagPrefix" 在自定义标签之前的前缀,比如,在 <public:loop> 中的 public。
4、脚本元素 JSP 中的脚本元素包括声明、scriptlet 和表达式,内放置的是 Java 代码。
声明语法为 <%!... %>
ps.使用声明将不加修改地放入 _codegen.java 中的页实现类的类级别,而不是在服务方法内,即表示:若同时 n个用户在执行此 JSP 网页时,将会共享变量(类实例变量)。这样当 JSP 在多用户环境中执行时,一个特别重要的变量被一个用户请求的线程更改了,将会出错,这是非常危险的。(编译为 Servlet 的时候将作为类的公共字段)
scriptlet 语法为 <% ...%>
ps.在 JSP 中嵌入 Java 是需要此类括号来让 Java 代码保持有效和完整。当 JSP 包含数百或数千行 HTML、JSP语法 和 JSP 脚本混合代码时候,将使得 JSP 难以阅读和调试。
表达式语法为 <%= ... %>
综上所述,建议不在 JSP 内使用 Java 代码,改用 JSTL+EL 代替。
附加:jspInit() 与 jspDestroy()
附加:jspInit() 与 jspDestroy()
如果 JSP 页创建者希望 JSP 页具有 init 和 destroy 方法时,必须使用脚本。具体来说,必须在 JSP 页中包含声明这些方法的 JSP 声明。此类 JSP 页必须与以下所示类似:
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
<%!
public void jspInit()
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/04e85f05536ccd79982bbca17251f63e.gif)
![ContractedBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/944d071149be1c8c4402f26bdcd107b0.gif)
{
// do some initialization work
}
public void jspDestroy()
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/04e85f05536ccd79982bbca17251f63e.gif)
![ContractedBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/944d071149be1c8c4402f26bdcd107b0.gif)
{
// do some finalization work
}
%>
<HTML>
<BODY>
Your JSP stuff here!
</BODY>
</HTML>
5、动作元素
http://chain99081.blog.163.com/blog/static/45898482008451023885/
动作元素在请求处理阶段起作用。JSP 的动作元素是使用XML 语法写成的,有以下两种格式:
<prefix:tag attribute=value attribute-list…/>
或者<prefix:tag attribute=value attribute-list…</prefix:tag>
常用动作元素
5.1 <jsp:useBean>
实例化一个JavaBean,常用句法:
<jsp:useBean id="myName" scope="session" class="className" />
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
5.2 <jsp:setProperty>
<jsp:setProperty name="instanceName" property="*"/>
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
可以用四种不同的方法来指定属性的信息:
①property="*"
这是一种设置Bean属性的快捷方式,在Bean中,属性的名字、类型必须和request对象中的参数名称相匹配。由于在表单中传过来的数据类型都是String类型的,JSP 内在的机制会把这些参数转化成Bean 属性对应的类型。
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
②property="propettyName"
使用request中的一个参数来指定Bean中的一个属性值。Bean的属性名必须和request中参数的名字相同,否则应用方法③。
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
③property="propettyName" param="parameterName"
使用request中的一个参数来指定Bean中的一个属性值。
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
④property="propettyName" value="propertyValue"
使用指定的值来设定Bean属性。
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
5.3 <jsp:getProperty>
访问Bean的属性并将它转化成一个String ,发送到输出流中。
<jsp:getProperty name="instanceName" property="nameOfProperty"/>
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
5.4 <jsp:include>
flush属性必须设置成true,不能使用默认的false。
如果被包含的文件是动态的,还可以用jsp:param传递参数名和参数值。
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
5.5 <jsp:forward>
将客户端的请求从一个JSP 页面转到另一个JSP 页面。
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
5.6 <jsp:param>
用来提供key/value值,常和jsp:include、jsp:forward、jsp:plugin一起使用。句法:
<jsp:param name="paramName" value="paramValue" />
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
5.7 <jsp:plugin>
常用句法:
<jsp:plugin type=”applet” code=”myPathOfClass” codebase=”.” aligin=”bootom | top| middle | left | right” width=”width” height=”height” />
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
<jsp:fallback>text message for user </jsp:fallback>
用于插件不能启动时显示给用户的一段文字。
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
6、EL 表达式Type text here...
7、JSP 内置对象
http://riman.blogdriver.com/riman/1011608.html
内置对象是不需要声明,直接可以在JSP中使用的对象,JSP有以下几种内置对象:
JSP内置对象 Servlet子类 作用域
request javax.servlet.http.HttpServletRequest Request
response javax.servlet.http.HttpServletResponse Page
session javax.servlet.http.HttpSession Session request.getSession().setAttribute("user", user)
application javax.servlet.ServletContext Application servlet.getServletContext().getAttribute("userList")
out javax.servlet.jsp.JSPWrite Page
pageContext javax.servlet.jsp.PageContext Page
config javax.servlet.ServletConfig Page
page java.lang.Object Page
exception java.lang.Throwable Page
HttpServletRequest request;
HttpServletResponse response;
Cookie[] cookies = request.getCookies();
HttpSession session = request.getSession();
ServletContext context = servlet.getServletContext();
PrintWrite out = response.getWriter();
request:它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。
response:提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)
out:提供了几个方法使你能用于向浏览器回送输出结果。
PrintWriter pw = response.getWriter();
pw.print("<script type='text/javascript'>alert('成功添加一个管理员。');history.go(-1);</script>");
pw.flush();
pw.close();
//获得jsp页面的输入流
JspWrite out=pageContext.getOut();
out.println("<b>HelloWorld!</b>");
pageContext:它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。
session:可以存贮用户的状态信息
application:有助于查找有关servlet引擎和servlet环境的信息
config:该对象用于存取servlet实例的初始化参数。
page:表示从该页面产生的一个servlet实例。
Servlet API中的几个对象
Servlet API中的几个对象
JSP 提供了八个内部对象,而其中的五个内部对象对应于 Servlet API 中的七个对象,这也就使得我们正常理解并熟练使用 Servlet 中的这七个对象显得尤其重要。这五个 JSP 的内部对象和 Servlet API 中的对象的对应关系是:
request对象对应于:javax.servlet.http.HttpServletRequest 和 javax.servlet.ServletRequest
response对象对应于:javax.servlet.http.HttpServletResponse 和 javax.servlet.ServletResponse
session对象对应于:javax.servlet.http.HttpSession
application对象对应于:javax.servlet.ServletContext
config对象对应于:javax.servlet.ServletConfig
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
javax.servlet.http.HttpServletRequest
这是一个接口,在我们提到接口之前,还是让我们来复习一下Java中接口的一个初步的解释:
接口在语法上与类相似,但是接口没有实例,使用接口,只是指定类必须做什么而不是如何做。
HttpServletRequest接口用来处理一个对Servlet的HTTP格式的请求信息。
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
javax.servlet.ServletRequest
这也是一个接口,这个接口定义一个Servlet引擎产生的对象,通过这个对象,Servlet可以获得客户端请求的数据。这个对象通过读取请求体的数据提供包括参数的名称、值和属性以及输入流的所有数据。而javax.servlet.http.HttpServletRequest也只是该接口的一个扩展,也就是说,该接口的所有方法也可以被javax.servlet.http.HttpServletRequest所使用。
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
javax.servlet.http.HttpServletResponse接口
该接口用来描述一个返回到客户端的HTTP回应。
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
javax.servlet.ServletResponse接口
该接口用来定义一个Servlet引擎产生的对象,通过这个对象,Servlet对客户端的请求作出响应。这个响应应该是一个MIME实体,可能是一个 HTML页、图象数据或其他MIME的格式。javax.servlet.http.HttpServletResponse接口是该接口的扩展。
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
javax.servlet.http.HttpSession接口
该接口用来描述一个session,至于什么是session我想在这里就没必要说了吧。
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
javax.servlet.ServletContext接口
该接口用来定义了一个Servlet的环境对象。也可是认为这是多个客户端共享的信息,它与session的区别在于应用范围的不同,session只对应于一个用户。
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
javax.servlet.ServletConfig接口
该接口定义了一个对象,通过这个对象,Servlet引擎配置一个Servlet。每一个ServletConfig对象对应着一个唯一的Servlet。
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
javax.servlet.http.Cookie类
这个类描述了一个cookie,cookie的作用其实与session很类似,只是cookie保存在客户端,session保存在服务器端。
request,response,session,application,out对象的常用调用的函数
request,response,session,application,out对象的常用调用的函数
引用自:http://java.ccidnet.com/art/297/20060319/483247_1.html
*****************************************************************
1.request对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
序号 方 法 说 明
1 object getAttribute(String name) 返回指定属性的属性值
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
2 Enumeration getAttributeNames() 返回所有可用属性名的枚举
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
3 String getCharacterEncoding() 返回字符编码方式
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
4 int getContentLength() 返回请求体的长度(以字节数)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
5 String getContentType() 得到请求体的MIME类型
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
6 ServletInputStream getInputStream() 得到请求体中一行的二进制流
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
7 String getParameter(String name) 返回name指定参数的参数值
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
8 Enumeration getParameterNames() 返回可用参数名的枚举
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
9 String[] getParameterValues(String name) 返回包含参数name的所有值的数组
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
10 String getProtocol() 返回请求用的协议类型及版本号
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
11 String getScheme() 返回请求用的计划名,如:http.https及ftp等
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
12 String getServerName() 返回接受请求的服务器主机名
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
13 int getServerPort() 返回服务器接受此请求所用的端口号
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
14 BufferedReader getReader() 返回解码过了的请求体
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
15 String getRemoteAddr() 返回发送此请求的客户端IP地址
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
16 String getRemoteHost() 返回发送此请求的客户端主机名
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
17 void setAttribute(String key,Object obj) 设置属性的属性值
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
18 String getRealPath(String path) 返回一虚拟路径的真实路径
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
*****************************************************************
2.response对象
response对象包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
序号 方 法 说 明
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
1 String getCharacterEncoding() 返回响应用的是何种字符编码
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
2 ServletOutputStream getOutputStream() 返回响应的一个二进制输出流
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
3 PrintWriter getWriter() 返回可以向客户端输出字符的一个对象
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
4 void setContentLength(int len) 设置响应头长度
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
5 void setContentType(String type) 设置响应的MIME类型
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
6 sendRedirect(java.lang.String location) 重新定向客户端的请求
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
*****************************************************************
3.session对象
session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例.
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
序号 方 法 说 明
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
1 long getCreationTime() 返回SESSION创建时间
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
2 public String getId() 返回SESSION创建时JSP引擎为它设的惟一ID号
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
3 long getLastAccessedTime() 返回此SESSION里客户端最近一次请求时间
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
4 int getMaxInactiveInterval() 返回两次请求间隔多长时间此SESSION被取消(ms)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
5 String[] getValueNames() 返回一个包含此SESSION中所有可用属性的数组
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
6 void invalidate() 取消SESSION,使SESSION不可用
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
7 boolean isNew() 返回服务器创建的一个SESSION,客户端是否已经加入
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
8 void removeValue(String name) 删除SESSION中指定的属性
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
9 void setMaxInactiveInterval() 设置两次请求间隔多长时间此SESSION被取消(ms)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
*****************************************************************
4.out对象
out对象是JspWriter类的实例,是向客户端输出内容常用的对象
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
序号 方 法 说 明
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
1 void clear() 清除缓冲区的内容
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
2 void clearBuffer() 清除缓冲区的当前内容
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
3 void flush() 清空流
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
4 int getBufferSize() 返回缓冲区以字节数的大小,如不设缓冲区则为0
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
5 int getRemaining() 返回缓冲区还剩余多少可用
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
6 boolean isAutoFlush() 返回缓冲区满时,是自动清空还是抛出异常
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
7 void close() 关闭输出流
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
*****************************************************************
5.page对象
page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
序号 方 法 说 明
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
1 class getClass 返回此Object的类
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
2 int hashCode() 返回此Object的hash码
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
3 boolean equals(Object obj) 判断此Object是否与指定的Object对象相等
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
4 void copy(Object obj) 把此Object拷贝到指定的Object对象中
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
5 Object clone() 克隆此Object对象
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
6 String toString() 把此Object对象转换成String类的对象
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
7 void notify() 唤醒一个等待的线程
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
8 void notifyAll() 唤醒所有等待的线程
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
9 void wait(int timeout) 使一个线程处于等待直到timeout结束或被唤醒
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
10 void wait() 使一个线程处于等待直到被唤醒
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
11 void enterMonitor() 对Object加锁
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
12 void exitMonitor() 对Object开锁
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
*****************************************************************
6.application对象
application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例。
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
序号 方 法 说 明
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
1 Object getAttribute(String name) 返回给定名的属性值
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
2 Enumeration getAttributeNames() 返回所有可用属性名的枚举
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
3 void setAttribute(String name,Object obj) 设定属性的属性值
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
4 void removeAttribute(String name) 删除一属性及其属性值
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
5 String getServerInfo() 返回JSP(SERVLET)引擎名及版本号
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
6 String getRealPath(String path) 返回一虚拟路径的真实路径
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
7 ServletContext getContext(String uripath) 返回指定WebApplication的application对象
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
8 int getMajorVersion() 返回服务器支持的Servlet API的最大版本号
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
9 int getMinorVersion() 返回服务器支持的Servlet API的最大版本号
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
10 String getMimeType(String file) 返回指定文件的MIME类型
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
11 URL getResource(String path) 返回指定资源(文件及目录)的URL路径
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
12 InputStream getResourceAsStream(String path) 返回指定资源的输入流
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
13 RequestDispatcher getRequestDispatcher(String uripath) 返回指定资源的RequestDispatcher对象
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
14 Servlet getServlet(String name) 返回指定名的Servlet
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
15 Enumeration getServlets() 返回所有Servlet的枚举
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
16 Enumeration getServletNames() 返回所有Servlet名的枚举
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
17 void log(String msg) 把指定消息写入Servlet的日志文件
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
18 void log(Exception exception,String msg) 把指定异常的栈轨迹及错误消息写入Servlet的日志文件
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
19 void log(String msg,Throwable throwable) 把栈轨迹及给出的Throwable异常的说明信息 写入Servlet的日志文件
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
*****************************************************************
7.exception对象
exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
序号 方 法 说 明
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
1 String getMessage() 返回描述异常的消息
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
2 String toString() 返回关于异常的简短描述消息
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
3 void printStackTrace() 显示异常及其栈轨迹
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
4 Throwable FillInStackTrace() 重写异常的执行栈轨迹
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
*****************************************************************
8.pageContext对象
pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本 类名也叫pageContext。
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
序号 方 法 说 明
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
1 JspWriter getOut() 返回当前客户端响应被使用的JspWriter流(out)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
2 HttpSession getSession() 返回当前页中的HttpSession对象(session)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
3 Object getPage() 返回当前页的Object对象(page)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
4 ServletRequest getRequest() 返回当前页的ServletRequest对象(request)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
5 ServletResponse getResponse() 返回当前页的ServletResponse对象(response)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
6 Exception getException() 返回当前页的Exception对象(exception)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
7 ServletConfig getServletConfig() 返回当前页的ServletConfig对象(config)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
8 ServletContext getServletContext() 返回当前页的ServletContext对象(application)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
9 void setAttribute(String name,Object attribute) 设置属性及属性值
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
10 void setAttribute(String name,Object obj,int scope) 在指定范围内设置属性及属性值
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
11 public Object getAttribute(String name) 取属性的值
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
12 Object getAttribute(String name,int scope) 在指定范围内取属性的值
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
13 public Object findAttribute(String name) 寻找一属性,返回起属性值或NULL
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
14 void removeAttribute(String name) 删除某属性
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
15 void removeAttribute(String name,int scope) 在指定范围删除某属性
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
16 int getAttributeScope(String name) 返回某属性的作用范围
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
17 Enumeration getAttributeNamesInScope(int scope) 返回指定范围内可用的属性名枚举
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
18 void release() 释放pageContext所占用的资源
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
19 void forward(String relativeUrlPath) 使当前页面重导到另一页面
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
20 void include(String relativeUrlPath) 在当前位置包含另一文件
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
*****************************************************************
9.config对象
config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
序号 方 法 说 明
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
1 ServletContext getServletContext() 返回含有服务器相关信息的ServletContext对象
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
2 String getInitParameter(String name) 返回初始化参数的值
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/9723ec7779ef47d51f1f48b9337ffca0.gif)
3 Enumeration getInitParameterNames() 返回Servlet初始化所需所有参数的枚举