JSP、EL 表达式、JSTL
JSP是一种动态网页技术,允许在HTML中嵌入Java代码,运行于服务器端并编译为Servlet。JSP页面=HTML+Java代码,能动态生成数据。EL表达式(${})用于简化从域对象取值,支持运算并自动处理null值。JSTL标签库(如<c:if>、<c:forEach>)通过标签替代Java代码,实现逻辑控制。三者配合使用(JSP为载体,EL取值,JSTL处理逻辑)可
一、什么是 JSP
1. 概念
JSP(Java Server Pages)是由Sun公司推出的一种动态网页开发技术,它允许在HTML页面中嵌入Java代码,运行在服务器端(依赖Tomcat等Web服务器),最终被服务器编译成Servlet,再将处理后的静态HTML页面响应给客户端浏览器。
核心区别:
-
静态HTML:纯标签组成,内容固定,无法动态生成数据(比如根据用户登录状态显示不同内容);
-
JSP:HTML + Java代码,运行在服务端,能动态拼接数据、处理业务逻辑,返回个性化的HTML页面。
简单理解:
- HTML 是纯静态页面,只能写标签,不能写 Java 代码;
- JSP = HTML + Java 代码,运行在 Tomcat 服务器,可以动态拼接页面数据。
2. 核心特点
- 兼容 HTML 标签,直接写页面布局;
- 支持嵌入 Java 代码,实现动态数据展示;
- 运行时会被 Tomcat 编译成 Servlet,本质就是 Servlet;
- 早期 Java Web 核心技术,用于前后端不分离项目。
3. JSP 基础脚本(了解即可)
- 脚本片段:
<% java代码 %>
<%
String name = "张三";
int age = 20;
%>
- 输出表达式:
<%= 变量/数据 %>
姓名:<%= name %>
- 缺点:代码混乱、Java 和 HTML 混写、维护极差,所以后面用 EL + JSTL 替代脚本。
二、EL 表达式 基础
1. 概念
EL(Expression Language):表达式语言,专门用来在 JSP 中快速获取域对象数据,替代 <%= %> 脚本。
语法超级简单:
${ 表达式 }
2. 核心作用
- 从四大域中取值:
pageContext、request、session、application - 自动判空,空数据不会输出
null; - 简化对象、集合、数组取值。
3. 常用示例
- 取普通数据
<%
request.setAttribute("msg","Hello JSP");
%>
<!-- EL取值 -->
${msg}
- 取对象属性
${user.name}
${user.age}
- 运算
${10 + 20}
${age >= 18}
4. 优势
- 写法简洁、无 java 硬编码;
- 自动忽略 null,页面更整洁;
- 配合 JSTL 标签使用,彻底告别 JSP 脚本。
三、JSTL 标签库 基础
1. 概念
JSTL(JSP Standard Tag Library):JSP 标准标签库,是一套自定义标签,用标签代替 Java 代码。
解决问题:JSP 页面大量 Java 代码,可读性差、难维护。
2. 使用前提
- 导入 JSTL 依赖 jar 包;
- JSP 页面头部引入标签库:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3. 常用核心标签(c 标签)
(1)条件判断 <c:if>
<c:if test="${age >= 18}">
成年人
</c:if>
(2)循环遍历 <c:forEach>
遍历集合、数组,日常使用最多:
<!-- items:要遍历的集合 var:每一项变量名 -->
<c:forEach items="${userList}" var="user">
<div>${user.name} -- ${user.age}</div>
</c:forEach>
(3)赋值、输出
<c:set var="num" value="100"/>
<c:out value="${num}"/>
四、三者关系(重点记忆)
- JSP:载体页面,是容器;
- EL 表达式:负责取值、运算;
- JSTL 标签:负责判断、循环、逻辑处理;
组合使用公式:
JSP 页面 = HTML 布局 + JSTL 标签 (逻辑) + EL 表达式 (取值)完全抛弃老旧 Java 脚本,页面整洁易维护。
五、完整小案例(可直接运行)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>JSP+EL+JSTL案例</title>
</head>
<body>
<%-- 域中存数据 --%>
<% request.setAttribute("name","Java学习"); %>
<%-- EL取值 --%>
<h3>标题:${name}</h3>
<%-- JSTL 判断 --%>
<c:set var="score" value="85"/>
<c:if test="${score >= 60}">
<p>成绩合格</p>
</c:if>
</body>
</html>
六、总结
- JSP:动态网页技术,融合 HTML 与服务端代码;
- EL:
${}快速取值、做运算,简化页面数据获取; - JSTL:
<c:xxx>标签,实现循环、判断等业务逻辑; - 三者是 Java Web 传统动态页面标配组合
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)