【servlet】servlet 笔记

本文详细解析Servlet的基本概念,包括Servlet的生命周期及其关键方法,如init()、service()和destroy()。同时,介绍了如何在web.xml中配置Servlet,并讨论了Servlet的虚拟路径规则。此外,文章还阐述了Servlet的初始化顺序、请求与响应处理流程,以及如何通过覆盖init()和service()方法实现特定功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、什么是Servlet?

* 服务器端Java程序,servlet需要交给服务器来运行。

* 与javax.servlet.Servlet接口有关的java程序

2、使用servlet

<url-pattern>标签:确定浏览器访问的路径
* 内容:自定义
* 要求 : 必须“/”开头,名称唯一

3、为什么这样使用?

*  javax.servlet.Servlet的生命周期:
  3.1* init(ServletConfig)
* servlet的初始化方法,执行次数:1次
* javax.servlet.ServletConfig对当前servlet的配置信息的描述
* getServletName():返回当前servlet的名称:<servlet><servlet-name>配置
* getInitParameter("paramName"):返回指定初始化参数名称的值
* getInitParameterNames():返回当前servlet的所有的初始化参数的名称
* 返回值:java.util.Enumeration  --> hasMoreElements(),nextElement()
* getServletContext():ServletConfig保存了当前web项目的 ServletContext的引用[暂记]
3.2* service(ServletRequest,ServletResponse)
* 当前servlet请求与响应时调用的方法
* ServletRequest:存放所有用户的请求信息
* ServletResponse:存放服务器响应给用户的所有的信息
* 总结
* request
* 接口:javax.servlet.ServletRequest
* 实现类:org.apache.catalina.connector.RequestFacade
* 关系:
* public class RequestFacade implements HttpServletRequest {
* public interface HttpServletRequest extends ServletRequest {
* 总结: RequestFacade --> HttpServletRequest  --> ServletRequest
* 结果:javax.servlet.http.HttpServletRequest request = (HttpServletRequest) req;
* response
* 接口:javax.servlet.ServletResponse
* 实现类:org.apache.catalina.connector.ResponseFacade
* 关系:
* public class ResponseFacade implements HttpServletResponse {
* public interface HttpServletResponse extends ServletResponse {
* 总结: ResponseFacade --> HttpServletResponse  --> ServletResponse
* 结果:javax.servlet.http.HttpServletResponse response = (HttpServletResponse) resp;
3.3 * destroy()

* 当前servlet的销毁方法,回收资源


* javax.servlet.GenericServlet类【看】  this,super
* 通用servlet实现类,与协议无关
* 此类是抽象类,具有抽象方法service(ServletRequest,ServletResponse)
* public abstract void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;
* 此类实现Servlet接口,此类也实现了ServletConfig接口
* public abstract class GenericServlet implements Servlet, ServletConfig
* 此类缓存了init方法的实际参数的值。(ServletConfig的实例对象给缓存了)
* public void init(ServletConfig config) throws ServletException {
this.config = config;
this.init();
 }
* 此类中在一个没有参数init方法,所有的servlet初始化工作,建议覆盖此方法。
* 否则,覆盖带有参数的init方法,需要在方法的第一行添加super.init(config);
* public void init(ServletConfig config) throws ServletException {
super.init(config); //此行代码必须存在
//之后是自己的内容
}
* javax.servlet.http.HttpServlet类
* 此类是抽象类,但是不存在抽象方法。
* 抽象类的原因,需要子类进行HttpServlet类方法的覆盖
* 没有抽象方法的原因:当子类覆盖父类的相应的方式时,没有强制要求
* 此类是与协议(http)有关的servlet的实现类
* request = (HttpServletRequest) req;
              response = (HttpServletResponse) res;
* request.getMethod()方法,返回当前servlet的请求方法,方便与处理不同的请求

* 总结:【**】
* 创建一个类,继承HttpServlet类
* 根据需求,覆盖doPost和doGet方法
* 需要再web.xml中进行配置
* 测试
* 注意:
* 如果需要初始化工作:覆盖init()方法
* 如果初始化工作需要耗费大量时间,需要设置servlet的在服务器启动时进行初始化工作。
* <servlet><load-on-startup>2</load-on-startup>
* 配置当前servlet在服务器启动时加载顺序,取值:0-6 ,值越小,优先加载


4、servlet的虚拟路径

1、只能使用 / 或 * 开头
2、/ 和 *. 不能同时存在
3、/ 或 /* 表示任意
4、只有*.才表示通配符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值