JavaWEB-(十五)Servlet的创建方式

本文最后更新于:December 3, 2021 pm

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

目录

1.Servlet核心接口和类

在Servlet体系结构中,除了实现Servlet接口,还可以通过继承GenericServlet或HttpServlet类。

1.1 Servlet接口

在Servlet API 中最重要的是 Servlet 接口,所有Servlet都会直接或间接的与该接口发生联想,或是直接实现该接口,或间接继承实现了该接口的类。

该接口包括五个方法:

  • public void init(ServletConfig servletConfig)
  • public ServletConfig getServletConfig()
  • public void service(ServletRequest servletRequest, ServletResponse servletResponse)
  • public String getServletInfo()
  • public void destroy()

1.2 GenericServlet抽象类

GenericServlet 使编写 Servlet 变得更容易。它提供生命周期方法 init 和 destroy 的简单实现,要编写一般的Servlet,只需要重写抽象 service 方法即可。

1.3 HttpServlet类

HttpServlet 是继承 GenericServlet 的基础上进一步的扩展。
提供将要被子类化以创建适用于Web站点的 HttpServlet的抽象类。HttpServlet的子类至少必须重写一个方法,该方法通常是以下这些方法之一:

  • doGet:如果 servlet 支持 Http Get 请求。
  • doPost:用于 Http Post 请求。
  • doPut:用于 Http Put 请求。
  • doDelete:用于Http Delete 请求。

2.Servlet的创建方式

2.1 实现接口Servlet

基础版。需要基础接口中的所有方法。详见上一博文中。

2.2 继承HttpServlet(推荐)

可以根据不同的请求方式来做不同的处理结果。也是开发中推荐使用的。
如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.tothefor.MyWeb;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp); //这是调用的父类的doGet();
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp); //这是调用的父类的doPost();
}
}

我们可以根据需求自行更改。只需要删除调用父类的方法,再写上自己的代码即可。如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package com.tothefor.MyWeb;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class HelloServlet 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");
}
}