- 浏览: 58787 次
- 性别:
- 来自: 重庆
文章分类
最新评论
-
lulin27860:
能不能截图截下 如何上传和下载代码 如果团队合作的话 别人怎么 ...
RiouxSvn 项目托管 -
adair_java:
你这个是把批量插入改成了多次单独插入,不慢才怪呢。
Myba ...
关于mybatis批量插入和传统的jdbc操作的比较 -
meiwen1111:
properties文件是否也要分开配置?我配两个数据源,数据 ...
Spring下 mybatis 多数据源配置 -
wml199039:
charactorEncoding 应当为 charact ...
java数据库连接池之bonecp -
季铵盐:
rrsy23 写道我用的ibatis 做过些下面用批量 没5 ...
关于mybatis批量插入和传统的jdbc操作的比较
JavaTM servlets 是一个不受平台约束的Java小程序,它可以被用来通过多种方法扩充一个Web服务器的功能。你可以把Servlet理解成Server上的 applets,它被编译成字节码,这样它就可以被动态地载入并用效地扩展主机的处理能力。
一个客户端程序,可以是一个Web浏览器,或者是非其他的可以连接上Internet的程序,它会访问Web服务器并发出请求。这个请求被运行在Web服 务器上的Servlet引擎处理,并返回响应到Servlet。Servlet通过HTTP将这个响应转发到客户端。
Servlet与其他普通的server扩展机制有以下进步:
它使用了许多Web服务器都支持的标准的API。
它可以调用Java所提供的大量的API的功能模块。
一个Java servlet具有一个生命周期,这个生命周期定义了一个Servlet如何被载入并被初始化,如何接收请求并作出对请求的响应,如何被从服务中清除。Servlet的生命周期被javax.servlet.Servlet这个接口所定义。
javax.servlet.Servlet接口定义了在Servlet的生命周期中特定时间以及特定顺序被调用的方法。
Servlet的解析和载入[/b]
Servlet引擎利用Java类载入工具载入一个Servlet,Servlet引擎可以从一个本地的文件系统、一个远程的文件系统以及网络载入Servlet。
[b]Servlet的初始化[/b]
在初始化过程中,javax.servlet.Servlet接口的init()方法提供了Servlet的初始化信息。这样,Servlet可以对自己进行配置。
Servlet被初始化之后,它已经可以处理来自客户端的请求,每一个来自客户端的请求都被描述成一个ServletRequest对象,Servlet的响应被描述成一个ServletResponse对象。
Servlet 也可以执行ServletRequest接口和ServletResponse接口。ServletRequest接口使得Servlet有权使用客户端发出的请求。Servlet可以通过ServletInputStream对象读取请求信息。
在多线程的环境下,Servlet必须能处理许多同时发生的请求。例外的情况是这个Servlet执行了SingleThreadModel接口,如果是那样的话,Servlet只能同时处理一个请求。
然而,一个映射可能是由一个URL和许多Servlet实例组成,例如:一个分布式的Servlet引擎可能运行在不止一个的服务器中,这样的话,每一个服务器中都可能有一个Servlet实例,以平衡进程的载入。作为一个Servlet的开发者,你不能假定一个Servlet只有一个实例。
[b]Servlet的卸载[/b]
当Servlet引擎决定卸载一个Servlet时(例如,如果这个引擎被关闭或者需要让资源),这个引擎必须允许Servlet释放正在使用的资源并存储有关资料。为了完成以上工作,引擎会调用Servlet的destroy()方法。
作为一个Servlet引擎的开发者,你必须对于如何映射客户端的请求到Servlet有大量的适应性。这份说明文档不规定映射如何发生。但是,你必须能够自由地运用下面的所有技术:
映射一个Servlet到一个URL
例如,你可以映射一个Servlet到/catalog,这样来自/catalog/、 /catalog/garden和 /catalog/housewares/index.html的请求都会被映射到这个Servlet。但是来自/catalogtwo 或 /catalog.html的请求没被映射。
映射一个Servlet到所有以一个特定的字段结尾的所有URL
例如,如果你建立了一个名叫listattributes的Servlet,你可以通过使用/servlet/listattributes来访问这个Servlet。
[b]通过类名调用Servlet[/b]
ServletContext 接口定义了一个Servlet环境对象,这个对象定义了一个在Servlet引擎上的Servlet的视图。通过使用这个对象,Servlet可以记录事 件、得到资源并得到来自Servlet引擎的类(例如RequestDispatcher对象)。一个Servlet只能运行在一个Servlet环境 中,但是不同的Servlet可以在Servlet引擎上有不同的视图。
Servlet引擎能够允许一个Servlet环境有它自己的活动范围。
HTTP是一个没有状态的协议。要建立一个有效的Web服务应用,你必须能够识别一个连续的来自远端的客户机的唯一的请求。随着时间的过去,发展了许多会话跟踪的技术,但是使用起来都比较麻烦。
因为HTTP是一个请求-响应协议,一个会话在客户机加入之前会被认为是一个新的会话。加入的意思是返回会话跟踪信息到服务器中,指出会话已被建立。在客户端加入之前,我们不能判断下一个客户端请求是目前会话的一部分。
绑定对象到Session中
有些对象可能需要你知道什么时候会被放置到Session中或从Session中移开。你可以通过使用HttpSessionBindingListener接口获得这些信息。当你的应用存储数据到Session中,或从Session中清除数据,Servlet都会通过HttpSessionBindingListener检杳什么类被绑定或被取消绑定。这个接口的方法会通报被绑定或被取消绑定的对象。
这一部分包含了对Java Servlet API的全部类和接口的详细说明。这个说明与Javadoc
API差不多,但是这份文档提供了更多的信息。
软件包:javax.servlet
所包含的类:GenericServlet;ServletInputStream;ServletOutputStream;ServletException;UnavailableException。
[b]Request Dispatcher接口[/b]
public interface RequestDispatcher;
request
dispatcher对象,用于封装由一个特定的URL定义的服务器资源。
request dispatcher对象是由Servlet引擎建立的,而不是由Servlet开发者建立的。
1、forward
throws ServletException, IOException;
当request对象被传递到目标对象时,请求的URL路径和其他路径参数会被调整为反映目标对象的目标URL路径。
2、include
throws ServletException, IOException
请求对象传到目标对象后会反映调用请求的请求URL路径和路径信息。这个响应对象只能调用这个Servlet的ServletOutputStream对象和PrintWriter对象。
定义
这个接口定义了一个Servlet:一个在Web服务器上继承了这个功能的Java类。
1、init
Servlet引擎会在Servlet实例化之后,置入服务之前精确地调用init方法。在调用service方法之前,init方法必须成功退出。
2、service
throws ServletException, IOException;
在一个Servlet对象被卸载后,直到一个新的Servelt被初始化,Servlet引擎不能调用这个方法
public void destroy();
4、getServletConfig
返回一个ServletConfig对象,作为一个Servlet的开发者,你应该通过init方法存储ServletConfig对象以便这个方法能返回这个对象。为了你的便利,GenericServlet在执行这个接口时,已经这样做了。
public String getServletInfo();
[b]ServletConfig接口[/b]
public interface ServletConfig
方法
public String getInitParameter(String name);
2、getInitParameterNames
这个方法返回一个列表String对象,该对象包括Servlet的所有初始化参数名。如果Servlet没有初始化参数,getInitParameterNames返回一个空的列表。
public ServletContext getServletContext();
定义
定义了一个Servlet的环境对象,通过这个对象,Servlet引擎向Servlet提供环境信息。
方法
public Object getAttribute(String name);
2、getAttributeNames
返回一个Servlet环境对象中可用的属性名的列表。
public ServletContext getContext(String uripath);
为了安全,如果通过这个方法访问一个受限制的Servlet的环境对象,会返回一个空值。
public int getMajorVersion();
5、getMinorVersion
返回Servlet引擎支持的Servlet API的次版本号。例如对于2.1版,这个方法会返回一个整数2。
public String getMimeType(String file);
7、getRealPath
一个符合URL路径格式的指定的虚拟路径的格式是:/dir/dir/filename.ext。用这个方法,可以返回与一个符合该格式的虚拟路径相对应的真实路径的String。这个真实路径的格式应该适合于运行这个Servlet引擎的计算机(包括其相应的路径解析器)。
8、getResource
返回一个URL对象,该对象反映位于给定的URL地址(格式:/dir/dir/filename.ext)的Servlet环境对象已知的资源。无论 URLStreamHandlers对于访问给定的环境是不是必须的,Servlet引擎都必须执行。如果给定的路径的Servlet环境没有已知的资源,该方法会返回一个空值。
9、getResourceAsStream
返回一个InputStream对象,该对象引用指定的URL的Servlet环境对象的内容。如果没找到Servlet环境变量,就会返回空值,URL路径应该具有这种格式:/dir/dir/filename.ext。
10、getRequestDispatcher
如果这个指定的路径下能够找到活动的资源(例如一个Servlet,JSP页面,CGI等等)就返回一个特定URL的RequestDispatcher 对象,否则,就返回一个空值,Servlet引擎负责用一个request dispatcher对象封装目标路径。这个 request
dispatcher对象可以用来完全请求的传送。
public String getServerInfo();
12、log
public void log(String msg, Throwable t);
写指定的信息到一个Servlet环境对象的log文件中。被写入的log文件由Servlet引擎指定,但是通常这是一个事件log。当这个方法被一个异常调用时,log中将包括堆栈跟踪。
public void setAttribute(String name, Object o);
14、removeAttribute
从指定的Servlet环境对象中删除一个属性。
15、getServlet
最初用来返回一个指定名称的Servlet,如果没找到就返回一个空值。如果这个Servlet能够返回,这就意味着它已经被初始化,而且已经可以接受 service请求。这是一个危险的方法。当调用这个方法时,可能并不知道Servlet的状态,这就可能导致有关服务器状态的问题。而允许一个 Servlet访问其他Servlet的这个方法也同样的危险。
16、getServletNames
最初用来返回一个String对象的列表,该列表表示了在这个Servlet环境下所有已知的Servlet对象名。这个列表总是包含这个Servlet自身。
现在这个方法返回一个空的列表。为了保持和以前版本的兼容性,现在这个方法还没有被取消。在以后的API版本中,该方法将被取消。
public Enumeration getServlets();
基于与getServlet方法同样的理由,这也是一个危险的方法。
定义
定义一个Servlet引擎产生的对象,通过这个对象,Servlet可以获得客户端请求的数据。这个对象通过读取请求体的数据提供包括参数的名称、值和属性以及输入流的所有数据。
1、getAttribute
返回请求中指定属性的值,如果这个属性不存在,就返回一个空值。这个方法允许访问一些不提供给这个接口中其他方法的请求信息以及其他Servlet放置在这个请求对象内的数据。
public Enumeration getAttributeNames();
3、getCharacterEncoding
返回请求中输入内容的字符编码类型,如果没有定义字符编码类型就返回空值。
public int getContentLength();
5、getContentType
返回请求数据体的MIME类型,如果类型未知返回空值。
public ServletInputStream getInputStream() throws IOException;
7、getParameter
以一个String返回指定的参数的值,如果这个参数不存在返回空值。例如,在一个HTTP
Servlet中,这个方法会返回一个指定的查询语句产生的参数的值或一个被提交的表单中的参数值。如果一个参数名对应着几个参数值,这个方法只能返回通过getParameterValues方法返回的数组中的第一个值。因此,如果这个参数有(或者可能有)多个值,你只能使用getParameterValues方法。
public Enumeration getParameterNames();
9、getParameterValues
通过一个String对象的数组返回指定参数的值,如果这个参数不存在,该方法返回一个空值。
public String getProtocol();
11、getReader
这个方法返回一个buffered reader用来读取请求体的实体,其编码方式依照请求数据的编码方式。如果这个请求的输入流已经被getInputStream调用获得,这个方法会抛出一个IllegalStateException。
public String getRemoteAddr();
13、getRemoteHost
返回发送请求者的主机名称。如果引擎不能或者选择不解析主机名(为了改善性能),这个方法会直接返回IP地址。
public String getScheme();
15、getServerName
返回接收请求的服务器的主机名。
public int getServerPort();
17、setAttribute
这个方法在请求中添加一个属性,这个属性可以被其他可以访问这个请求对象的对象(例如一个嵌套的Servlet)使用。
getRealPath
返回与虚拟路径相对应的真实路径,如果因为某种原因,这一过程不能进行,该方法将返回一个空值。
定义
定义一个Servlet引擎产生的对象,通过这个对象,Servlet对客户端的请求作出响应。这个响应应该是一个MIME实体,可能是一个HTML页、图象数据或其他MIME的格式。
1、getCharacterEncoding
返回MIME实体的字符编码。这个字符编码可以是指定的类型,也可以是与请求头域所反映的客户端所能接受的字符编码最匹配的类型。在HTTP协议中,这个信息被通过Accept-Charset传送到Servlet引擎。
2、getOutputStream
返回一个记录二进制的响应数据的输出流。
3、getWriter
这个方法返回一个PringWriter对象用来记录格式化的响应实体。如果要反映使用的字符编码,必须修改响应的MIME类型。在调用这个方法之前,必须设定响应的content类型。
4、setContentLength
设置响应的内容的长度,这个方法会覆盖以前对内容长度的设定。
5、setContentType
这个方法用来设定响应的content类型。这个类型以后可能会在另外的一些情况下被隐式地修改,这里所说的另外的情况可能当服务器发现有必要的情况下对MIME的字符设置。
定义
这是一个空接口,它指定了系统如何处理对同一个Servlet的调用。如果一个Servlet被这个接口指定,那么在这个Servlet中的service方法中将不会有两个线程被同时执行。
public abstract class GenericServlet implements Servlet,
这个类的存在使得编写Servlet更加方便。它提供了一个简单的方案,这个方案用来执行有关Servlet生命周期的方法以及在初始化时对ServletConfig对象和ServletContext对象进行说明。
1、destroy
在这里destroy方法不做任何其他的工作。
public String getInitParameter(String name);
3、getInitParameterNames
这是一个简便的途径,它将会调用ServletConfig对象的同名的方法。
public ServletConfig getServletConfig();
5、getServletContext
这是一个简便的途径,它将会调用ServletConfig对象的同名的方法。
public String getServletInfo();
7、init
public void init(ServletConfig config) throws ServletException;
init()方法是用来让你对GenericServlet类进行扩充的,使用这个方法时,你不需要存储config对象,也不需要调用super.init(config)。
8、log
public void log(String msg, Throwable cause);
9、service
response) throws ServletException, IOException;
定义
这个类定义了一个用来读取客户端的请求信息的输入流。这是一个Servlet引擎提供的抽象类。一个Servlet通过使用ServletRequest接口获得了对一个ServletInputStream对象的说明。
方法
public int readLine(byte[] b, int off, int len) throws IOException;
定义
这是一个由Servlet引擎使用的抽象类。Servlet通过使用ServletResponse接口的使用获得了对一个这种类型的对象的说明。利用这个输出流可以将数据返回到客户端。
在这个接口中,当一个刷新或关闭的方法被调用时。所有数据缓冲区的信息将会被发送到客户端,也就是说响应被提交了。请注意,关闭这种类型的对象时不一定要关闭隐含的socket流。
1、print
public void print(boolean b) throws IOException;
public void print(int i) throws IOException;
public void print(float f) throws IOException;
输出变量到输出流中
public void println() throws IOException;
public void println(boolean b) throws IOException;
public void println(int i) throws IOException;
public void println(float f) throws IOException;
输出变量到输出流中,并增加一个回车换行符
[b]ServletException类[/b]
public class ServletException extends Exception
构造函数
public ServletException(String message);
public ServletException(Throwable cause);
方法
public Throwable getRootCause();
定义
不论一个Servlet是永久地还是临时地无效,都会抛出这个异常。Servlet会记录这个异常以及Servlet引擎所要采取的相应措施。
永久的无效是指除非管理员采取措施,这个Servlet将不能处理客户端的请求。例如,这个Servlet配置信息丢失或Servlet的状态被破坏。
构造函数
public UnavailableException(int seconds, Servlet servlet,
构造一个包含指定的描述信息的新的异常。如果这个构造函数有一个关于秒数的参数,这将给出Servlet发生临时无效后,能够重新处理请求的估计时间。如果不包含这个参数,这意味着这个Servlet永久无效。
1、getServlet
返回报告无效的Servlet。这被Servlet引擎用来识别受到影响的Servlet。
public int getUnavailableSeconds();
3、isPermanent
如果这个Servlet永久无效,返回布尔值true,指示必须采取一些管理行动以使得这个Servlet可用。
软件包:javax.servlet.http
所包含的类:Cookie;HttpServlet;HttpSessionBindingEvent;HttpUtils。
定义\
用来处理一个对Servlet的HTTP格式的请求信息。
1、getAuthType
返回这个请求的身份验证模式。
public Cookie[] getCookies();
3、getDateHeader
返回指定的请求头域的值,这个值被转换成一个反映自1970-1-1日(GMT)以来的精确到毫秒的长整数。
4、getHeader
返回一个请求头域的值。(译者注:与上一个方法不同的是,该方法返回一个字符串)
5、getHeaderNames
该方法返回一个String对象的列表,该列表反映请求的所有头域名。
6、getIntHeader
返回指定的请求头域的值,这个值被转换成一个整数。
7、getMethod
返回这个请求使用的HTTP方法(例如:GET、POST、PUT)
public String getPathInfo();
9、getPathTranslated
这个方法获得这个请求的URL的Servlet路径之后的额外的路径信息,并将它转换成一个真实的路径。在进行转换前,这个请求的URL必须经过URL解码。如果在这个URL的Servlet路径之后没有附加路径信息。这个方法返回空值。
public String getQueryString();
11、getRemoteUser
返回作了请求的用户名,这个信息用来作HTTP用户论证。
12、getRequestedSessionId
返回这个请求相应的session id。如果由于某种原因客户端提供的session id是无效的,这个session id将与在当前session中的session id不同,与此同时,将建立一个新的session。
13、getRequestURI
从HTTP请求的第一行返回请求的URL中定义被请求的资源的部分。如果有一个查询字符串存在,这个查询字符串将不包括在返回值当中。例如,一个请求通过 /catalog/books?id=1这样的URL路径访问,这个方法将返回/catalog/books。这个方法的返回值包括了Servlet路径 和路径信息。
14、getServletPath
这个方法返回请求URL反映调用Servlet的部分。例如,一个Servlet被映射到/catalog/summer这个URL路径,而一个请求使用了/catalog/summer/casual这样的路径。所谓的反映调用Servlet的部分就是指/catalog/summer。
15、getSession
public HttpSession getSession(boolean create);
为了确保session能够被完全维持。Servlet开发者必须在响应被提交之前调用该方法。
16、isRequestedSessionIdValid
这个方法检查与此请求关联的session当前是不是有效。如果当前请求中使用的session无效,它将不能通过getSession方法返回。
public boolean isRequestedSessionIdFromCookie();
18、isRequestedSessionIdFromURL
如果这个请求的session id是通过客户端的URL的一部分提供的,该方法返回真,否则返回假。请注意此方法与isRequestedSessionIdFromUrl在URL的拼写上不同。
public boolean isRequestedSessionIdFromUrl();
定义\
public interface HttpServletResponse extends ServletResponse
成员变量
public static final int SC_SWITCHING_PROTOCOLS = 101;
public static final int SC_CREATED = 201;
public static final int SC_NON_AUTHORITATIVE_INFORMATION = 203;
public static final int SC_RESET_CONTENT = 205;
public static final int SC_MULTIPLE_CHOICES = 300;
public static final int SC_MOVED_TEMPORARILY = 302;
public static final int SC_NOT_MODIFIED = 304;
public static final int SC_BAD_REQUEST = 400;
public static final int SC_PAYMENT_REQUIRED = 402;
public static final int SC_NOT_FOUND = 404;
public static final int SC_NOT_ACCEPTABLE = 406;
public static final int SC_REQUEST_TIMEOUT = 408;
public static final int SC_GONE = 410;
public static final int SC_PRECONDITION_FAILED = 412;
public static final int SC_REQUEST_URI_TOO_LONG = 414;
public static final int SC_INTERNAL_SERVER_ERROR = 500;
public static final int SC_BAD_GATEWAY = 502;
public static final int SC_GATEWAY_TIMEOUT = 504;
以上HTTP产状态码是由HTTP/1.1定义的。
1、addCookie
在响应中增加一个指定的cookie。可多次调用该方法以定义多个cookie。为了设置适当的头域,该方法应该在响应被提交之前调用。
public boolean containsHeader(String name);
3、encodeRedirectURL
对sendRedirect方法使用的指定URL进行编码。如果不需要编码,就直接返回这个URL。之所以提供这个附加的编码方法,是因为在 redirect的情况下,决定是否对URL进行编码的规则和一般情况有所不同。所给的URL必须是一个绝对URL。相对URL不能被接收,会抛出一个 IllegalArgumentException。
4、encodeURL
对包含session ID的URL进行编码。如果不需要编码,就直接返回这个URL。Servlet引擎必须提供URL编码方法,因为在有些情况下,我们将不得不重写URL,例如,在响应对应的请求中包含一个有效的session,但是这个session不能被非URL的(例如cookie)的手段来维
持。
5、sendError
public void sendError(int statusCode, String message) throws
用给定的状态码发给客户端一个错误响应。如果提供了一个message参数,这将作为响应体的一部分被发出,否则,服务器会返回错误代码所对应的标准信息。
6、sendRedirect
使用给定的路径,给客户端发出一个临时转向的响应(SC_MOVED_TEMPORARILY)。给定的路径必须是绝对URL。相对URL将不能被接收,会抛出一个IllegalArgumentException。
7、setDateHeader
用一个给定的名称和日期值设置响应头,这里的日期值应该是反映自1970-1-1日(GMT)以来的精确到毫秒的长整数。如果响应头已经被设置,新的值将覆盖当前的值。
public void setHeader(String name, String value);
9、setIntHeader
用一个给定的名称和整形值设置响应头。如果响应头已经被设置,新的值将覆盖当前的值。
public void setStatus(int statusCode);
以下的几个方法将被取消\
public String encodeRedirectUrl(String url);
12、encodeUrl
该方法被encodeURL取代。
public void setStatus(int statusCode, String message);
定义\
这个接口被Servlet引擎用来实现在HTTP客户端和HTTP会话两者的关联。这种关联可能在多外连接和请求中持续一段给定的时间。session用来在无状态的HTTP协议下越过多个请求页面来维持状态和识别用户。
方法
public long getCreationTime();
2、getId
返回分配给这个session的标识符。一个HTTP session的标识符是一个由服务器来建立和维持的唯一的字符串。
public long getLastAccessedTime();
4、getMaxInactiveInterval
返加一个秒数,这个秒数表示客户端在不发出请求时,session被Servlet引擎维持的最长时间。在这个时间之后,Servlet引擎可能被Servlet引擎终止。如果这个session不会被终止,这个方法返回-1。
5、getValue
返回一个以给定的名字绑定到session上的对象。如果不存在这样的绑定,返回空值。
6、getValueNames
以一个数组返回绑定到session上的所有数据的名称。
7、invalidate
这个方法会终止这个session。所有绑定在这个session上的数据都会被清除。并通过HttpSessionBindingListener接口的valueUnbound方法发出通告。
public boolean isNew();
当session无效后再调用这个方法会抛出一个IllegalStateException。
public void putValue(String name, Object value);
当session无效后再调用这个方法会抛出一个IllegalStateException。
public void removeValue(String name);
当session无效后再调用这个方法会抛出一个IllegalStateException。
public int setMaxInactiveInterval(int interval);
以下这个方法将被取消\
public HttpSessionContext getSessionContext();
[b]HttpSessionBindingListener接口[/b]
public interface HttpSessionBindingListener
方法
public void valueBound(HttpSessionBindingEvent event);
2、valueUnbound
当一个对象被从session中取消绑定,调用此方法。HttpSession.removeValue方法被调用时,Servlet引擎应该调用此方法。
[b]HttpSessionContext接口[/b]
此接口将被取消\
这个对象是与一组HTTP session关联的单一的实体。
方法
public HttpSession getSession(String sessionId);
2、getIds
当初用来返回这个环境下所有session id的列表。现在返回空的列表。
[b]Cookie类[/b]
public class Cookie implements Cloneable
RFC
2109。
public Cookie(String name, String value);
以字符$开头的name被RFC 2109保留。
方法
public String getComment();
2、getDomain
返回这个cookie可以出现的区域,如果未定义区域,返回空值。
public int getMaxAge();
4、getName
该方法返回cookie名。
public String getPath();
6、getSecure
如果这个cookie只通过安全通道传输返回真,否则返回假。
public String getValue();
8、getVersion
返回cookie的版本。版本1由RFC
2109解释。版本0由Netscape
Communications Corporation的说明解释。新构造的cookie默认使用版本0。
public void setComment(String purpose);
10、setDomain
这个方法设置cookie的有效域的属性。这个属性指定了cookie可以出现的区域。一个有效域以一个点开头(.foo.com),这意味着在指定的域名解析系统的区域中(可能是www.foo.com但不是a.b.foo.com)的主机可以看到这个cookie。默认情况是,cookie只能返回保 存它的主机。
public void setMaxAge(int expiry);
12、setPath
这个方法设置cookie的路径属性。客户端只能向以这个给定的路径String开头的路径返回cookie。
public void setSecure(boolean flag);
14、setValue
设置这个cookie的值,对于二进制数据采用BASE64编码。
15、setVersion
设置cookie的版本号
[b]HttpServlet类\[b][/b]
public class HttpServlet extends GenericServlet implements
这是一个抽象类,用来简化HTTP Servlet写作的过程。它是GenericServlet类的扩充,提供了一个处理HTTP协议的框架。
方法
protected void doDelete(HttpServletRequest request,
IOException;
这一方法的默认执行结果是返回一个HTTP BAD_REQUEST错误。当你要处理DELETE请求时,你必须重载这一方法。
protected void doGet(HttpServletRequest request,
IOException;
GET操作应该是安全而且没有负面影响的。这个操作也应该可以安全地重复。
3、doHead
HttpServletResponse response) throws ServletException,
被这个类的service方法调用,用来处理一个HTTP HEAD操作。默认的情况是,这个操作会按照一个无条件的GET方法来执行,该操作不向客户端返回任何数据,而仅仅是返回包含内容长度的头信息。
这个方法的默认执行结果是自动处理HTTP HEAD操作,这个方法不需要被一个子类执行。
protected void doOptions(HttpServletRequest request,
IOException;
Allow: GET,HEAD,TRACE,OPTIONS
5、doPost
HttpServletResponse response) throws ServletException,
被这个类的service方法调用,用来处理一个HTTP POST操作。这个操作包含请求体的数据,Servlet应该按照他行事。
这一方法的默认执行结果是返回一个HTTP BAD_REQUEST错误。当你要处理POST操作时,你必须在HttpServlet的子类中重载这一方法。
protected void doPut(HttpServletRequest request,
IOException;
这个操作可能有负面影响。例如更新存储的数据或在线购物。
7、doTrace
HttpServletResponse response) throws ServletException,
被这个类的service方法调用,用来处理一个HTTP TRACE操作。这个操作的默认执行结果是产生一个响应,这个响应包含一个反映trace请求中发送的所有头域的信息。
8、getLastModified
返回这个请求实体的最后修改时间。为了支持GET操作,你必须重载这一方法,以精确地反映最后修改的时间。这将有助于浏览器和代理服务器减少装载服务器和网络资源,从而更加有效地工作。返回的数值是自1970-1-1日(GMT)以来的毫秒数。
9、service
HttpServletResponse response) throws ServletException,
public void service(ServletRequest request, ServletResponse response)
这是一个Servlet的HTTP-specific方案,它分配请求到这个类的支持这个请求的其他方法。
定义\
这个事件是在监听到HttpSession发生绑定和取消绑定的情况时连通HttpSessionBindingListener的。这可能是一个session被终止或被认定无效的结果。
构造函数
通过引起这个事件的Session和发生绑定或取消绑定的对象名构造一个新的HttpSessionBindingEvent。
1、getName
返回发生绑定和取消绑定的对象的名字。
public HttpSession getSession();
定义\
收集HTTP Servlet使用的静态的有效的方法。
1、getRequestURL
request);
这个方法返回一个StringBuffer而不是一个String,这样URL可以被Servlet开发者有效地修改。
public static Hashtable parsePostData(int len,
解析一个包含MIME类型application/x-www-form-urlencoded的数据的流,并创建一个具有关键值-数据对的 hash table。这里的关键值是字符串,数据是该字符串所对应的值的列表。一个关键值可以在POST的数据中出现一次或多次。这个关键值每出现一次,它的相应的值就被加入到hash
table中的字符串所对应的值的列表中。
当POST数据无效时,该方法抛出一个IllegalArgumentException。
public static Hashtable parseQueryString(String s);
从查询字符串读出的数据将经过URL解码,+将被转换为空格以十六进制传送的数据(例如%xx)将被转换成字符。
bytecode
cookie
HTTP
输入流对象
映射
输出流对象
request dispatcher object
sandboxed servlet
servlet
servlet configuration object
servlet context object
servlet引擎
servlet请求对象
servlet response object
servlet runner
会话跟踪
SSL
URI
URL
一个客户端程序,可以是一个Web浏览器,或者是非其他的可以连接上Internet的程序,它会访问Web服务器并发出请求。这个请求被运行在Web服 务器上的Servlet引擎处理,并返回响应到Servlet。Servlet通过HTTP将这个响应转发到客户端。
Servlet与其他普通的server扩展机制有以下进步:
它使用了许多Web服务器都支持的标准的API。
它可以调用Java所提供的大量的API的功能模块。
一个Java servlet具有一个生命周期,这个生命周期定义了一个Servlet如何被载入并被初始化,如何接收请求并作出对请求的响应,如何被从服务中清除。Servlet的生命周期被javax.servlet.Servlet这个接口所定义。
javax.servlet.Servlet接口定义了在Servlet的生命周期中特定时间以及特定顺序被调用的方法。
Servlet的解析和载入[/b]
Servlet引擎利用Java类载入工具载入一个Servlet,Servlet引擎可以从一个本地的文件系统、一个远程的文件系统以及网络载入Servlet。
[b]Servlet的初始化[/b]
在初始化过程中,javax.servlet.Servlet接口的init()方法提供了Servlet的初始化信息。这样,Servlet可以对自己进行配置。
Servlet被初始化之后,它已经可以处理来自客户端的请求,每一个来自客户端的请求都被描述成一个ServletRequest对象,Servlet的响应被描述成一个ServletResponse对象。
Servlet 也可以执行ServletRequest接口和ServletResponse接口。ServletRequest接口使得Servlet有权使用客户端发出的请求。Servlet可以通过ServletInputStream对象读取请求信息。
在多线程的环境下,Servlet必须能处理许多同时发生的请求。例外的情况是这个Servlet执行了SingleThreadModel接口,如果是那样的话,Servlet只能同时处理一个请求。
然而,一个映射可能是由一个URL和许多Servlet实例组成,例如:一个分布式的Servlet引擎可能运行在不止一个的服务器中,这样的话,每一个服务器中都可能有一个Servlet实例,以平衡进程的载入。作为一个Servlet的开发者,你不能假定一个Servlet只有一个实例。
[b]Servlet的卸载[/b]
当Servlet引擎决定卸载一个Servlet时(例如,如果这个引擎被关闭或者需要让资源),这个引擎必须允许Servlet释放正在使用的资源并存储有关资料。为了完成以上工作,引擎会调用Servlet的destroy()方法。
作为一个Servlet引擎的开发者,你必须对于如何映射客户端的请求到Servlet有大量的适应性。这份说明文档不规定映射如何发生。但是,你必须能够自由地运用下面的所有技术:
映射一个Servlet到一个URL
例如,你可以映射一个Servlet到/catalog,这样来自/catalog/、 /catalog/garden和 /catalog/housewares/index.html的请求都会被映射到这个Servlet。但是来自/catalogtwo 或 /catalog.html的请求没被映射。
映射一个Servlet到所有以一个特定的字段结尾的所有URL
例如,如果你建立了一个名叫listattributes的Servlet,你可以通过使用/servlet/listattributes来访问这个Servlet。
[b]通过类名调用Servlet[/b]
ServletContext 接口定义了一个Servlet环境对象,这个对象定义了一个在Servlet引擎上的Servlet的视图。通过使用这个对象,Servlet可以记录事 件、得到资源并得到来自Servlet引擎的类(例如RequestDispatcher对象)。一个Servlet只能运行在一个Servlet环境 中,但是不同的Servlet可以在Servlet引擎上有不同的视图。
Servlet引擎能够允许一个Servlet环境有它自己的活动范围。
HTTP是一个没有状态的协议。要建立一个有效的Web服务应用,你必须能够识别一个连续的来自远端的客户机的唯一的请求。随着时间的过去,发展了许多会话跟踪的技术,但是使用起来都比较麻烦。
因为HTTP是一个请求-响应协议,一个会话在客户机加入之前会被认为是一个新的会话。加入的意思是返回会话跟踪信息到服务器中,指出会话已被建立。在客户端加入之前,我们不能判断下一个客户端请求是目前会话的一部分。
绑定对象到Session中
有些对象可能需要你知道什么时候会被放置到Session中或从Session中移开。你可以通过使用HttpSessionBindingListener接口获得这些信息。当你的应用存储数据到Session中,或从Session中清除数据,Servlet都会通过HttpSessionBindingListener检杳什么类被绑定或被取消绑定。这个接口的方法会通报被绑定或被取消绑定的对象。
这一部分包含了对Java Servlet API的全部类和接口的详细说明。这个说明与Javadoc
API差不多,但是这份文档提供了更多的信息。
软件包:javax.servlet
所包含的类:GenericServlet;ServletInputStream;ServletOutputStream;ServletException;UnavailableException。
[b]Request Dispatcher接口[/b]
public interface RequestDispatcher;
request
dispatcher对象,用于封装由一个特定的URL定义的服务器资源。
request dispatcher对象是由Servlet引擎建立的,而不是由Servlet开发者建立的。
1、forward
throws ServletException, IOException;
当request对象被传递到目标对象时,请求的URL路径和其他路径参数会被调整为反映目标对象的目标URL路径。
2、include
throws ServletException, IOException
请求对象传到目标对象后会反映调用请求的请求URL路径和路径信息。这个响应对象只能调用这个Servlet的ServletOutputStream对象和PrintWriter对象。
定义
这个接口定义了一个Servlet:一个在Web服务器上继承了这个功能的Java类。
1、init
Servlet引擎会在Servlet实例化之后,置入服务之前精确地调用init方法。在调用service方法之前,init方法必须成功退出。
2、service
throws ServletException, IOException;
在一个Servlet对象被卸载后,直到一个新的Servelt被初始化,Servlet引擎不能调用这个方法
public void destroy();
4、getServletConfig
返回一个ServletConfig对象,作为一个Servlet的开发者,你应该通过init方法存储ServletConfig对象以便这个方法能返回这个对象。为了你的便利,GenericServlet在执行这个接口时,已经这样做了。
public String getServletInfo();
[b]ServletConfig接口[/b]
public interface ServletConfig
方法
public String getInitParameter(String name);
2、getInitParameterNames
这个方法返回一个列表String对象,该对象包括Servlet的所有初始化参数名。如果Servlet没有初始化参数,getInitParameterNames返回一个空的列表。
public ServletContext getServletContext();
定义
定义了一个Servlet的环境对象,通过这个对象,Servlet引擎向Servlet提供环境信息。
方法
public Object getAttribute(String name);
2、getAttributeNames
返回一个Servlet环境对象中可用的属性名的列表。
public ServletContext getContext(String uripath);
为了安全,如果通过这个方法访问一个受限制的Servlet的环境对象,会返回一个空值。
public int getMajorVersion();
5、getMinorVersion
返回Servlet引擎支持的Servlet API的次版本号。例如对于2.1版,这个方法会返回一个整数2。
public String getMimeType(String file);
7、getRealPath
一个符合URL路径格式的指定的虚拟路径的格式是:/dir/dir/filename.ext。用这个方法,可以返回与一个符合该格式的虚拟路径相对应的真实路径的String。这个真实路径的格式应该适合于运行这个Servlet引擎的计算机(包括其相应的路径解析器)。
8、getResource
返回一个URL对象,该对象反映位于给定的URL地址(格式:/dir/dir/filename.ext)的Servlet环境对象已知的资源。无论 URLStreamHandlers对于访问给定的环境是不是必须的,Servlet引擎都必须执行。如果给定的路径的Servlet环境没有已知的资源,该方法会返回一个空值。
9、getResourceAsStream
返回一个InputStream对象,该对象引用指定的URL的Servlet环境对象的内容。如果没找到Servlet环境变量,就会返回空值,URL路径应该具有这种格式:/dir/dir/filename.ext。
10、getRequestDispatcher
如果这个指定的路径下能够找到活动的资源(例如一个Servlet,JSP页面,CGI等等)就返回一个特定URL的RequestDispatcher 对象,否则,就返回一个空值,Servlet引擎负责用一个request dispatcher对象封装目标路径。这个 request
dispatcher对象可以用来完全请求的传送。
public String getServerInfo();
12、log
public void log(String msg, Throwable t);
写指定的信息到一个Servlet环境对象的log文件中。被写入的log文件由Servlet引擎指定,但是通常这是一个事件log。当这个方法被一个异常调用时,log中将包括堆栈跟踪。
public void setAttribute(String name, Object o);
14、removeAttribute
从指定的Servlet环境对象中删除一个属性。
15、getServlet
最初用来返回一个指定名称的Servlet,如果没找到就返回一个空值。如果这个Servlet能够返回,这就意味着它已经被初始化,而且已经可以接受 service请求。这是一个危险的方法。当调用这个方法时,可能并不知道Servlet的状态,这就可能导致有关服务器状态的问题。而允许一个 Servlet访问其他Servlet的这个方法也同样的危险。
16、getServletNames
最初用来返回一个String对象的列表,该列表表示了在这个Servlet环境下所有已知的Servlet对象名。这个列表总是包含这个Servlet自身。
现在这个方法返回一个空的列表。为了保持和以前版本的兼容性,现在这个方法还没有被取消。在以后的API版本中,该方法将被取消。
public Enumeration getServlets();
基于与getServlet方法同样的理由,这也是一个危险的方法。
定义
定义一个Servlet引擎产生的对象,通过这个对象,Servlet可以获得客户端请求的数据。这个对象通过读取请求体的数据提供包括参数的名称、值和属性以及输入流的所有数据。
1、getAttribute
返回请求中指定属性的值,如果这个属性不存在,就返回一个空值。这个方法允许访问一些不提供给这个接口中其他方法的请求信息以及其他Servlet放置在这个请求对象内的数据。
public Enumeration getAttributeNames();
3、getCharacterEncoding
返回请求中输入内容的字符编码类型,如果没有定义字符编码类型就返回空值。
public int getContentLength();
5、getContentType
返回请求数据体的MIME类型,如果类型未知返回空值。
public ServletInputStream getInputStream() throws IOException;
7、getParameter
以一个String返回指定的参数的值,如果这个参数不存在返回空值。例如,在一个HTTP
Servlet中,这个方法会返回一个指定的查询语句产生的参数的值或一个被提交的表单中的参数值。如果一个参数名对应着几个参数值,这个方法只能返回通过getParameterValues方法返回的数组中的第一个值。因此,如果这个参数有(或者可能有)多个值,你只能使用getParameterValues方法。
public Enumeration getParameterNames();
9、getParameterValues
通过一个String对象的数组返回指定参数的值,如果这个参数不存在,该方法返回一个空值。
public String getProtocol();
11、getReader
这个方法返回一个buffered reader用来读取请求体的实体,其编码方式依照请求数据的编码方式。如果这个请求的输入流已经被getInputStream调用获得,这个方法会抛出一个IllegalStateException。
public String getRemoteAddr();
13、getRemoteHost
返回发送请求者的主机名称。如果引擎不能或者选择不解析主机名(为了改善性能),这个方法会直接返回IP地址。
public String getScheme();
15、getServerName
返回接收请求的服务器的主机名。
public int getServerPort();
17、setAttribute
这个方法在请求中添加一个属性,这个属性可以被其他可以访问这个请求对象的对象(例如一个嵌套的Servlet)使用。
getRealPath
返回与虚拟路径相对应的真实路径,如果因为某种原因,这一过程不能进行,该方法将返回一个空值。
定义
定义一个Servlet引擎产生的对象,通过这个对象,Servlet对客户端的请求作出响应。这个响应应该是一个MIME实体,可能是一个HTML页、图象数据或其他MIME的格式。
1、getCharacterEncoding
返回MIME实体的字符编码。这个字符编码可以是指定的类型,也可以是与请求头域所反映的客户端所能接受的字符编码最匹配的类型。在HTTP协议中,这个信息被通过Accept-Charset传送到Servlet引擎。
2、getOutputStream
返回一个记录二进制的响应数据的输出流。
3、getWriter
这个方法返回一个PringWriter对象用来记录格式化的响应实体。如果要反映使用的字符编码,必须修改响应的MIME类型。在调用这个方法之前,必须设定响应的content类型。
4、setContentLength
设置响应的内容的长度,这个方法会覆盖以前对内容长度的设定。
5、setContentType
这个方法用来设定响应的content类型。这个类型以后可能会在另外的一些情况下被隐式地修改,这里所说的另外的情况可能当服务器发现有必要的情况下对MIME的字符设置。
定义
这是一个空接口,它指定了系统如何处理对同一个Servlet的调用。如果一个Servlet被这个接口指定,那么在这个Servlet中的service方法中将不会有两个线程被同时执行。
public abstract class GenericServlet implements Servlet,
这个类的存在使得编写Servlet更加方便。它提供了一个简单的方案,这个方案用来执行有关Servlet生命周期的方法以及在初始化时对ServletConfig对象和ServletContext对象进行说明。
1、destroy
在这里destroy方法不做任何其他的工作。
public String getInitParameter(String name);
3、getInitParameterNames
这是一个简便的途径,它将会调用ServletConfig对象的同名的方法。
public ServletConfig getServletConfig();
5、getServletContext
这是一个简便的途径,它将会调用ServletConfig对象的同名的方法。
public String getServletInfo();
7、init
public void init(ServletConfig config) throws ServletException;
init()方法是用来让你对GenericServlet类进行扩充的,使用这个方法时,你不需要存储config对象,也不需要调用super.init(config)。
8、log
public void log(String msg, Throwable cause);
9、service
response) throws ServletException, IOException;
定义
这个类定义了一个用来读取客户端的请求信息的输入流。这是一个Servlet引擎提供的抽象类。一个Servlet通过使用ServletRequest接口获得了对一个ServletInputStream对象的说明。
方法
public int readLine(byte[] b, int off, int len) throws IOException;
定义
这是一个由Servlet引擎使用的抽象类。Servlet通过使用ServletResponse接口的使用获得了对一个这种类型的对象的说明。利用这个输出流可以将数据返回到客户端。
在这个接口中,当一个刷新或关闭的方法被调用时。所有数据缓冲区的信息将会被发送到客户端,也就是说响应被提交了。请注意,关闭这种类型的对象时不一定要关闭隐含的socket流。
1、print
public void print(boolean b) throws IOException;
public void print(int i) throws IOException;
public void print(float f) throws IOException;
输出变量到输出流中
public void println() throws IOException;
public void println(boolean b) throws IOException;
public void println(int i) throws IOException;
public void println(float f) throws IOException;
输出变量到输出流中,并增加一个回车换行符
[b]ServletException类[/b]
public class ServletException extends Exception
构造函数
public ServletException(String message);
public ServletException(Throwable cause);
方法
public Throwable getRootCause();
定义
不论一个Servlet是永久地还是临时地无效,都会抛出这个异常。Servlet会记录这个异常以及Servlet引擎所要采取的相应措施。
永久的无效是指除非管理员采取措施,这个Servlet将不能处理客户端的请求。例如,这个Servlet配置信息丢失或Servlet的状态被破坏。
构造函数
public UnavailableException(int seconds, Servlet servlet,
构造一个包含指定的描述信息的新的异常。如果这个构造函数有一个关于秒数的参数,这将给出Servlet发生临时无效后,能够重新处理请求的估计时间。如果不包含这个参数,这意味着这个Servlet永久无效。
1、getServlet
返回报告无效的Servlet。这被Servlet引擎用来识别受到影响的Servlet。
public int getUnavailableSeconds();
3、isPermanent
如果这个Servlet永久无效,返回布尔值true,指示必须采取一些管理行动以使得这个Servlet可用。
软件包:javax.servlet.http
所包含的类:Cookie;HttpServlet;HttpSessionBindingEvent;HttpUtils。
定义\
用来处理一个对Servlet的HTTP格式的请求信息。
1、getAuthType
返回这个请求的身份验证模式。
public Cookie[] getCookies();
3、getDateHeader
返回指定的请求头域的值,这个值被转换成一个反映自1970-1-1日(GMT)以来的精确到毫秒的长整数。
4、getHeader
返回一个请求头域的值。(译者注:与上一个方法不同的是,该方法返回一个字符串)
5、getHeaderNames
该方法返回一个String对象的列表,该列表反映请求的所有头域名。
6、getIntHeader
返回指定的请求头域的值,这个值被转换成一个整数。
7、getMethod
返回这个请求使用的HTTP方法(例如:GET、POST、PUT)
public String getPathInfo();
9、getPathTranslated
这个方法获得这个请求的URL的Servlet路径之后的额外的路径信息,并将它转换成一个真实的路径。在进行转换前,这个请求的URL必须经过URL解码。如果在这个URL的Servlet路径之后没有附加路径信息。这个方法返回空值。
public String getQueryString();
11、getRemoteUser
返回作了请求的用户名,这个信息用来作HTTP用户论证。
12、getRequestedSessionId
返回这个请求相应的session id。如果由于某种原因客户端提供的session id是无效的,这个session id将与在当前session中的session id不同,与此同时,将建立一个新的session。
13、getRequestURI
从HTTP请求的第一行返回请求的URL中定义被请求的资源的部分。如果有一个查询字符串存在,这个查询字符串将不包括在返回值当中。例如,一个请求通过 /catalog/books?id=1这样的URL路径访问,这个方法将返回/catalog/books。这个方法的返回值包括了Servlet路径 和路径信息。
14、getServletPath
这个方法返回请求URL反映调用Servlet的部分。例如,一个Servlet被映射到/catalog/summer这个URL路径,而一个请求使用了/catalog/summer/casual这样的路径。所谓的反映调用Servlet的部分就是指/catalog/summer。
15、getSession
public HttpSession getSession(boolean create);
为了确保session能够被完全维持。Servlet开发者必须在响应被提交之前调用该方法。
16、isRequestedSessionIdValid
这个方法检查与此请求关联的session当前是不是有效。如果当前请求中使用的session无效,它将不能通过getSession方法返回。
public boolean isRequestedSessionIdFromCookie();
18、isRequestedSessionIdFromURL
如果这个请求的session id是通过客户端的URL的一部分提供的,该方法返回真,否则返回假。请注意此方法与isRequestedSessionIdFromUrl在URL的拼写上不同。
public boolean isRequestedSessionIdFromUrl();
定义\
public interface HttpServletResponse extends ServletResponse
成员变量
public static final int SC_SWITCHING_PROTOCOLS = 101;
public static final int SC_CREATED = 201;
public static final int SC_NON_AUTHORITATIVE_INFORMATION = 203;
public static final int SC_RESET_CONTENT = 205;
public static final int SC_MULTIPLE_CHOICES = 300;
public static final int SC_MOVED_TEMPORARILY = 302;
public static final int SC_NOT_MODIFIED = 304;
public static final int SC_BAD_REQUEST = 400;
public static final int SC_PAYMENT_REQUIRED = 402;
public static final int SC_NOT_FOUND = 404;
public static final int SC_NOT_ACCEPTABLE = 406;
public static final int SC_REQUEST_TIMEOUT = 408;
public static final int SC_GONE = 410;
public static final int SC_PRECONDITION_FAILED = 412;
public static final int SC_REQUEST_URI_TOO_LONG = 414;
public static final int SC_INTERNAL_SERVER_ERROR = 500;
public static final int SC_BAD_GATEWAY = 502;
public static final int SC_GATEWAY_TIMEOUT = 504;
以上HTTP产状态码是由HTTP/1.1定义的。
1、addCookie
在响应中增加一个指定的cookie。可多次调用该方法以定义多个cookie。为了设置适当的头域,该方法应该在响应被提交之前调用。
public boolean containsHeader(String name);
3、encodeRedirectURL
对sendRedirect方法使用的指定URL进行编码。如果不需要编码,就直接返回这个URL。之所以提供这个附加的编码方法,是因为在 redirect的情况下,决定是否对URL进行编码的规则和一般情况有所不同。所给的URL必须是一个绝对URL。相对URL不能被接收,会抛出一个 IllegalArgumentException。
4、encodeURL
对包含session ID的URL进行编码。如果不需要编码,就直接返回这个URL。Servlet引擎必须提供URL编码方法,因为在有些情况下,我们将不得不重写URL,例如,在响应对应的请求中包含一个有效的session,但是这个session不能被非URL的(例如cookie)的手段来维
持。
5、sendError
public void sendError(int statusCode, String message) throws
用给定的状态码发给客户端一个错误响应。如果提供了一个message参数,这将作为响应体的一部分被发出,否则,服务器会返回错误代码所对应的标准信息。
6、sendRedirect
使用给定的路径,给客户端发出一个临时转向的响应(SC_MOVED_TEMPORARILY)。给定的路径必须是绝对URL。相对URL将不能被接收,会抛出一个IllegalArgumentException。
7、setDateHeader
用一个给定的名称和日期值设置响应头,这里的日期值应该是反映自1970-1-1日(GMT)以来的精确到毫秒的长整数。如果响应头已经被设置,新的值将覆盖当前的值。
public void setHeader(String name, String value);
9、setIntHeader
用一个给定的名称和整形值设置响应头。如果响应头已经被设置,新的值将覆盖当前的值。
public void setStatus(int statusCode);
以下的几个方法将被取消\
public String encodeRedirectUrl(String url);
12、encodeUrl
该方法被encodeURL取代。
public void setStatus(int statusCode, String message);
定义\
这个接口被Servlet引擎用来实现在HTTP客户端和HTTP会话两者的关联。这种关联可能在多外连接和请求中持续一段给定的时间。session用来在无状态的HTTP协议下越过多个请求页面来维持状态和识别用户。
方法
public long getCreationTime();
2、getId
返回分配给这个session的标识符。一个HTTP session的标识符是一个由服务器来建立和维持的唯一的字符串。
public long getLastAccessedTime();
4、getMaxInactiveInterval
返加一个秒数,这个秒数表示客户端在不发出请求时,session被Servlet引擎维持的最长时间。在这个时间之后,Servlet引擎可能被Servlet引擎终止。如果这个session不会被终止,这个方法返回-1。
5、getValue
返回一个以给定的名字绑定到session上的对象。如果不存在这样的绑定,返回空值。
6、getValueNames
以一个数组返回绑定到session上的所有数据的名称。
7、invalidate
这个方法会终止这个session。所有绑定在这个session上的数据都会被清除。并通过HttpSessionBindingListener接口的valueUnbound方法发出通告。
public boolean isNew();
当session无效后再调用这个方法会抛出一个IllegalStateException。
public void putValue(String name, Object value);
当session无效后再调用这个方法会抛出一个IllegalStateException。
public void removeValue(String name);
当session无效后再调用这个方法会抛出一个IllegalStateException。
public int setMaxInactiveInterval(int interval);
以下这个方法将被取消\
public HttpSessionContext getSessionContext();
[b]HttpSessionBindingListener接口[/b]
public interface HttpSessionBindingListener
方法
public void valueBound(HttpSessionBindingEvent event);
2、valueUnbound
当一个对象被从session中取消绑定,调用此方法。HttpSession.removeValue方法被调用时,Servlet引擎应该调用此方法。
[b]HttpSessionContext接口[/b]
此接口将被取消\
这个对象是与一组HTTP session关联的单一的实体。
方法
public HttpSession getSession(String sessionId);
2、getIds
当初用来返回这个环境下所有session id的列表。现在返回空的列表。
[b]Cookie类[/b]
public class Cookie implements Cloneable
RFC
2109。
public Cookie(String name, String value);
以字符$开头的name被RFC 2109保留。
方法
public String getComment();
2、getDomain
返回这个cookie可以出现的区域,如果未定义区域,返回空值。
public int getMaxAge();
4、getName
该方法返回cookie名。
public String getPath();
6、getSecure
如果这个cookie只通过安全通道传输返回真,否则返回假。
public String getValue();
8、getVersion
返回cookie的版本。版本1由RFC
2109解释。版本0由Netscape
Communications Corporation的说明解释。新构造的cookie默认使用版本0。
public void setComment(String purpose);
10、setDomain
这个方法设置cookie的有效域的属性。这个属性指定了cookie可以出现的区域。一个有效域以一个点开头(.foo.com),这意味着在指定的域名解析系统的区域中(可能是www.foo.com但不是a.b.foo.com)的主机可以看到这个cookie。默认情况是,cookie只能返回保 存它的主机。
public void setMaxAge(int expiry);
12、setPath
这个方法设置cookie的路径属性。客户端只能向以这个给定的路径String开头的路径返回cookie。
public void setSecure(boolean flag);
14、setValue
设置这个cookie的值,对于二进制数据采用BASE64编码。
15、setVersion
设置cookie的版本号
[b]HttpServlet类\[b][/b]
public class HttpServlet extends GenericServlet implements
这是一个抽象类,用来简化HTTP Servlet写作的过程。它是GenericServlet类的扩充,提供了一个处理HTTP协议的框架。
方法
protected void doDelete(HttpServletRequest request,
IOException;
这一方法的默认执行结果是返回一个HTTP BAD_REQUEST错误。当你要处理DELETE请求时,你必须重载这一方法。
protected void doGet(HttpServletRequest request,
IOException;
GET操作应该是安全而且没有负面影响的。这个操作也应该可以安全地重复。
3、doHead
HttpServletResponse response) throws ServletException,
被这个类的service方法调用,用来处理一个HTTP HEAD操作。默认的情况是,这个操作会按照一个无条件的GET方法来执行,该操作不向客户端返回任何数据,而仅仅是返回包含内容长度的头信息。
这个方法的默认执行结果是自动处理HTTP HEAD操作,这个方法不需要被一个子类执行。
protected void doOptions(HttpServletRequest request,
IOException;
Allow: GET,HEAD,TRACE,OPTIONS
5、doPost
HttpServletResponse response) throws ServletException,
被这个类的service方法调用,用来处理一个HTTP POST操作。这个操作包含请求体的数据,Servlet应该按照他行事。
这一方法的默认执行结果是返回一个HTTP BAD_REQUEST错误。当你要处理POST操作时,你必须在HttpServlet的子类中重载这一方法。
protected void doPut(HttpServletRequest request,
IOException;
这个操作可能有负面影响。例如更新存储的数据或在线购物。
7、doTrace
HttpServletResponse response) throws ServletException,
被这个类的service方法调用,用来处理一个HTTP TRACE操作。这个操作的默认执行结果是产生一个响应,这个响应包含一个反映trace请求中发送的所有头域的信息。
8、getLastModified
返回这个请求实体的最后修改时间。为了支持GET操作,你必须重载这一方法,以精确地反映最后修改的时间。这将有助于浏览器和代理服务器减少装载服务器和网络资源,从而更加有效地工作。返回的数值是自1970-1-1日(GMT)以来的毫秒数。
9、service
HttpServletResponse response) throws ServletException,
public void service(ServletRequest request, ServletResponse response)
这是一个Servlet的HTTP-specific方案,它分配请求到这个类的支持这个请求的其他方法。
定义\
这个事件是在监听到HttpSession发生绑定和取消绑定的情况时连通HttpSessionBindingListener的。这可能是一个session被终止或被认定无效的结果。
构造函数
通过引起这个事件的Session和发生绑定或取消绑定的对象名构造一个新的HttpSessionBindingEvent。
1、getName
返回发生绑定和取消绑定的对象的名字。
public HttpSession getSession();
定义\
收集HTTP Servlet使用的静态的有效的方法。
1、getRequestURL
request);
这个方法返回一个StringBuffer而不是一个String,这样URL可以被Servlet开发者有效地修改。
public static Hashtable parsePostData(int len,
解析一个包含MIME类型application/x-www-form-urlencoded的数据的流,并创建一个具有关键值-数据对的 hash table。这里的关键值是字符串,数据是该字符串所对应的值的列表。一个关键值可以在POST的数据中出现一次或多次。这个关键值每出现一次,它的相应的值就被加入到hash
table中的字符串所对应的值的列表中。
当POST数据无效时,该方法抛出一个IllegalArgumentException。
public static Hashtable parseQueryString(String s);
从查询字符串读出的数据将经过URL解码,+将被转换为空格以十六进制传送的数据(例如%xx)将被转换成字符。
bytecode
cookie
HTTP
输入流对象
映射
输出流对象
request dispatcher object
sandboxed servlet
servlet
servlet configuration object
servlet context object
servlet引擎
servlet请求对象
servlet response object
servlet runner
会话跟踪
SSL
URI
URL
相关推荐
总结来说,Servlet API为Java Web开发提供了一个强大而灵活的框架,使得开发者能够轻松地处理HTTP请求和响应,实现动态网站功能。通过这个中文版文档,即使英语基础较弱的开发者也能有效地学习和使用Servlet技术,...
### Servlet API 中文版在线知识点解析 #### 一、Servlet API 概述 Servlet API 是一个为开发基于 Java 的 Web 应用程序提供标准接口...掌握 Servlet API 的使用,是成为一名合格的 Java Web 开发者的重要基础之一。
Java Servlet API 2.1 是一个强大的工具,为 Web 开发者提供了创建高度动态和交互式 Web 应用的基础。通过对上述关键知识点的理解,开发者可以更加熟练地使用 Java Servlet API 来构建高效、可扩展的 Web 应用程序。...
总的来说,servlet-api.jar是Java Web开发的基础,它定义了Servlet的生命周期和行为,使得开发者能够构建出高性能、可扩展的Web应用。随着技术的不断发展,虽然直接操作Servlet的场景有所减少,但理解Servlet API...
了解并熟练使用ServletAPI对于开发基于Java EE的Web应用至关重要,它允许开发者构建动态、交互式的Web应用程序,并与其他Java EE服务进行集成,如EJB、JPA等,从而实现复杂的企业级功能。通过深入学习和实践,开发者...
Servlet API是Java Web开发的基础,它定义了服务器端如何处理HTTP请求并返回响应。在`javax.servlet`包中,主要包含Servlet接口和ServletConfig接口,这两个接口是所有Servlet类的核心。Servlet接口定义了如`doGet...
它支持Servlet、JSP和其他相关技术,被广泛应用于中小型网站的开发和部署环境中。Tomcat以其简单易用、性能稳定等特点受到开发者的喜爱。 #### 4. Servlet API的作用 Servlet API是一组用于开发和部署基于Java的...
了解Servlet API对于Java Web开发者至关重要,因为它为构建动态网站提供了基础框架。通过学习和使用Servlet API,开发者可以创建处理各种HTTP请求的服务器端应用,包括登录验证、数据处理、文件上传下载等。同时,...
Java Servlet API是Java Web开发中的核心组件之一,主要用于构建服务器端的应用程序,特别是与HTTP协议交互的Web服务。它提供了一套接口和类,让开发者能够处理来自客户端(通常是浏览器)的请求,并向客户端发送...
Servlet API是Java Web开发中的核心组件,主要用于构建动态web应用程序。它是由Sun Microsystems(现在是Oracle Corporation的一部分)制定的一套接口和类,为服务器端的Java应用程序提供了处理HTTP请求的能力。...
JavaEE API包含了如Servlet、JSP、EJB、JMS等技术的规范,是开发分布式、事务处理和多层架构应用的基础。了解和掌握JavaEE API对于进行企业级开发至关重要。 3. **JavaScript API**:JavaScript是一种广泛应用于...
总之,Servlet-API和JSP-API是Java Web开发不可或缺的部分,它们共同构成了动态网站开发的强大框架。理解并熟练运用这两个API,可以帮助开发者更高效地构建健壮、可维护的Web应用。在Tomcat 7.0环境下,正确配置和...
在Java Web开发中,Servlet API、Standard和JSTL(JavaServer Pages Standard Tag Library)是三个重要的库,它们为构建动态网页提供了强大的支持。这里我们详细探讨一下这三个库的功能和用途。 1. **Servlet API**...
除了Java自身的规范外,文档还列举了一系列互联网规范,它们为开发和实现Java Servlet API和标准servlet引擎提供了宝贵的指导。这些互联网规范包括: - RFC2047 MIME Part Three: Message Header Extensions for ...
Java Servlet API作为构建动态Web应用程序的关键技术之一,其强大的功能和灵活性使其成为开发人员的理想选择。通过深入了解Servlet API的工作原理及其相关规范,开发人员可以更好地利用这项技术来构建高效、可靠的...
在本压缩包中,我们找到了针对不同技术的API文档,包括JDK1.6 API文档、jQueryAPI、JSP参考手册、servletAPI以及W3C相关的规范。 1. JDK1.6 API文档:这是Java开发的基础,包含了Java语言的核心类库,如集合框架、I...
在Java Web开发中,Servlet和JSP是两个非常重要的技术,它们构成了服务器端动态网页的基础。Servlet是一个Java类,用于扩展服务器的功能,处理HTTP请求,而JSP(Java Server Pages)则是一种视图技术,允许开发者在...
### Java Servlet API 2.1 版本说明文档知识点总结 #### 一、绪论与目标读者 - **绪论**:本文档为2.1版Java Servlet API的官方中文说明文档,旨在介绍该版本的主要特性和使用方法。文档不仅包含文字说明,还提供...
总结来说,"简单的servlet例子新闻网站 全"是一个全面的教程,涵盖了Servlet的基础和进阶应用,包括处理HTTP请求、数据库操作、分页技术以及MVC模式。通过这个项目,开发者可以深入了解Servlet在实际Web开发中的使用...
servlet-api.jar文件包含了这些接口的实现和类,是开发和部署Java Web应用的基础,通常在Tomcat、Jetty等应用服务器中被广泛使用。 Solr,另一方面,是Apache Lucene项目的一个子项目,是一个开源的企业级全文搜索...