servlet2

Servlet的生命周期
Servlet的生命周期定义了一个Servlet如何被加载、初始化,以及它怎样接收请求、响应请求、提供服务。

Servlet的初始化
init方法被调用于初始化JSP/Servlet,其格式为:
public void init(ServletConfig config) throws ServletException
{
super.init();
}
在初始化过程中,Servlet应当准备好它要安排的一些资源,以便这个Servlet能够接收请求,做到这些可以不用考虑多线程,因为在Servlet初始化时只能是单进程的。一旦初始化方法完成,Servlet就能接收客户端的请求。

Servlet的执行
Service方法可以用于实现事务逻辑,是处理请求的地方。在服务器装载初始化Servlet后,Servlet就能够处理客户端的请求,可以用service方法来实现。每个客户端请求有它自己service方法。这些方法接收客户端请求,并且发回相应的响应
。Servlet能同时运行多个service。这样,service方法可以按一个thread-safe样式编写。如service方法更新Servlet对象中的一个字段field,这个字段是可以同时存取的。假如某个服务器不能同时并发运行service方法,也可以用SingleThreadModel接口。这个接口保证不会有两个以上的线程(threads)并发运行。在Servlet执行期间其最多的应用是处理客户端的请求并产生一个网页。

Servlet的结束
当服务器卸载一个Servlet,它将调用Servlet的destroy方法。这个destroy方法是与初始化方法相反,同时从内存中释放Servlet。Destroy的格式为:
public void destroy()
{
……
}
用户调用destroy实际上不会卸载Servlet,只有Servlet引擎才可以实现此功能。
Servlet的类和接口

Servlet的相关类和接口有很多,都放在包javax.Servlet和包javax.Servlet.http中。下面就其中主要的几个类和接口进行介绍。
ServletInputStream类是一个抽象类,它提供了从客户机请求读取二进制数据的一个输入流,对于一些协议,例如HTTP、POST和PUT,可以使用ServletInputStream对象读取和发送数据。
ServletOutputStream类是一个抽象类,它提供了一个输出流,用于向客户端发送数据。
ServletConfig接口定义了一个Servlet配置对象,Servlet引擎可以用来传递信息给Servlet以便初始化Servlet。
HttpServletRequest接口扩展了javax.Servlet.ServletRequest接口。用于提供更多的功能给HTTP Servlet。Servlet引擎实现该接口,创建HTTPServletRequest对象,将来自客户浏览器的信息传递给HttpServlet的service方法。
状态代码

在Web服务器应答中,应答中可能包括状态代码处理。应答信息中的状态代码中,可以提取需要的状态信息,从而做出相应的处理。Servlet可以利用这些状态代码来实现许多功能。例如,可以把用户重定向到另一个网站;可以告诉用户必须提供密码才能访问文档等等。常见的状态代码有RequestDispatcher接口,它能够允许将请求交给另一个JSP网页、Servlet或者将数据(jsp、servlet、html等)的输出一并加入到原来的输出流里 。

处理客户端提交的数据

客户端向服务器端提交数据的方法一般有GET和POST两种。相应的,覆盖doGet方法和doPost方法就能够处理其中的信息 。

JSP+Servlet编程实例

JSP和Servlet结合的体系结构,是一种把JSP与Servlet联合使用来实现动态内容服务的方法。它吸取了两种技术各自的突出优点,用JSP生成表达层的内容,让Servlet完成深层次的处理任务,Servlet充当控制者的角色,负责管理对请求的处理,创建JSP页需要使用的bean和对象,同时根据用户的动作决定把那个JSP页传给请求者。在JSP页内没有处理逻辑;它仅负责检索原先由Servlet创建的对象或beans,从Servlet中提取动态内容插入静态模板,清晰地分离了表达和内容。项目越复杂,使用该体系结构的好处就越大。

Servlet程序的使用过程

编写servlet程序
编译servlet程序(添加servlet-api至classpath)
将编译的servlet字节码放入WEB-INF的classes目录下
配置WEB-INF中的web.xml文件
在浏览器里发布
















你可能感兴趣的:(servlet)