获取项目物理路径

本文介绍了在JAVA后台代码中取得WEBROOT物理路径的两种有效方法:使用JSPServlet通过request.getContextPath()获取WEB根路径,以及利用request.getSession().getServletContext().getRealPath(/)获得相对路径。这两种方法使开发者能够轻松定位到项目的根目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用JAVA后台代码取得WEBROOT物理路径,可以有如下两种方式:
1、使用JSP Servlet取得WEB根路径可以用request.getContextPath(),相对路径request.getSession().getServletContext().getRealPath("/"),它们可以使用我们很容易取得根路径。

作者:qb170217
来源:优快云
原文:https://blog.youkuaiyun.com/qb170217/article/details/81742080

### 获取项目路径的方法 在 Thymeleaf 中,直接获取项目物理路径并不是常见的做法,因为模板引擎通常用于渲染 HTML 页面而不是处理文件系统操作。然而,在某些情况下确实需要访问服务器端的资源路径。 为了实现这一点,可以借助于 Spring 的 `ServletContext` 或者通过自定义属性传递给 Thymeleaf 模型对象来间接获得项目根目录的信息[^1]。 一种方法是在控制器中设置模型属性: ```java import javax.servlet.ServletContext; // ... @Controller public class PathController { private final ServletContext servletContext; @Autowired public PathController(ServletContext servletContext) { this.servletContext = servletContext; } @GetMapping("/showPath") public String showProjectPath(Model model) { String realPath = servletContext.getRealPath("/"); model.addAttribute("projectPath", realPath); return "pathTemplate"; } } ``` 接着可以在对应的 Thymeleaf 文件里使用 `${projectPath}` 来显示这个值: ```html <p>Project path is: <span th:text="${projectPath}"></span></p> ``` 另一种方式是利用 Java 配置类注入常量到全局范围内供所有视图共享: ```java @Configuration public class AppConfig implements WebMvcConfigurer { @Bean public static PropertySourcesPlaceholderConfigurer propertyConfigInDev() { return new PropertySourcesPlaceholderConfigurer(); } @Value("${catalina.base}") private String catalinaBase; @Override public void addViewControllers(ViewControllerRegistry registry) { Properties props = new Properties(); props.put("server.context-path", "/myapp"); props.put("real.path", catalinaBase); // or any other way you want to set it up StaticApplicationContext context = new StaticApplicationContext(); context.refresh(); ((StaticApplicationObjectSupport)context.getBean(PropertySourcesPlaceholderConfigurer.class)) .setProperties(props); super.addViewControllers(registry); } } ``` 之后就可以像之前那样在任意 Thymeleaf 页面内调用了。 需要注意的是,上述两种解决方案都是基于服务端环境变量或配置项来进行工作的;如果应用程序被打包成可执行 jar/war 并部署到了不同的环境中,则可能需要调整具体的实现逻辑以适应实际运行状况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值