上一篇
在HTML中无法直接执行Java代码,但可通过JSP技术实现:在HTML页面中嵌入标签包裹的Java代码片段,由服务器解析执行后生成动态内容返回浏览器,或使用JavaScript与后端Java服务交互获取数据。
核心原理:服务器端执行
Java代码需通过服务器技术在发送HTML到浏览器前执行,常用方案如下:
JSP (JavaServer Pages) – 最直接方案
<!-- 示例:动态生成HTML内容 -->
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<body>
<%
// Java代码嵌入区域
String userName = "访客";
if(request.getParameter("name") != null) {
userName = request.getParameter("name");
}
%>
<h1>欢迎, <%= userName %>!</h1> <!-- 输出Java变量 -->
<!-- 循环生成列表 -->
<ul>
<% for(int i=1; i<=5; i++) { %>
<li>项目 <%= i %></li>
<% } %>
</ul>
</body>
</html>
- 执行流程:
- 用户访问
.jsp文件 - 服务器执行
<% ... %>中的Java代码 - 生成纯HTML发送给浏览器
- 用户访问
Servlet + HTML模板
// Servlet代码 (Java类)
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
String product = "手机";
int price = 2999;
request.setAttribute("product", product); // 传数据给HTML
request.setAttribute("price", price);
request.getRequestDispatcher("/product.html").forward(request, response);
}
<!-- product.html 使用JSTL表达式 -->
<p>产品:${product} 价格:${price}元</p>
现代替代方案(推荐)
Spring Boot + Thymeleaf
// Controller类
@Controller
public class WebController {
@GetMapping("/news")
public String news(Model model) {
model.addAttribute("headline", "今日热点新闻");
return "news-page"; // 对应模板文件
}
}
<!-- news-page.html -->
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<h1 th:text="${headline}">默认标题</h1> <!-- 动态替换内容 -->
</body>
</html>
API分离架构(主流方案)
- 前端:HTML/CSS/JavaScript (Vue/React等框架)
- 后端:Java提供REST API
// Spring Boot 控制器 @RestController @RequestMapping("/api") public class ApiController { @GetMapping("/data") public Map<String, String> getData() { return Map.of("status", "success", "message", "来自Java的数据"); } }// HTML中JavaScript调用API fetch('/api/data') .then(response => response.json()) .then(data => { document.getElementById("result").innerText = data.message; });
重要注意事项
-
安全风险:

- 避免在JSP中直接拼接SQL(防注入攻击)
- 对用户输入严格过滤(XSS防护)
-
性能优化:

- 使用JSTL标签代替Scriptlet
- 静态资源缓存
- 启用Gzip压缩
-
环境要求:
- 服务器:Tomcat/Jetty/WildFly等 - JDK版本:需匹配服务器要求 (推荐JDK 11+) - 构建工具:Maven/Gradle
常见误区澄清
| 错误认知 | 正确解释 |
|---|---|
| “HTML文件里能运行Java” | Java必须在服务器编译执行 |
浏览器直接执行.java文件 |
需编译为.class并由JVM运行 |
| Applet技术仍可用 | 已被所有现代浏览器废弃 |
学习路径建议
- 基础:Java语法 → Servlet/JSP → JDBC数据库
- 框架:Spring Boot → MyBatis/Hibernate
- 前端整合:Thymeleaf/FreeMarker 或 REST API + Vue/React
- 部署:Docker容器化 → 云服务器配置
权威参考来源:
- Oracle官方JSP文档:JavaServer Pages Technology
- Spring框架指南:Spring Web MVC
- OWASP安全规范:XSS防护手册 符合E-A-T原则,技术方案基于Java官方标准及Spring权威框架实践,适用于生产环境部署。*

