什么是Servlet?
Servelt定义:
servlet是一种应用于服务器端的Java程序,可以生成动态的web页面。
servlet运行在服务器端,是由web服务器负责加载的,是独立于平台和协议的
Java应用程序。
3.1 Servlet**的意义和生命周期**
Servlet其实并不是很复杂的东西,事实上,servlet就是一个java接口,定义了处理网络请求的规范。所有实现servlet的类,都需要实现它那五个方法,其中最主要的是三个生命周期方法 init()和destroy()service(),所有实现
servlet接口的类都需要回答这三个问题:
•你销毁时要做什么
•你接受到请求时要做什么
package javax.servlet;
import java.io.IOException;
public interface Servlet {
void init(ServletConfig var1) throws ServletException;
ServletConfig getServletConfig();
void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
String getServletInfo();
void destroy();
}
Servlet接口源码如下:
一共有三个生命周期方法,init(),service(),destroy()
init()方法:在servlet被创建时调用
service()方法:servlet接收到前端发送过来的HTTP请求时调用
destory()方法:servlet销毁时被调用
3.2 Servlet**生命周期详解**
当我们第一次接触Servlet和WEB服务器时,我们一定会有这个疑问:为什
么我们都不用使用new关键字来实例化Servlet就能够使用了呢?
这是因为,在我们第一次访问到servlet的时候,servlet容器会根据
web.xml文件里注册的servlet信息,为我们创建一个servlet实例,调用
servlet的init方法,这个实例会常驻内存,当我们每次访问servlet配置的
mapping地址时,就会调用该实例的service方法来处理请求,当web服务
器关闭时,会调用servlet的destroy方法来销毁servlet实例。
}3.3 创建**Servlet的三种方法:**
\1. 实现servlet接口,重写接口中的init(),service(),destroy()等方法
\2. 继承GenericServlet,重写父类中的service()方法
\3. 继承HttpServlet,重写父类中的doGet()和doPost()方法
GenericServlet是一个抽象类,实现了servlet接口
HttpServlet是一个普通类,继承自GenericServlet
为什么会有三种方式?
因为Servlet技术是不断发展的,先有Servlet,再有GenericServlet,最后
才有的HttpServlet。HttpServlet封装了更多的内容,实现了更强大的功
能,所以在接下来的学习中我们都使用HttpServlet来实现。
3.4 Servlet**技术总结**
其实Servlet本身在Web容器中是“非常被动”的一个角色,处理的事情也很
简单。网络请求与响应,不是他的主要职责,它其实更偏向于业务代码。
所谓的Request和Response是Web容器来进行处理,servlet并不会参与处
理Request和Response的过程。*
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?