一般在实际项目开发中,都是使用继承 HttpServlet 类的方式去实现 Servlet 程序。
- 1、编写一个类去继承 HttpServlet 类
- 2、根据业务需要重写 doGet 或 doPost 方法
- 3、到 web.xml 中的配置 Servlet 程序的访问地址
1.HttpServlet抽象类
HttpServlet 也是一个抽象类,它进一步继承并封装了 GenericServlet,使得使用更加简单方便,由于是扩展了 Http 的内容,所以还需要使用 HttpServletRequest 和 HttpServletResponse,这两个类分别是 ServletRequest 和 ServletResponse 的子类。代码如下:
abstract class HttpServlet extends GenericServlet{
//HttpServlet中的service()
protected void service(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse){
//该方法通过httpServletRequest.getMethod()判断请求类型调用doGet() doPost()
}
//必须实现父类的service()方法
public void service(ServletRequest servletRequest,ServletResponse servletResponse){
HttpServletRequest request;
HttpServletResponse response;
try{
request=(HttpServletRequest)servletRequest;
response=(HttpServletResponse)servletResponse;
}catch(ClassCastException){
throw new ServletException("non-http request or response");
}
//调用service()方法
this.service(request,response);
}
}
我们可以看到,HttpServlet 中对原始的 Servlet 中的方法都进行了默认的操作,不需要显式的销毁初始化以及 service(),在 HttpServlet 中,自定义了一个新的 service() 方法,其中通过 getMethod() 方法判断请求的类型,从而调用 doGet() 或者 doPost() 处理 get,post 请求,使用者只需要继承 HttpServlet,然后重写 doPost() 或者 doGet() 方法处理请求即可。
我们一般都使用继承 HttpServlet 的方式来定义一个 servlet。
2.继承 HttpServlet 方法
public class ServletDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("doGet 方法");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("doPost 方法");
doGet(req,resp);
}
}
3.web.xml 中的配置
<!-- servlet 标签给 Tomcat 配置 Servlet 程序 -->
<servlet>
<!--servlet-name 标签 Servlet 程序起一个别名(一般是类名) -->
<servlet-name>ServletDemo</servlet-name>
<!--servlet-class 是 Servlet 程序的全类名-->
<servlet-class>com.xyh.servlet.ServletDemo</servlet-class>
</servlet>
<!--servlet-mapping 标签给 servlet 程序配置访问地址-->
<servlet-mapping>
<!--servlet-name 标签的作用是告诉服务器,
当前配置的地址给哪个 Servlet 程序使用-->
<servlet-name>ServletDemo</servlet-name>
<!--url-pattern 标签配置访问地址
/ 斜杠在服务器解析的时候,表示地址为:http://ip:port/工程路径
/hello 表示地址为:http://ip:port/工程路径/hello -->
<url-pattern>/hello</url-pattern>
</servlet-mapping>