直接改后缀为.jsp并添加page指令是运行前提,否则JSP无法编译、内置对象不可用且中文乱码;文件须放webapp目录下,路径需用${pageContext.request.contextPath}适配上下文。

直接改后缀 + 加 page 指令就能跑,但不加编码声明或放错位置,JSP 会乱码、报错甚至被当成纯 HTML 返回。
改文件名和加 指令是硬性前提
Tomcat 等容器只认 .jsp 后缀才会触发 JSP 编译器;没这行指令,request、out 等内置对象可能不可用,中文还会变问号。
- 把
index.html重命名为index.jsp(右键 → 重命名,确保系统没自动补.txt) - 在文件最顶部(DOCTYPE 前面)插入:
- 不要写成两行,比如
单独一行 + 另起一行写—— 这会导致编译失败 - 如果原 HTML 已有
<meta charset="UTF-8">,保留它,它管浏览器解码;JSP 指令管服务器输出编码,二者不冲突但缺一不可
静态内容里插 Java 表达式要小心转义和空格
直接把 <p>欢迎张三</p> 换成 <p>欢迎<%= request.getAttribute("username") %></p> 看似简单,但实际容易出错。
-
里不能写带分号的语句,只能是表达式(如user.getName()),写String name = "a";会编译报错 - 如果属性值可能为
null,别裸写,应加判空: - HTML 标签内嵌 JSP 表达式时,前后别留多余空格,比如
<div class="">比<div class=" ">更安全,后者可能生成class=" active"导致样式失效 - 避免在 JS 字符串里混用
${}和,比如var name = "";是 OK 的,但var name = "${username}";需确认已启用 EL(默认 Tomcat 7+ 开启,老版本需加isELIgnored="false")
资源路径和表单 action 必须适配 Web 容器部署结构
JSP 不再是双击打开的本地文件,所有相对路径都以 Web 应用根目录(如 /myapp/)为基准,不是以文件系统路径为准。
立即学习“前端免费学习笔记(深入)”;
- CSS/JS 图片路径别写
./css/style.css,改用上下文路径:<link rel="stylesheet" href="${pageContext.request.contextPath}/css/style.css"> - 表单
action别指向process.html,要指向process.jsp或后端 Servlet,比如:<form action="${pageContext.request.contextPath}/servlet/SubmitServlet" method="post"> - 如果项目部署在 ROOT 上下文(即访问地址是
http://localhost:8080/),${pageContext.request.contextPath}为空字符串,仍建议保留——换环境时不用改代码 - 静态资源(如
images/logo.png)放在webapp/images/下,而非WEB-INF/images/(后者无法被浏览器直连)
最容易被忽略的是:JSP 文件必须放在 webapp/(或 src/main/webapp/)下,不能放在 WEB-INF/ 或 src/main/java/ 里;否则容器根本不会加载它,404 都不会报,而是返回空白页或原始 JSP 源码(说明配置已失效)。



















