一、Servlet是什么
Servlet是Java Web三大组件之一(三大组件:Servlet、Filter、Listenter),它属于动态资源。Servlet的作用是处理请求,服务器会把连接收到的请求交给Servlet来处理,Servlet的工作任务是:
- 接受数据信息
- 处理请求
- 完成响应
例如客户端(如浏览器)发出登录请求,或者输入注册请求,这些请求都应该由Servlet来完成处理。Servlet类需要我们自己来编写,每个Servlet类都必须实现javax.servlet.Servlet接口。
servlet结构体系如下:
Servlet对象、ServletConfig对象与Serializable对象是接口对象。Servlet对象和ServletConfig对象定义了Servlet的基本方法和封装了Servlet的相关配置信息。 Serializable对象是java.io中的序列化接口。GenericServlet对象是一个抽象类,它分别实现了上述的3个接口,该对象为Servlet接口和ServletConfig接口提供了部分实现,但它没有对HTTP请求的处理进行实现。而GnericServlet的子类HttpServlet对HTTP请求的处理进行了实现。这个对象为HTTP提供了POST、GET等类型提供了具体的操作方法,所以通常情况下,我们所编写的Servlet对象都是继承于HttpServlet。实际开发中,一般用我们自己定义的xxxServlet类去继承HttpServlet类。原因是HttpServlet是Servlet的实现类,并提供了HTTP请求的处理方法。
二、Servlet的运行过程
Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:
①Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。
②装载并创建该Servlet的一个实例对象。
③调用Servlet实例对象的init()方法。
④创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去。
⑤WEB应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。
三、Servlet调用图
四、在Eclipse中开发Servlet
1.打开Eclipse
2.点击File-->New-->Dynamic Web Project 建立web project工程
3.导入servlet-api.jar包。(这个包在你的Tomcat文件目录下的lib文件里)
4.在Java Resources下的src文件下建立一个包,建立一个servlet文件。建立servlet文件的过程如下:
右键点击刚刚建立的包,选择建立Servlet (我这里建立的包是WebStudy包)
- 然后输入servlet的名字
- 勾选要重写的方法。一般我们重写doPost 和doGet方法 。点击完成
建立完成之后我们会发现eclipse已经自动为我们生成了以下代码
我们在doGet和doPost方法中写我们的事务。除了doGet和doPost这两个方法 ,这里还要注意@WebServlet这个注解。@WebServlet注解是Servlet 3.0的新特征 ,可以用这个注解,代替用xml配置Servlet。
五、@WebServlet注解 详解
作用:用于将一个类声明为 Servlet
描述:该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为 Servlet。
属性详解:该注解具有下表给出的一些常用属性(以下所有属性均为可选属性,但是 vlaue 或者 urlPatterns 通常是必需的,且二者不能共存,如果同时指定,通常是忽略 value 的取值)
属性:
使用方法:
方法一:
/注解配置
@WebServlet(
displayName = "MyServlet" , //描述
name = "MyServlet", //servlet名称
urlPatterns = { "/user" }, //url
loadOnStartup = 1, //启动项
initParams = { @WebInitParam(name = "", value = "") }
)//初始化参数
方法二:
@WebServlet({"/MyServlet","/S"})
这么使用浏览器以下连接结果都是一样的:
http://localhost:8080/webStudy/MyServlet
http://localhost:8080/webStudy/S