文章目录
提示:本次的学习目标是JavaWeb开发中的ServletContext对象的介绍与使用,属于重点内容。
前言
最近成都疫情又严重了,然而我家也不幸成为了重灾区,待在家里的感觉是真的不爽,但是学习的路上我却很快乐,一个人的世界想干嘛就干嘛。也希望这疫情能够早早退去,也希望大家能够坚持自己的梦想,矢志不移地走下去。后期我会再记录自己的学习的过程中也会开始着重对面试题进行一个记录。
以下是本篇文章正文内容,下面案例可供参考
一、引入ServletContext对象
1.1 什么是ServletContext对象
ServletContext对象首先我们需要知道的是它是一个全局对象,即其作用范围在整个项目中,每一个ServletContext对象都对应着一个Tomcat中的Web项目,每当我们使用Web服务器时,会为每一个Web应用程序创建一块共享的存储区域用于存放数据也就是我们要讲的ServletContext对象它就类似于一个大仓库我们需要什么数据就能去取数据而且这个大仓库是一个项目中处处可用的(我是说在服务器端)。当我们的Web服务器启动的时候就会进行创建,关闭服务器的时候就会进行销毁。
1.2 ServletContext对象的获取
在我们之前学的Servlet的时候我们曾经提到过发送GET与POST请求的时候需要继承HttpServlet类,然而对于HttpServlet类而言它其实也有一个父类叫作GenericServlet的类,而在这个类中提供了获取ServletContext的方法,如下所示。
- (推荐)方法一:通过在GenericServlet中提供的方法:getServletContext()方法获取 ServletContext对象,this.getServletContext();
- (推荐)方法二:使用我们的老朋友HttpServletRequest()来获取。里面也提供了getServletContex()方法。
- 方法三:HttpSession提供了getServletContext()方法。
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
ServletContext session = request.getSession();
HttpSession session =request.getSession();
ServletContext servletContext =session.getServletContext();
}
总结:虽然以上三种方法都可以获取一个ServletContext对象,但是为了以后的开发便捷度我们选择第一种和第二种方式来获取。
二、ServletContext作用
2.1 获取项目的真实路径
获取当前项目在服务器中发布的真实路径
String realpath=servletContext.getRealPath("/");
2.2 获取项目的上下文路径
获取当前项目上下文路径(应用程序名称)
System.out.println(servletContext.getContextPath());
System.out.println(request.getContextPath());
2.3 全局容器
在ServletContext拥有作用域,可以存储数据到全局容器中
- 存储数据:servletContext.setAttribute(“name”,value); 提示:和我们之前学习request与session存储方式一样。
- 获取数据:servletContext.getAttribute(“name”);
- 移除数据:servletContext.removeAttribute(“name”);
2.4 ServletContext特点
- 唯一性:一个应用对应一个servlet上下文(即ServletContext)
- 生命周期:当我们的项目或者是说容器应用不卸载不关闭情况下,servlet上下文(ServletContext)就一直存在。
2.5 作用域总结
- HttpServletRequest:一次请求,请求相应之前有效
- HttpSession:一次会话开始,浏览器不关闭或不超时之前有效。
- ServletContext: 服务器启动开始,服务器停止之前有效。
2.6 对比效率
当我们需要使用到的数据是临时数据的时候我们就使用,request进行数据的存储 当我们需要进行权限认证或是需要保持登录状态的时候我们就使用session进行数据存储 当我们需要使用计数器或者是说使用到全局数据的时候我们就使用ServletContext();
总结
以上就是今天要讲的内容,本文仅仅简单介绍了在JavaWeb开发中对ServletContext的使用以及相关的注意点。
|