当前位置: 首页 > 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

相关文章:

  • 【D2】神经网络初步学习
  • dfs深度优先搜索—邻接矩阵 + 邻接矩阵-递归版 + 邻接表
  • 基于Flask的茶叶销售数据可视化分析系统设计与实现
  • 一. vue2和vue3的Proxy底层源码详细拆解
  • Kepware的OPC UA配置深入介绍
  • C++ 中将类的定义和实现都放在头文件中的优缺点分析
  • 【20250215】二叉树:94.二叉树的中序遍历
  • 深入理解Elasticsearch集群与分片:原理及配置方案
  • 【硬件设计细节】缓冲驱动器使用注意事项
  • Springboot项目:使用MockMvc测试get和post接口(含单个和多个请求参数场景)
  • Git 本地项目上传 GitHub 全指南(SSH Token 两种上传方式详细讲解)
  • 代码随想录刷题攻略---动态规划---子序列问题1---子序列
  • 计算机视觉+Numpy和OpenCV入门
  • Plaid | 数据库切换历程:从 AWS Aurora MySQL 到 TiDB 的迁移之旅
  • ⚡️《静电刺客的猎杀手册:芯片世界里的“千伏惊魂“》⚡️
  • LeetCodehot 力扣热题100 从前序与中序遍历序列构造二叉树
  • 尚硅谷课程【笔记】——大数据之Hadoop【一】
  • Codeforces Round 1004 (Div. 2)(A-E)
  • HTML、Vue和PHP文件的区别与联系
  • mybatis-lombok工具包介绍
  • 第12届警博会在即:一批便民利企装备亮相,规模创历史新高
  • 这些网红果蔬正在收割你的钱包,营养师:吃了个寂寞
  • 十三届全国政协经济委员会副主任张效廉被决定逮捕
  • A股三大股指集体高开
  • 高龄老人骨折后,生死可能就在家属一念之间
  • 被取消总统候选人资格,金文洙:将采取政治法律措施讨回公道