欢迎访问: http://www.ptcms.cn
Servlet 是按照一定规范用Java 编写的服务器端程序,此程序在服务器上运行以处理客户端请求。
早于JSP技术,是JSP技术的基础。
Servlet 是使用Java Servlet应用程序设计接口(API)及相关类和方法的Java程序。Servlet装入Web服务器并在Web服务器内执行。
当客户端发送请求至服务器时,服务器可以将请求信息转发给Servlet,并使用Servlet建立起返回给客户端的响应。
创建并返回一个包含基于客户端请求的动态内容的HTML页面。
与其它服务器资源(如数据库和JavaBean)进行通信。
Servlet可以处理客户端传递的Http请求,并返回一个响应。每一个Servlet都是一个Java类,Java语言能实现的功能,Servlet基本上都能实现。
Servlet部署在容器中,它的生命周期由容器管理。Servlet的生命周期始于将它装入Web服务器的内存时,并在终止或重新装入Servlet时结束。
Servlet的生命周期可以归纳为以下几个阶段:
Servlet的生命周期可以归纳为以下几个阶段:
装载Servlet:这项操作一般是动态执行的。服务器通常会提供一个管理的选项,用于在服务器启动时强制装载和初始化特定的Servlet。
创建一个Servlet实例。
调用Servlet的init()方法。
一个客户端的请求到达服务器。
创建一个请求对象。
创建一个响应对象。
激活Servlet的Service()方法,并传递请求和响应对象。
Service()方法获得关于请求对象的信息、处理请求、访问其它资源、获得需要的信息。
Service()方法使用响应对象的方法,将响应传回服务器,最终到达客户端。
对于更多的客户端请求,服务器创建新的请求和响应对象,仍然激活此Servlet的Service()方法,将两个对象作为参数传递给它。
当服务器不再需要Servlet或当服务器关闭时,服务器将会调用Servlet的destroy()方法来销毁Servlet。
在上述阶段中,对外提供服务是最重要的阶段。
Service()方法是真正处理业务的方法。
Servlet接口——所编写的Servlet必须直接或者间接实现的Servlet接口。
Servlet API中有两个类实现了Servlet接口,他们分别是GenericServlet和HttpServlet,一般使用HttpServlet。
HttpServlet类是针对使用Http协议的Web服务器的Servlet类。
HttpServlet类通过实现Servlet接口,提供Http协议的功能。
HttpServlet的子类必须实现以下方法中的一个。
doGet()方法:由服务器调用(通过Service()方法)以允许一个Servlet去处理一个GET请求。
doPost()方法:由服务器调用(通过Service()方法)以允许一个Servlet去处理一个POST请求。
doPut()方法:由服务器调用(通过Service()方法)以允许一个Servlet去处理一个PUT请求。
doDelete()方法:由服务器调用(通过service()方法)以允许一个Servlet去处理一个DELETE请求。
init()方法和destory()方法:管理Servlet占用的资源。
getServletInfo()方法:获得Servlet自身的信息
开发:继承HttpServlet来创建Servlet,实现doPost方法或doGet方法以处理客户端的HttpGet请求和HttpPost请求。
部署:配置web.xml,首先声明Servlet:指定这个Servlet的名称和类名,然后为这个Servlet创建URL映射,我们通过这个映射来访问这个Servlet(即指明访问的地址)。
简单 Servlet 的结构
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ClientServlet extends HttpServlet
{
public void doGet(HttpServletRequest
request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType
(“text/html;charset=gb2312”);
PrintWriter out= response.getWriter() ;
out.println(“<html><body> 您好!</body></html>”) ;
}
}
Servlet 的部署
web.xml文件中配置Servlet
<servlet>
<servlet-name>Servlet1</servlet-name>
<servlet-class>chapter7.Servlet1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet1</servlet-name>
<url-pattern>/Servlet1</url-pattern>
</servlet-mapping>