当前位置: 首页 > news >正文

servlet中的ServletContext

设置、获取ServletContext配置信息

与ServletConfig不同的是,所有Servlet共享一份ServletContext

  1. 在web.xml中设置配置信息

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd"version="6.0"><context-param><param-name>key1</param-name><param-value>a</param-value></context-param><context-param><param-name>key2</param-name><param-value>b</param-value></context-param>
    </web-app>
    
  2. 在service方法中读取

    public class ServletTest extends HttpServlet {public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext servletContext = this.getServletContext();// 获取指定的配置信息String value = servletContext.getInitParameter("key2");System.out.println(value);// 批量获取配置信息Enumeration<String> initParameterNames = servletContext.getInitParameterNames();while(initParameterNames.hasMoreElements()) {String key = initParameterNames.nextElement();System.out.println(key + "=" + servletContext.getInitParameter(key));}}
    } 
    

通过ServletContext获取项目实际部署的根路径:getRealPath()

ServletContext servletContext = this.getServletContext();
// 获取项目实际部署的根路径(绝对路径)
String rootPath = servletContext.getRealPath(""); // D:\workspace\javawebproject\out\artifacts\demo1_war_exploded\
// 获取项目实际部署的根目录下的static路径(绝对路径)
String staticPath = servletContext.getRealPath("static"); // D:\workspace\javawebproject\out\artifacts\demo1_war_exploded\static

通过ServletContext获取项目的访问路径:getContextPath()

ServletContext servletContext = this.getServletContext();
// 获取项目的访问路径
String accessPath = servletContext.getContextPath(); // /demo1

域对象

ServletContext是应用域,作用于整个应用,所有Servlet都可访问到,可用于存储和传递数据,实现各个Servlet之间的通信

在servlet1中存储数据,供Servlet2获取

// Servlet1
public class Servlet1 extends HttpServlet {public void service(HttpServletRequest req, HttpServletResponse resp) {// 在servlet1中存储数据,供Servlet2获取ServletContext servletContext = this.getServletContext();servletContext.setAttribute("aaa", 123);}
}
// Servlet2
public class Servlet2 extends HttpServlet {public void service(HttpServletRequest req, HttpServletResponse resp) {// 供Servlet2中获取ServletContext servletContext = this.getServletContext();String value = (String) servletContext.getAttribute("aaa");System.out.println(value);// 移除数据servletContext.removeAttribute("aaa");}
}
http://www.lryc.cn/news/537639.html

相关文章:

  • 第1825天 | 我的创作纪念日:缘起、成长经历、大方向
  • 如何在 Mac 上解决 Qt Creator 安装后应用程序无法找到的问题
  • Java 设计模式之迭代器模式
  • 登录演示和功能拆解
  • DeepSeek深度求索API多线程批量写原创文章软件-ai痕迹极低
  • Redis进阶使用
  • Python常见面试题的详解6
  • Linux基础之文件权限的八进制表示法
  • 数据结构与算法面试专题——堆排序
  • 《On Java进阶卷》阅读笔记(五)
  • 《代码随想录》刷题笔记——回溯篇【java实现】
  • 数值积分:通过复合梯形法计算
  • AcWing——3624. 三值字符串
  • 【JavaEE进阶】验证码案例
  • Uniapp 短视频去水印解析工具开发实现
  • 计算机网络-八股-学习摘要
  • 编程速递-庆祝Delphi诞生30周年!
  • 每天五分钟深度学习框架pytorch:搭建谷歌的Inception网络模块
  • 性能测试流程、主流性能工具
  • DeepSeek4j 已开源,支持思维链,自定义参数,Spring Boot Starter 轻松集成,快速入门!建议收藏
  • 无耳科技 Solon v3.0.8 发布,Java 企业级应用开发框架
  • 【吾爱出品】针对红警之类老游戏适用WIN10和11的补丁cnc-ddraw7.1汉化版
  • 使用 playwright 自定义 js 下载的路径和文件名
  • Kafka分区管理大师指南:扩容、均衡、迁移与限流全解析
  • 3.从零开始学会Vue--{{生命周期,工程化,组件化}}
  • Python--网络编程
  • 【java】方法的基本内存原理(栈和堆)
  • SQLMesh 系列教程4- 详解模型特点及模型类型
  • SpringBoot(接受参数相关注解)
  • hbase合并队列超长问题分析