一、JavaServlet概述
什么是JavaServlet
JavaServlet是位于Web服务器内部的、运行于服务器端的、独立于平台和协议的Java应用程序(以下简称Servlet),可以生成动态的Web。
Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
Servlet的运行需要在web.xml中进行描述和注册。
二、Servlet的特点
1 .高效性:Servlet采用了多线程的处理机制,有效地节省了处理时间和资源分配,提高了处理效率。
2 .开发的方便性:Servlet提供了大量的实用工具例程,用户可以非常方便地学习并在此基础上开发出所需的应用程序。
3.强大的功能性:Servlet为用户提供了许多以往CGI很难实现的功能,这些强大的功能为用户的Web开发提供了很好的支持。
4.可移植性:Servlet的定义和开发具有完善的标准。因此,Servlet不需修改或只需简单调整即可移植到Apache、Microsoft IIS等支持Servlet的Web服务器上。几乎所有的主流服务器都直接或通过插件支持Servlet。
5.安全性:Servlet是由Java编写的,所以它可以使用Java的安全框架;ServletAPI被实现为类型安全的;容器也会对Servlet的安全进行管理。
三、Servlet编程基础
Servlet架构由javax.servlet和javax.servlet.http两个Java包组成。在javax.servlet包中定义了所有的Servlet类都必须实行或扩展的通用接口和类。
在javax.servlet.http包中定义了采用http通信的HttpServlet类。
所有的Servlet 对象都要实现Servlet 接口。已经实现了Servlet 接口的javax.servlet.GenericServlet 和javax.servlet.http.HttpServlet 这两个抽象类的子类来间接实现Servlet 接口。
四、Servlet接口
用户编写的Servlet程序都必须实现javax.servlet.Servlet接口,该接口是ServletAPI的核心,在这个接口中有5个方法必须实现。
init()方法
service()方法
destroy()方法
getServletConfig()方法
getServletInfo()方法
下面进行详细介绍。
1. init()方法
格式 :public void init(ServletConfig config) throws ServletException
说明:该方法用于初始化一个Servlet类实例,并将其加载到内存中。接口规定对任何Servlet实例,在一个生命周期中此方法只能被调用一次。如果此方法没有正常结束就会抛出一个ServletException异常, 而Servlet不再执行。随后对它的调用会由Servlet容器对它重新载入并再次运行该方法。
2. service()方法
格式:publicvoid service(ServletRequest req,ServletResponse res) throwsServletException,IOException
说明:Servlet成功初始化后该方法会被调用,用于处理用户请求。该方法在Servlet生命周期中可执行很多次,每个用户的请求都会执行一次service()方法,完成与相应客户端的交互。
3. destroy()方法
格式:publicvoid destroy()
说明:该方法用于终止Servlet服务,销毁一个Servlet实例。
4. getServletConfig()方法
格式:publicServletConfig getServletConfig()
说明:该方法可获得ServletConfig对象,里面包含该Servlet的初始化信息,如初始化参数和ServletContext对象。
5. getServletInfo()方法
格式:publicString getServletInfo()
说明:此方法返回一个String对象,该对象包含Servlet的信息,例如开发者、创建日期、描述信息等。
上述方法中的init()、service()、destroy()方法是Servlet的生命周期方法,由Servlet自动调用,如当服务器关闭时,就会自动调用destroy()方法。
实际上,Servlet为用户提供了两个更适用于编程的抽象类javax.servlet.GenericServlet和 javax.servlet.http.HttpServlet,这两个抽象类间接实现了Servlet 接口。
GenericServlet抽象类继承了Servlet接口并实现了javax.servlet.Servlet接口中除了service()方法以外的其他所有方法,这样用户只需实现一个service()方法即可。
HttpServlet抽象类则是针对http协议而定义的,是GenericServlet类的子类,它仅支持基于http协议的请求或响应。
五、Servlet程序的编译
创建Servlet程序的过程
1、打开Eclipse,然后在Java2e 项目中的java Resources\src目录中创建一个数据包,包名为serv