Servlet其他关联类---ServletContext类

1.ServletContext介绍

<1>域对象

  • 域对象指的是对象有作用域。也就是有作用范围。域对象可以实现数据的共享。不同作用范围的域对象,共享数据的能力也不一样。
  • 在Servlet规范中,一共有4个域对象。ServletContext就是其中的一个。它也是web应用中最大的作用域,也叫application域。它可以实现整个应用之间的数据共享!
    <2>ServletContext是应用上下文对象(应用域对象);
  • 每一个应用中只有一个ServletContext对象;
  • 作用:可以配置和获得应用的全局初始化参数;
  • 可以实现Servlet之间的数据共享;
  • 生命周期:应用一加载则创建,应用被停止则销毁。
2.配置和获取全局参数

【每一个应用只有一个ServletContext对象,故定义在Service标签外】
<1>配置全局参数

<!--配置全局编码-->
<context-param><param-name>globalEncoding</param-name><param-value>utf-8</param-value>
</context-param><!--配置全局描述信息-->
<context-param><param-name>globalDesc</param-name><param-value>我是ServletContext的描述信息</param-value>
</context-param>

<2>获取全局参数

public class ServletContextDemo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取ServletContext对象ServletContext context = this.getServletContext();//获取全局配置参数:getInitParameter(String key)根据key获取valueEnumeration<String> ParameterNames = context.getInitParameterNames();while (ParameterNames.hasMoreElements()) {String name = ParameterNames.nextElement();String value = context.getInitParameter(name);System.out.println(name + "..." + value);}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}打印结果:
-------------------------------------------------------------------
globalEncoding...utf-8
globalDesc...我是ServletContext的描述信息
3.设置共享数据和获取真实路径

【每一个应用只有一个ServletContext对象,故在每个Service标签内可以共享和删除数据】

public class ServletContextDemo1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取ServletContext对象ServletContext context = this.getServletContext();//1.设置共享数据context.setAttribute("username","zhangsan");context.setAttribute("password","123456");System.out.println("Servlet1已存储到数据");//删除共享数据/*context.removeAttribute("username");System.out.println("Servlet1已删除数据");*//*String charset = context.getInitParameter("charset");System.out.println(charset);*///2.//获取应用的虚拟目录: getContextPath()String contextPath = context.getContextPath();System.out.println(contextPath);//3.根据虚拟目录获取绝对路径: getRealPath(String path)//用户通过浏览器访问的是服务器上的路径//获得虚拟目录的绝对路径(服务器中的路径)String servletRealpath = context.getRealPath("/");System.out.println(servletRealpath);//获取web/a.txt的绝对路径String webPath = context.getRealPath("/a.txt");System.out.println(webPath);//获取WEB-INF的绝对路径String webInPath = context.getRealPath("WEB-INF/a.txt");System.out.println(webInPath);//获取src/a.txt的绝对路径String srcPath = context.getRealPath("WEB-INF/classes/a.txt");System.out.println(srcPath);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);}
}打印结果:
-----------------------------------------------------------------
Servlet1已存储到数据
/day03_ServletContextDemo_war_exploded
D:\javaWeb-project\out\artifacts\day03_ServletContextDemo_war_exploded\
D:\javaWeb-project\out\artifacts\day03_ServletContextDemo_war_exploded\a.txt
D:\javaWeb-project\out\artifacts\day03_ServletContextDemo_war_exploded\WEB-INF\a.txt
D:\javaWeb-project\out\artifacts\day03_ServletContextDemo_war_exploded\WEB-INF\classes\a.txt
26-Jul-2021 21:50:03.584 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [D:\apache-tomcat-9.0.5\apache-tomcat-9.0.50\webapps\manager]
26-Jul-2021 21:50:03.617 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[D:\apache-tomcat-9.0.5\apache-tomcat-9.0.50\webapps\manager]的部署已在[33]毫秒内完成
Servlet2已获取到数据
zhangsan...123456

注:
<1>打印情况为浏览器先访问ServletContextDemo1再访问ServletContextDemo2;如果先访问ServletContextDemo2则获取的数据为null…null
<2>移除共享数据时,移除对应的字符,不会影响其他的值,如移除’zhangsan‘,ServletContextDemo2获取的打印结果为null…123456

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330767.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式Session共享解决方案

转载自 分布式Session共享解决方案 Session是服务器用来保存用户操作的一系列会话信息&#xff0c;由Web容器进行管理。单机情况下&#xff0c;不存在Session共享的情况&#xff0c;分布式情况下&#xff0c;如果不进行Session共享会出现请求落到不同机器要重复登录的情况&…

thinking-in-java(20)注解

【1】注解介绍 1&#xff09;注解是什么&#xff1f; 注解&#xff08;元数据&#xff09;是 java提供的一种对程序元素&#xff08;如类&#xff0c;方法&#xff0c;变量&#xff09;打标记的方法&#xff1b;以便运行程序或编译器可以识别这些元素进行特殊处理&#xff1b…

Servlet---注解开发

1.引入 在Servlet3.0以后的版本提供了Servlet注解配置&#xff0c;大大简化了代码编写。它可以替代xml文件的配置 2.代码实现 <1>注解开发代码如下&#xff1a; WebServlet(value "/servlet1", initParams {WebInitParam(name "charset", val…

Git操作常用的命令都在这里了

转载自 Git操作常用的命令都在这里了 创建仓库 git init 在当前目录执行&#xff0c;会生成 .git目录文件&#xff0c;这个和SVN一致。 提交到仓库 git commit -m "first commit" -m&#xff1a;表示提交描述&#xff0c;必须要填。 添加到远端仓库 git remote …

DevExperience(1801)

【1】 关于路径和文件名命名规范&#xff1a;1&#xff09;window 操作系统 的路径名和文件名是不区分大小写的&#xff0c;Linux等其他操作系统都区分大小写的&#xff1b;2&#xff09;某些部署在 Linux系统的项目&#xff0c;其路径名和文件名建议均用小写&#xff1b;不然一…

web项目的创建和发布

1.Web项目的目录结构 2.Web项目的创建 <1>首先创建一个空的java项目 <2>选择模块,创建一个新模块 <3>选择javaq企业开发块,先勾选javaEE版本再勾选下方的Web Application才会出现对应的版本 <4>一路next之后给模块取名点击finish,再点击Apply后ok则…

telnet实现本地回显

下面以访问 localhost:8080 站点为荔枝说明如何设置 telnet的回显&#xff1b;1&#xff09;操作系统命令行输入 telnet localhost 8080 回车&#xff1b;2&#xff09;同时键入 ctrl 和 ] 键&#xff0c;进入 telnet 命令行&#xff1b;3&#xff09;记不住 telnet 命令的童鞋…

DevOps到底是什么鬼?DevOps介绍及工具推荐

转载自 DevOps到底是什么鬼&#xff1f;DevOps介绍及工具推荐 什么是DevOps DevOps是Development和Operations的组合&#xff0c;是一组过程、方法与系统的统称&#xff0c;用于促进开发&#xff08;应用程序/软件工程&#xff09;、技术运营和质量保障&#xff08;QA&#xf…

请求对象Request

1.概念 <1>请求&#xff1a;请求:获取资源。在BS架构中&#xff0c;就是客户端浏览器向服务器端发出询问。 <2>请求对象&#xff1a;就是在项目当中用于发送请求的对象。 <3>对象创建&#xff1a;需要实现ServletRequest和HttpservletRequest接口&#xff0…

Oracle-26-内连接(等值、不等值连接、自然连接)外连接(左外、右外、全连接)using子句

转自&#xff1a; http://blog.csdn.net/wy_0928/article/details/51155498 【总结】连接分类 【0】什么是数据库连接&#xff1f; 1&#xff09;当一次查询涉及到两个表时&#xff1a;就要使用连接查询了&#xff0c;其中join如果不带有其他标识&#xff0c;则默认是内连接 …

百度分布式配置管理平台-Disconf

转载自 【推荐】百度分布式配置管理平台-DisconfDisconf介绍 全称&#xff1a;Distributed Configuration Management Platform&#xff0c;即分布式配置管理平台。 Disconf专注于各种分布式系统配置管理的通用组件和通用平台, 提供统一的配置管理服务。主要目标&#xff1a; 部…

运算符优先级的问题

注意&#xff1a;逻辑非>逻辑与>逻辑或

数据库表连接总结:等值连接, 自然连接,左外连接,右外连接,内连接,全外连接;

【1】等值连接1&#xff09;连接&#xff1a;凡是查询涉及到两个以上的表&#xff0c;就需要将表连接&#xff1b;2&#xff09;就是用where子句做的连接查询&#xff1b;连接查询的列名可以不同&#xff1b;【2】自然连接&#xff1a;select * from a_tbl natual join b_tbl这…

网站性能测试指标(QPS,TPS,吞吐量,响应时间)详解

转载自 网站性能测试指标&#xff08;QPS&#xff0c;TPS&#xff0c;吞吐量&#xff0c;响应时间&#xff09;详解常用的网站性能测试指标有&#xff1a;吞吐量、并发数、响应时间、性能计数器等。 并发数 并发数是指系统同时能处理的请求数量&#xff0c;这个也是反应了系统的…

Request获取参数封装方式

浏览器请求界面 1.获取参数手动封装数据 WebServlet("/ServletDemo4") public class ServletDemo4 extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//根据参数名获取…

Access restriction: The type 'BASE64Encoder' is not API 的解决方法

转自&#xff1a; https://www.mkyong.com/java/access-restriction-the-type-base64encoder-is-not-accessible-due-to-restriction/ If you insist want to use sun.misc.BASE64Encoder, in Eclipse, right click on the project, properties -> Java compiler –> Err…

Mycat - 数据库分库分表中间件,国内最活跃的、性能最好的开源数据库中间件

转载自 Mycat - 数据库分库分表中间件&#xff0c;国内最活跃的、性能最好的开源数据库中间件Mycat是什么 Mycat - 数据库分库分表中间件&#xff0c;国内最活跃的、性能最好的开源数据库中间件&#xff01; 一个彻底开源的&#xff0c;面向企业应用开发的大数据库集群支持事务…

响应对象Response

1.概念【响应给浏览器】 响应∶回馈结果。在B/S架构中&#xff0c;就是服务器给客户端浏览器反馈结果。响应对象∶就是在项目中用于发送响应的对象。实现接口&#xff1a;ServletResponse和HttpServletResponse【浏览器访问服务器后&#xff0c;服务器给客户端响应的数据会封装…

调用toString()方法的注意事项

【1】荔枝&#xff1a;Object转为 String&#xff1b; response.setContentType("text/html;charsetUTF-8"); PrintWriter out response.getWriter();request.setCharacterEncoding("UTF-8"); HttpSession session request.getSession(); //设置session超…

Java内存泄漏介绍

转载自 Java内存泄漏介绍内存管理是Java最重要的优势之一&#xff0c;你只需创建对象&#xff0c;Java垃圾收集器会自动负责分配和释放内存。但是&#xff0c;情况并不那么简单&#xff0c;因为在Java应用程序中经常发生内存泄漏。本章会说明什么是内存泄漏&#xff0c;为什么发…