ServletContext

1ServletContext概述

关于ServletContext 记住4句话:
服务器会为每个应用创建一个ServletContext对象
一个项目只有一个ServletContext对象
可以在N多个Servlet中来获取这个唯一的对象,使用它可以给多个Servlet之间传递数据
生命周期 与天地同寿!!!这个对象在Tomcat启动时就创建,在Tomcat关闭时才会死去!即

通常使用ServletContext对象可以在整个Web应用的动态资源之间共享数据!例如在AServlet中向ServletContext对象中保存一个值,然后在BServlet中就可以获取这个值,这就是共享数据了。

2获取ServletContext

获取servletcontext 常用的4方式
1、ServletConfig-getServletContext();
通过ServletConfig对象调用方法getServletContext()得到ServletContext对象
2、GenericServlet或者HttpServlet-getServletContext();
通过GenericServlet或者HttpServlet对象调用方法getServletContext()得到ServletContext对象
3、HttpSession-getServletContext()
4、ServletContextEvent-getServletContext()

前两种方式,其实 都是通过Tomcat在调用Servlet声明周期方法init(ServletConfig config)的时候 所传递的ServletConfig 对象来调用其实例方法 ServletContext getServletContext() 得到的!
在Servlet中获取ServletContext对象:
在void init(ServletConfig config)中:
ServletContext context = config.getServletContext();,
ServletConfig类的getServletContext()方法可以用来获取ServletContext对象;
在GenericeServlet或HttpServlet中获取ServletContext对象:
GenericServlet类 实现了接口ServletConfig ,
就实现了getServletContext()方法,通过源代码可以看到最终还是通过ServletConfig对象(Tomcat在调用Servlet声明周期方法init(ServletConfigconfig)的时候 所传递的ServletConfig 对象)来调用getServletContest()方法;
具体代码:

public class MyServlet implements Servlet {public void init(ServletConfig config) {
        ServletContext context = config.getServletContext();
    }}

public class MyServlet extends HttpServlet {
      public void doGet(HttpServletRequest request, HttpServletResponse response) {
          ServletContext context = this.getServletContext();//HttpServlet就是ServletConfig 的实类
          或者
          ServletContext context = this.getServletConfig().getServletContext()}
}

得到ServletContext对象之后怎么来使用呢?

3域对象的功能

ServletContext对象是JavaWeb四大域对象之一,
JavaWeb的四大域的类为:

PageContext;
ServletRequest;
HttpSession
ServletContext;
所有域对象都有存取数据的功能,因为域对象内部有一个Map,用来存储数据。这种通过封装Map来实现数据存储的api,也是java语言中常见的。

总结:
域对象就是用来在多个Servlet中传递数据!!
域对象必须有要存数据功能
域对象必须要有取数据功能
域对象内部其实有一个Map

下面是ServletContext对象用来操作数据的方法:
存:void setAttribute(Stringkey, Object value):
用来存储一个对象,也可以称之为存储一个域属性,例如:servletContext.setAttribute(“xxx”, “XXX”),在ServletContext中保存了一个域属性,域属性名称为xxx,域属性的值为XXX。
请注意,如果多次调用该方法,并且使用相同的name,那么会覆盖上一次的值,这一特性与Map相同

取:Object getAttribute(String key):
用来获取ServletContext中的数据,当前在获取之前需要先去存储才行,例如:
**String value = (String)servletContext.getAttribute(“xxx”); (这个方法的返回值类型为Object 所以需要强转),获取名为xxx的域属性。**其中参数那么类似于Map中的key值;

**void removeAttribute(String key):**用来移除ServletContext中参数name对应的域属性,类似于Map中的remove方法,删除一对(key, value)。如果参数name指定的域属性不存在,那么本方法什么都不做;
Enumeration getAttributeNames():获取所有域属性的名称;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值