Servlet
一、Servlet介绍
Servlet是一种基于Java的服务器端技术,用于构建Web应用程序。Servlet可以动态生成Web页面、处理表单数据、响应HTTP请求等。Servlet程序运行在Web服务器中,例如Tomcat、Jetty或WebLogic,它们充当客户端和应用程序之间的中间层。
工作原理
Servlet工作原理基于Java的面向对象和事件驱动模型。当客户端发送HTTP请求时,Web服务器根据URL选择合适的Servlet来处理请求。Servlet容器负责管理Servlet的生命周期,并将请求和响应传递给Servlet来生成动态内容。
二、执行流程
- 客户端发送HTTP请求。
- Web服务器接收请求并解析URL。
- 根据URL选择相应的Servlet。
- Servlet容器加载Servlet类并创建Servlet实例。
- 调用Servlet的方法来处理请求,通常是doGet()或doPost()。
- Servlet生成HTML响应。
- 响应返回给Web服务器,然后发送给客户端。
三、Servlet生命周期
Servlet运行在Servlet容器(web服务器)中,其生命周期由容器来管理,分为4个阶段:
- 加载和实例化:默认情况下,当Servlet第一次被访问时,由容器创建Servlet对象
- 初始化:在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象,完成一些如加载配置文件、创建连接等初始化的工作。该方法只调用一次
- 请求处理:每次请求Servlet时,Servlet容器都会调用Servlet的service()方法对请求进行处理。
- 服务终止:当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法完成资源的释放。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收
四、Servlet方法介绍
常见的Servlet方法包括:
- 初始化方法,在Servlet被创建时执行,只执行一次
void init(ServletConfig config)
- 提供服务方法, 每次Servlet被访问,都会调用该方法
void service(ServletRequest req, ServletResponse res)
- 销毁方法,当Servlet被销毁时,调用该方法。在内存释放或服务器关闭时销毁Servlet
void destroy()
- 获取ServletConfig对象
ServletConfig getServletConfig()
- 获取Servlet信息
String getServletInfo()
五、Servlet体系结构
开发B/S架构的web项目,都是针对HTTP协议,所以我们自定义Servlet,会继承HttpServlet
HttpServlet 原理
HTTP 协议中,GET 和 POST
请求方式的数据格式不一样,将来要想在Servlet中处理请求参数,得在service方法中判断请求方式,并且根据请求方式的不同,分别进行处理:
六、使用注解配置Servlet
Servlet注解是一种基于Java注解的方式,用于配置Servlet,而不是依赖于web.xml文件。这种方式可以使Servlet配置更加简洁,易于维护
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(name = "MyServlet", urlPatterns = "/myservlet")
public class MyServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
response.getWriter().write("Hello, Servlet World!");
}
}
在上面的示例中,我们使用了@WebServlet注解来配置Servlet。我们指定了Servlet的名称为"MyServlet",以及它要映射的URL路径为"/myservlet"。
七、XML 配置方式编写 Servlet
Servlet 从3.0版本后开始支持使用注解配置,3.0版本前只支持 XML 配置文件的配置方式 步骤:
- 编写 Servlet类
- 在 web.xml中配置该Servlet
<web-app>
<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>
</web-app>
在上述示例中,我们将名为"MyServlet"的Servlet映射到"/myservlet" URL路径。