断弦承露头像
Tomcat部署JSP文件完整指南:手动部署+IDEA工程化实现 附404访问错误全排查封面图

Tomcat部署JSP文件完整指南:手动部署+IDEA工程化实现 附404访问错误全排查

在这里插入图片描述

🌸你好呀!我是断弦承露
🌟感谢陪伴~ 小白博主在线求友
🌿 跟着小白学/Java/软件设计/鸿蒙开发/芯片开发
📖专栏汇总:
《软件设计师》专栏 | 《Java》专栏 | 《 RISC-V 处理器实战》专栏 | 《Flutter鸿蒙实战》专栏 | 《React Native开发》专栏
——|CSDN|——

在这里插入图片描述

Tomcat部署JSP文件完整指南:手动部署+IDEA工程化实现 附404访问错误全排查 📝

文章摘要:JSP是Java Web开发的入门核心技术,必须部署到Servlet容器中才能运行。本文基于Tomcat 9.0.121稳定版本,讲解两种主流部署方式:单文件快速手动部署、IntelliJ IDEA工程化部署,附带可直接运行的字母遍历示例代码,并针对新手最高发的「URL错误/404找不到」问题做全场景排查,所有步骤均可直接复现。

🧠 全文知识架构图

JSP部署指南

基础运行原理

JSP技术定位

Jasper引擎执行流程

手动部署方式

创建JSP源文件

规范保存文件

放入webapps目录

浏览器访问验证

IDEA工程化部署

创建Java Web项目

编写JSP代码

配置Tomcat服务器

启动运行验证

404错误专项排查

文件后缀隐藏问题

部署路径匹配问题

服务与端口问题

上下文路径问题

跨平台大小写问题

常见问题FAQ

进阶拓展写法

📚 一、基础运行原理

JSP(Java Server Pages,Java服务端页面)是嵌入Java代码的动态网页技术,不能直接用浏览器打开本地文件运行,必须部署到实现了Servlet规范的Web容器中。

Tomcat 9 内置 Jasper 2.3 引擎,对应实现JSP 2.3规范,负责解析JSP文件。完整执行流程分为两步:

  1. 转译阶段:首次访问时,Jasper将JSP源码转换为标准的Java Servlet源文件(.java);
  2. 编译阶段:调用Java编译器将.java源文件编译为字节码文件(.class)。

最终由Servlet执行页面逻辑,输出标准HTML页面返回给浏览器。这也是第一次访问JSP页面响应稍慢,后续访问速度明显提升的原因。

⚡ 二、方式一:手动部署到本地Tomcat

适合快速验证单文件效果,无需创建完整项目,直接复用已安装的Tomcat环境。

2.1 分步操作

步骤1:编写JSP代码

新建文本文件,写入如下示例代码。代码实现26个小写字母的遍历输出,附带逐行注释:

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" language="java" %>
<html>
<head>
    <meta charset="UTF-8">
    <title>小写字母遍历输出</title>
    <style>
        .letter-container {
            font-size: 18px;
            letter-spacing: 4px;
            margin-top: 12px;
        }
    </style>
</head>
<body>
    <h3>26个小写英文字母输出结果:</h3>
    <div class="letter-container">
    <%
        // currentChar:循环控制变量,存储当前遍历的字符
        // 采用小驼峰命名,语义清晰,符合Java编码规范
        char currentChar;
        // 利用小写字母ASCII码连续的特性,从字符'a'遍历到'z'
        // char类型底层为数值存储,支持直接自增运算
        for(currentChar = 'a'; currentChar <= 'z'; currentChar++){
            // out是JSP内置隐式对象,类型为JspWriter
            // 作用是向响应页面输出文本内容,无需开发者手动定义
            // &nbsp;是HTML空格实体,用于字符间视觉分隔,避免排版拥挤
            out.print(currentChar + "&nbsp;");
        }
    %>
    </div>
</body>
</html>

💡 代码说明:

  • 顶部page是JSP页面指令,用于声明页面属性:contentType指定浏览器解析的内容类型与编码,pageEncoding指定文件本身的存储编码,language指定脚本语言。
  • 示例为简化演示采用内联样式,工程实践中建议将CSS样式抽离到独立文件,实现结构与样式分离。
步骤2:规范保存文件

选择「文件 → 另存为」,按以下参数保存:

  • 文件名:letter.jsp
  • 编码:UTF-8
  • 保存类型:所有文件
    在这里插入图片描述

⚠️ 新手第一大坑:Windows系统记事本默认保存编码为ANSI(即GBK),且默认隐藏已知文件类型的扩展名,直接保存会出现两个问题:

  1. 文件实际名为letter.jsp.txt,访问返回404;
  2. 文件编码为GBK,与pageEncoding=UTF-8冲突,页面中文乱码。

验证方法:打开文件资源管理器顶部「查看」选项卡,勾选「文件扩展名」,确认文件名后缀仅为.jsp;推荐使用VS Code、Notepad++等编辑器,避免记事本的编码坑。

步骤3:部署到Tomcat目录

将保存好的letter.jsp文件,放入Tomcat安装根目录下的webapps\ROOT文件夹中。在这里插入图片描述

目录说明:ROOT是Tomcat的默认根应用目录,部署在此目录下的资源,访问路径无需加应用名前缀,直接通过文件名即可访问。
补充:也可以在webapps下新建自定义文件夹(如myapp),放入JSP文件,此时访问地址需要加上文件夹名作为上下文路径。单JSP文件可直接部署,完整Web应用还需要遵循标准目录结构,包含WEB-INF等目录。

步骤4:浏览器访问验证

确保Tomcat处于启动状态(控制台或logs/catalina.out中出现Server startup日志即为启动成功),打开浏览器访问地址:

http://localhost:8080/letter.jsp

页面正常显示26个连续小写字母,即为部署成功。
在这里插入图片描述

2.2 部署执行流程图

实际为jsp.txt

后缀正确

未成功

成功

是

否返回404

编写JSP代码

另存为jsp格式 UTF8编码

确认文件后缀正确

显示文件扩展名 重命名文件

放入webapps对应目录

启动Tomcat服务

确认服务启动成功

排查启动问题

浏览器访问对应URL

页面是否正常显示

部署完成

进入错误排查流程

🛠️ 三、方式二:IntelliJ IDEA工程化部署

适合正规项目开发,IDEA自动完成编译、部署、同步,是企业开发的标准方式。

3.1 分步操作

步骤1:创建Java Web项目

打开IDEA,新建项目,左侧选择「Java Enterprise」,右侧配置项:
在这里插入图片描述

新版本 IDEA 把原来的「Java Enterprise」正式改名为 Jakarta EE 了,入口就在左侧 Generators 分类下面。
下面按步骤走,

第一步:切换项目类型为 Jakarta EE

在左侧列表的 Generators 分组下,点击 Jakarta EE
说明:这就是旧版 IDEA 里的「Java Enterprise」,因为 Java EE 已经正式更名为 Jakarta EE,所以新版 IDEA 同步改了名字。
点击后右侧界面会自动切换成 Web 项目的配置项。在这里插入图片描述

第二步:第一页基础配置

Name:给项目命名,比如 tomcat-jsp-demo
Location:项目存放路径,保持默认或自定义都可以
Build system:新手推荐选 Maven(行业通用,依赖管理更方便)在这里插入图片描述

JDK:Tomcat 9 支持 Java 8 及以上全版本
下面的 Add sample code 建议取消勾选,自己写代码更清晰,也方便理解

第三步:选择 Web 模板 + 绑定 Tomcat 9

点击右下角的 Next 按钮,进入第二页配置:
在 Templates 列表里,勾选 Web Application

新版的在本页在这里插入图片描述在这里插入图片描述

点击 Application Server 下拉框,选择你本地安装的 Tomcat 9.0.121
如果下拉里没有,点旁边的「New」→「Tomcat Server」,选中你本地 Tomcat 的根目录即可在这里插入图片描述
在这里插入图片描述在这里插入图片描述

Servlet 版本选择 Servlet 4.0(和 Tomcat 9 实现的规范版本完全对应,兼容性最好)

第四步:创建项目

点击右下角的 Create,IDEA 会自动生成标准 Web 项目结构,并且自动配置好 Tomcat 运行配置。

步骤2:编写JSP文件

在项目的src/main/webapp目录上右键,新建「JSP/JSPX」文件,命名为letter.jsp,写入上述JSP代码并保存。
在这里插入图片描述

步骤3:确认运行配置

IDEA右上角会自动生成Tomcat运行配置,点击配置图标可检查:

  • 「服务器」标签:确认Tomcat安装路径、JDK路径正确
  • 「部署」标签:确认已添加当前项目的部署,记录应用上下文路径(IDEA默认值为项目名)

概念说明:应用上下文路径是Web应用的访问前缀,用于区分同一Tomcat下的多个应用。例如上下文路径为jsp-demo,则访问地址为[http://localhost:8080/jsp-demo/letter.jsp](http://localhost:8080/jsp-demo/letter.jsp)。

步骤4:启动运行

点击右上角绿色启动按钮,IDEA会自动启动Tomcat并部署项目,浏览器自动打开项目根路径。
在地址栏末尾追加/letter.jsp,即可访问到页面效果。
在这里插入图片描述

💡 说明:IDEA部署模式下,文件保存在项目源码目录中,IDEA会自动同步到Tomcat的部署目录,无需手动复制文件。

❗ 四、JSP访问404/URL错误专项排查

针对访问时出现「URL拼写可能存在错误,请检查」、页面返回404的场景,按出现概率从高到低逐一排查,覆盖99%的新手场景:

排名错误原因验证方法解决方案
1文件后缀被隐藏(最高发)开启文件扩展名后,文件名显示为letter.jsp.txt重命名文件,删除末尾的.txt后缀
2部署路径不匹配文件放到了bin、conf等非部署目录,或上下文路径写错手动部署必须放在webapps\ROOT或webapps\自定义应用名目录下;访问地址与上下文路径保持一致
3Tomcat未启动或启动失败[http://localhost:8080](http://localhost:8080) 也无法打开运行bin/startup.bat,查看日志确认启动成功,无报错信息
4端口号不匹配之前修改过Tomcat端口,仍用8080访问查看conf/server.xml中HTTP Connector的port值,使用正确端口访问
5应用上下文路径错误IDEA部署的项目有应用名前缀,直接访问根路径地址加上项目上下文路径,如[http://localhost:8080/](http://localhost:8080/)项目名/letter.jsp
6跨平台大小写不匹配Windows开发正常,部署到Linux服务器返回404Linux系统路径严格区分大小写,全流程统一使用小写文件名
7浏览器缓存旧页面修改代码后刷新无变化,或之前访问过404页面被缓存按Ctrl+F5强制刷新页面,绕过本地缓存重新请求
8应用部署失败启动日志有异常报错,应用未正常加载查看logs/catalina.out日志,排查启动阶段的错误信息

快速定位技巧:先访问[http://localhost:8080](http://localhost:8080),如果Tomcat官方欢迎页都打不开,属于服务或端口问题;如果欢迎页正常,属于文件路径、文件名或上下文路径问题。

💬 五、常见问题 FAQ

Q1:JSP文件直接双击用浏览器打开不行吗?

不行。JSP是服务端动态技术,其中的Java代码需要服务端容器编译执行。直接本地打开只会把代码当纯文本显示,不会执行任何Java逻辑。必须部署到Web容器中,通过HTTP协议访问。

Q2:修改JSP代码后需要重启Tomcat吗?

默认开发模式下不需要。Tomcat默认开启JSP热编译机制,会自动检测文件更新并重新转译编译。

注意:生产环境通常会关闭热编译(将development设为false)提升性能,此时修改JSP必须重启服务才能生效。

Q3:JSP的内置对象有哪些?为什么out不用定义就能用?

JSP提供了多个隐式内置对象,由Jasper引擎在编译时自动创建,开发者可以直接使用。
常用的有out(输出)、request(请求)、response(响应)、session(会话)、application(全局上下文)、config(配置)、pageContext(页面上下文)、page(页面实例)8个;
还有1个exception(异常对象),仅在声明了isErrorPage="true"的错误页面中可用,普通页面无法访问。

Q4:页面中文乱码和控制台日志乱码是一回事吗?

不是同一问题,解决方案完全不同:

  • 页面中文乱码:是JSP文件编码、page指令编码、浏览器解析编码三者不统一导致,检查文件保存编码和page指令即可;
  • 控制台日志乱码:是Tomcat日志编码与Windows CMD编码不匹配导致,修改logging.properties的控制台编码为GBK即可。

Q5:必须放在ROOT目录吗?能不能自己建文件夹?

可以自建目录。在webapps下新建一个文件夹,例如myapp,把JSP文件放入其中,访问地址即为[http://localhost:8080/myapp/letter.jsp](http://localhost:8080/myapp/letter.jsp)。每个独立的子文件夹对应一个独立的Web应用上下文。

🧮 六、进阶拓展:ASCII数值循环写法

除了直接用字符遍历,也可以通过ASCII码数值遍历,两种写法最终效果完全一致,适合理解底层原理:

<%
    // 小写字母a的ASCII码为97,小写字母z的ASCII码为122
    // 以整数形式循环遍历,再强制转换为char字符
    for(int asciiCode = 97; asciiCode <= 122; asciiCode++){
        char letter = (char) asciiCode;
        out.print(letter + "&nbsp;");
    }
%>

原理说明:字符在计算机底层以ASCII数值存储,小写字母a-z的ASCII码连续递增,因此可以用整数循环后强转实现字符遍历。

🔗 官方参考链接

如果本文对你有帮助,欢迎点赞👍、收藏⭐、评论💬、关注➕!
在这里插入图片描述

个人领域:C++/java/Al/软件开发/芯片开发
个人主页:「一名热衷协作的开发者,在构建中学习,期待与你交流技术、共同成长。」
座右铭:「与其完美地观望,不如踉跄地启程」
在这里插入图片描述

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/2602_94958286/article/details/165122584

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--