顾乔芝士网

持续更新的前后端开发技术栈

一分钟快速了解实现JavaServlet的三种方法

方法一:实现 Servlet 接口

这是最基础的方式,需要实现 Servlet 接口的所有方法。

import javax.servlet.*;
import java.io.IOException;

public class MyServlet implements Servlet {
    // 存储Servlet的配置信息
    private ServletConfig config;

    // 初始化Servlet,在Servlet生命周期中只执行一次
    public void init(ServletConfig config) throws ServletException {
        this.config = config;
        System.out.println("Servlet初始化完成");
    }

    // 获取Servlet的配置信息
    public ServletConfig getServletConfig() {
        return config;
    }

    // 处理客户端请求的核心方法
    public void service(ServletRequest req, ServletResponse res)
            throws ServletException, IOException {
        // 设置响应内容的类型
        res.setContentType("text/html");
        // 获取输出流,用于向客户端返回数据
        java.io.PrintWriter out = res.getWriter();
        out.println("<html>");
        out.println("<head><title>Hello World</title></head>");
        out.println("<body>");
        out.println("<h1>Hello World!</h1>");
        out.println("</body></html>");
    }

    // 返回Servlet的描述信息
    public String getServletInfo() {
        return "这是一个简单的Servlet示例";
    }

    // 销毁Servlet,释放资源
    public void destroy() {
        System.out.println("Servlet被销毁");
    }
}

特点:需要开发者自行实现 Servlet 生命周期管理,编码量较大。

方法二:继承 GenericServlet 类

这种方式简化了 Servlet 的实现,只需关注请求处理逻辑。

import javax.servlet.*;
import java.io.IOException;

public class MyServlet extends GenericServlet {
    // 处理客户端请求
    public void service(ServletRequest request, ServletResponse response)
            throws ServletException, IOException {
        // 设置响应内容类型和字符编码
        response.setContentType("text/html;charset=UTF-8");
        // 获取输出流
        java.io.PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>使用GenericServlet</title></head>");
        out.println("<body>");
        out.println("<h1>这是使用GenericServlet的示例</h1>");
        out.println("</body></html>");
    }
}

特点:GenericServlet 类实现了 Servlet 接口的大部分方法,开发者只需重写 service 方法。

方法三:继承 HttpServlet 类(最常用)

针对 HTTP 协议进行了优化,适合开发 Web 应用。

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;

public class MyServlet extends HttpServlet {
    // 处理HTTP的GET请求
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 设置响应内容类型
        response.setContentType("text/html");
        // 获取输出流
        java.io.PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>使用HttpServlet</title></head>");
        out.println("<body>");
        out.println("<h1>这是使用HttpServlet的示例</h1>");
        // 获取请求参数
        String name = request.getParameter("name");
        if (name != null) {
            out.println("<p>你好," + name + "!</p>");
        }
        out.println("</body></html>");
    }

    // 处理HTTP的POST请求
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 调用doGet方法处理POST请求,也可以单独实现
        doGet(request, response);
    }
}

特点:专门为 HTTP 协议设计,提供了 doGet、doPost 等方法处理不同类型的 HTTP 请求。

部署 Servlet

要让 Servlet 正常工作,还需要在 web.xml 文件中进行配置(以 MyHttpServlet 为例):

<servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>com.example.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/myServlet</url-pattern>
</servlet-mapping>


控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言