讲师中心 微信公众号
AI工具推荐 视频效率加速

如何在 Tomcat 中正确部署并下载静态 PDF 文件

大枫酱_4831

大枫酱_4831

发布时间:2026-01-21 15:32:10

|

206人浏览过

|

来源于php中文网

原创

如何在 Tomcat 中正确部署并下载静态 PDF 文件

tomcat 无法下载 pdf 文件(显示“failed - no file”)通常是因为文件未放在 web 应用的可访问路径下;正确做法是将 `brochure.pdf` 放入 `webapps/root/` 目录(与 jsp 页面同级),并通过相对路径 `/brochure.pdf` 引用。

在 Tomcat 中,只有部署在 Web 应用根目录(如 webapps/ROOT/)及其子目录下的资源,才能被客户端直接访问和下载。WEB-INF/ 及其上级目录(如 ../ 或 ../../)属于受保护区域,所有内容均被 Tomcat 显式禁止外部访问——这是安全设计,不是路径错误,而是强制限制。

你当前的路径逻辑存在两个关键问题:

  • ❌ <a href="${pageContext.request.contextPath}/brochure.pdf" download> 尝试从上下文根(如 /myapp)下查找 brochure.pdf,但实际文件却放在 webapps/brochure.pdf(即 Tomcat 安装目录根下),该路径完全不在任何 Web 应用的资源范围内,Tomcat 不会服务它;
  • ❌ ROOT/WEB-INF/../../contactUs.jsp 这种写法试图跨出 Web 应用边界定位 JSP,不仅违背 Tomcat 部署规范,且 contactUs.jsp 若真在此位置,根本无法被容器编译执行。

✅ 正确做法如下:

dmap-jsapi-skill
dmap-jsapi-skill

DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。

下载
  1. 将 brochure.pdf 移至 Web 应用根目录:
    复制文件到 TOMCAT_HOME/webapps/ROOT/brochure.pdf(确保与 about-us.jsp、careers.jsp 等处于同一层级)。

  2. 更新 HTML 中的链接为上下文无关的根路径:

    <li><a href="/brochure.pdf" download="UserGuide.pdf">User Guide</a></li>
    ✅ 使用 /brochure.pdf(以 / 开头的绝对路径)比 ${pageContext.request.contextPath}/brochure.pdf 更简洁可靠——因为 ROOT 应用的上下文路径即 /,二者等价;且避免因动态表达式渲染异常导致路径错误。
  3. (可选)增强兼容性与语义:
    添加 type="application/pdf" 和明确的 download 文件名,提升浏览器识别率:

    <li>
      <a href="/brochure.pdf" 
         download="UserGuide.pdf" 
         type="application/pdf"
         target="_blank">
        User Guide (PDF)
      </a>
    </li>

⚠️ 注意事项:

  • 不要将 PDF 放在 WEB-INF/、META-INF/ 或其任意父级目录中——这些路径对 HTTP 请求完全不可见;
  • 避免使用 .. 路径跳转(如 ../../brochure.pdf),Tomcat 会拒绝解析或返回 404;
  • 若项目使用 Maven 构建,应将 brochure.pdf 放入 src/main/webapp/ 下,确保打包进 WAR 文件的根目录;
  • 浏览器“Failed - No file”提示通常意味着服务器返回了空响应或 404/403,可通过浏览器开发者工具的 Network 标签页 查看具体请求状态码和响应头,快速定位是否为路径 404 或 MIME 类型问题。

完成上述调整后,重启 Tomcat(或等待热部署生效),点击下载链接即可正常获取 PDF 文件。这是 Tomcat 静态资源服务的基础实践,也是 Java Web 工程部署的标准化要求。

热门AI工具

更多
超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

相关专题

更多
如何配置Tomcat环境变量
如何配置Tomcat环境变量

配置Tomcat环境变量需要在系统中添加CATALINA_HOME变量,并将Tomcat的安装路径添加到PATH变量中。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

805

2023.10.26

idea如何集成Tomcat
idea如何集成Tomcat

idea集成Tomcat的步骤:1、添加Tomcat服务器配置;2、配置项目部署;3、运行Tomcat服务器;4、访问项目;5、注意事项;6、关闭Tomcat服务器。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

304

2024.02.23

怎么查看Tomcat源代码
怎么查看Tomcat源代码

查看Tomcat源代码的步骤:1、下载Tomcat源代码;2、在IDEA中导入Tomcat源代码;3、查看源代码;4、理解Tomcat的工作原理;5、参与社区和贡献;6、注意事项;7、持续学习和更新;8、使用工具和插件。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

489

2024.02.23

常见的tomcat漏洞有哪些
常见的tomcat漏洞有哪些

常见的tomcat漏洞有:1、跨站脚本攻击;2、跨站请求伪造;3、目录遍历漏洞;4、缓冲区溢出漏洞;5、配置漏洞;6、第三方组件漏洞。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

285

2024.02.23

tomcat日志乱码怎么解决
tomcat日志乱码怎么解决

tomcat日志乱码的解决办法:1、修改tomcat的日志编码设置;2、检查ide的编码设置;3、检查操作系统的编码设置;4、使用过滤器处理日志;5、检查外部系统的编码设置;6、检查文件编码方式等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

348

2024.02.23

weblogic和tomcat有哪些区别
weblogic和tomcat有哪些区别

weblogic和tomcat的区别:1、功能;2、性能;3、规模;4、价格;5、安全性;6、配置和管理;7、社区支持;8、集成能力;9、升级和更新;10、可靠性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

349

2024.02.23

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

581

2024.02.23

tomcat启动闪退怎么解决
tomcat启动闪退怎么解决

tomcat启动闪退的解决办法:1、检查java环境;2、检查环境变量配置;3、检查端口被占用;4、检查配置文件编码;5、检查启动时需要的配置文件;6、检查相关文件是否丢失;7、检查防火墙和杀毒软件设置。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

322

2024.02.23

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

0

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
dev.java 官方:Learn Java
dev.java 官方:Learn Java

共0课时 | 0人学习

Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn