测试软件:IntelliJ IDEA
参考文档:C语言中文网
JDK:15
- 如果想要使用Servlet创建一个动态网页,必须实现Serlet类。
- Servlet规范是一个接口,是javax.servlet下。
- 所有Servlet类都要直接或间接实现Servlet接口。
- 若直接实现Servlet接口,会生成许多用不到的方法,所以衍生出来了两个实现类:GenericServlet和HttpServlet
创建Servlet类有三种方式:
- 实现Servlet接口
- 继承GenericServlet类
- 继承HttpServlet类
- javax.servlet.Servlet是Servlet API的核心接口,所有的Servlet类都要实现该接口。
- Servlet接口中有五个方法:
| 返回值 | 方法 | 备注 |
|---|---|---|
| void | init(ServletConfigconfig) | Servlet 实例化之后,由 Servlet 容器调用,用来初始化 Servlet 对象。该方法只能被调用一次。 参数 config 用来向 Servlet 传递配置信息。 |
| void | service(ServletRequest req,ServletResponse res) | Servlet 容器调用该方法处理客户端请求。 |
| void | destroy() | 服务器关闭、重启或者 Servlet 对象被移除时,由 Servlet 容器调用,负责释放 Servlet 对象占用的资源。 |
| ServletConfig | getServletConfig() | 该方法用来获取 ServletConfig 对象,该对象中包含了 Servlet 的初始化参数。 |
| String | getServletInfo() | 该方法用于获取 Servlet 的信息,例如作者、版本、版权等。 |
举个栗子:
首先导入maven依赖:
javax.servlet servlet-api 2.5
然后需要准备tomcat服务器,可以去官网上下载,如果不想下载可以使用tomcat插件:
org.apache.tomcat.maven tomcat7-maven-plugin 2.2 / 8080
创建一个Servlet类
package com.servlet1;
import javax.servlet.*;
import java.io.IOException;
public class servletBuild implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
继承GenericServlet抽象类
可以看到使用直接继承Servlet接口时,必须要实现五个方法,可以观察到十分的繁琐。
为了减少创建的工作量,创建了GenericServlet类。
- 使用GenericServlet类创建Servlet只用实现一个service()方法。
- javax.servlet.GenericServlet实现了Servlet接口,并且提供了以下方法:
| 返回值 | 方法 | 备注 |
|---|---|---|
| String | getInitParameter(String name) | 返回名字为 name 的初始化参数的值,初始化参数在 web.xml 中进行配置。如果参数不存在,则返回 null。 |
| Enumeration | getInitParameterNames() | 返回 Servlet 所有初始化参数的名字的枚举集合,若 Servlet 没有初始化参数,返回一个空的枚举集合。 |
| ServletContext | getServletContext() | 返回 Servlet 上下文对象的引用。 |
| String | getServletName() | 返回此 Servlet 实例的名称。 |
举个栗子:
package com.servlet1;
import javax.servlet.*;
import java.io.IOException;
public class servletBuild extends GenericServlet{ // 继承GenericServlet方法
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
}
}
继承HttpServlet抽象类
- javax.servlet.http.HttpServlet 继承了 GenericServlet 抽象类。
- 用于开发基于 HTTP 协议的 Servlet 程序。
- 在 HTTP/1.1 协议中共定义了 7 种请求方式,即 GET、POST、HEAD、PUT、DELETE、TRACE 和 OPTIONS。
- HttpServlet 针对这 7 种请求方式分别定义了 7 种方法,即 doGet()、doPost()、doHead()、doPut()、doDelete()、doTrace() 和 doOptions()。
栗子:
package com.servlet1;
import javax.servlet.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class servletBuild extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}



