一、什么是Servlet:
Java Servlet(服务端小应用程序)是一种基于 Java 的技术,用于处理来自 Web 客户端的 HTTP 请求,并生成相应的响应。Servlet 可以看作是服务器端的 Java 应用程序组件,它们扩展了 Web 服务器的功能,使其能够处理复杂的业务逻辑和动态内容生成。
二、环境搭配:
首先我们需要将servlet依赖复制粘贴到pom.xml文件里:
<!-- servletApi的依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
这样我们就能使用servlet接口。
三、写接口:
1、直接实现 Servlet
接口
直接实现 Servlet
接口是最基础的方式,需要实现 init
、service
、destroy
等方法。这种方式较为灵活,但同时也需要更多手动处理的代码。
import javax.servlet.*;
import java.io.IOException;
@WebServlet("/simple-servlet")
public class SimpleServlet implements Servlet {
@Override
//这个方法在 Servlet 被加载到内存中时调用,用于执行初始化任务。
public void init(ServletConfig config) throws ServletException {
// 初始化逻辑
}
@Override
//返回当前 Servlet 的配置对象。
public ServletConfig getServletConfig() {
return null;
}
@Override
//这个方法用于处理客户端的请求
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
// 处理请求
System.out.println("Received request");
((HttpServletResponse) res).sendRedirect("/response");
}
@Override
//返回关于 Servlet 的信息字符串
public String getServletInfo() {
return "SimpleServlet";
}
@Override
//当 Servlet 被卸载或容器关闭时调用。
public void destroy() {
// 销毁逻辑
}
}
2、继承 GenericServlet
类
GenericServlet
类实现了 Servlet
接口,并提供了一些默认实现。这种方式减少了需要自己实现的方法数量,但仍然需要实现 service
方法来处理请求。
import javax.servlet.*;
import javax.servlet.http.HttpServlet;
import java.io.IOException;
@WebServlet("/generic-servlet")
public class GenericServletExample extends GenericServlet {
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
// 处理请求
System.out.println("Received request");
((HttpServletResponse) res).sendRedirect("/response");
}
@Override
public void destroy() {
// 销毁逻辑
}
}
3、继承 HttpServlet
类
HttpServlet
类继承自 GenericServlet
类,为处理 HTTP 请求提供了便利。这是最常用的方式,因为它为 HTTP 请求提供了默认的 doGet
和 doPost
方法。只需要重写这些方法即可处理特定的 HTTP 请求。
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/http-servlet")
public class HttpExampleServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 处理 GET 请求
System.out.println("Received GET request");
resp.sendRedirect("/response");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 处理 POST 请求
System.out.println("Received POST request");
resp.sendRedirect("/response");
}
}
这三类方法可以处理Http的访问请求并处理