认识ServletContext

怎么理解ServletConetext

  1. ServletConext:Servlet对象的环境对象(Servlet对象的上下文对象)。
  2. ServletConetxt对象对应的就是整个web.xml文件。
  3. 放在ServletContext对象当中的数据,所有Servlet对象共享。
  4. Tomcat是一个容器,里面有很多webapp,一个webapp对应一个ServletConetxt对象。

ServletContext是什么

  1. ServletContext是Servlet规范中的一员,是一个接口。
  2. ServletContext对象还有另一个名字:应用域(后面还有其他域,例如请求域,会话域)
    (1)如果所有的用户共享一份数据,并且这份数据很少的被修改,而且数据量很少,那么可以将这些数据放到ServletContext应用域中
    (2)数据量如果太大的话太占用内存,并且这个对象的声明周期较长,服务器关闭的时候,这个对象才会被销毁。
    (3)所有用户共享的数据,如果修改必然会带来线程并发所带来的的安全问题。所以ServletContext对象中的数据一般都是只读的
    (4)应用域相当于一个缓存,放到缓存中的数据,下次再用不需从数据库中获取,大大提升效率。

ServletConetext是谁实现的

  1. ServletContext是Tomcat服务器实现的。
  2. public class org.apache.catalina.core.ApplicationContextFacade。
  3. 对于一个webapp来说ServletContext只有一个。

ServletConetxt对象的生命周期

ServletConetxt在WEB服务器启动的时候创建,由WEB服务器创建。
ServletConetxt对象在服务器关闭的时候销毁。

ServletContext接口中有哪些常用的方法

public String getinitParameter();  // 通过初始化name获取value
public Enumeration<String> getInitParameterNames(); // 获取所哟初始化参数的name
public String getContextPath(); // 获取应用的根路径
public String getRealPath(String s); // 获取文件的绝对路径(真实路径)
public void log(String message); // 记录日志
public void log(String message,Throwable t); // 记录日志,利用idea工具这些信息都记录到了C:\Users\小函数\AppData\Local\JetBrains\IntelliJIdea2022.2\tomcat\846f9e49-e351-443c-b17f-2f89e17b972f

// 向ServletContext应用域中存数据
public void serAttribute(String name,Object value);
// 从ServletContext应用域中取数据
public Object getAttribute(String name);
// 从ServletContext应用域中删数据
public void removeAttribute(String name);

注意

以后编写Servlet类的时候,不会去直接继承GenericServlet类,因为我们是B/S结构,这种系统是基于超文本传输协议的,在Servlet规范中,
提供了一个类,叫做HttpServlet,它是专门为HTTP协议准备的一个类。我们编写的Servlet类要继承HttpServlet。使用HttpServlet处理HTTP协议更方便。
继承结构:
jakarta.servlet.Servlet 【爷爷】
jakarta.servlet.GenericServlet implements Servlet【父亲】
jakarta.servlet.HttpServlet extends GenericServlet【儿子】
我们以后编写的Servlet要继承HttpServlet。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值