news 2026/4/28 7:58:21

JSP、EL 表达式、JSTL

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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. 核心特点

  1. 兼容 HTML 标签,直接写页面布局;
  2. 支持嵌入 Java 代码,实现动态数据展示;
  3. 运行时会被 Tomcat 编译成 Servlet,本质就是 Servlet;
  4. 早期 Java Web 核心技术,用于前后端不分离项目。

3. JSP 基础脚本(了解即可)

  1. 脚本片段<% java代码 %>
<% String name = "张三"; int age = 20; %>
  1. 输出表达式<%= 变量/数据 %>
姓名:<%= name %>
  1. 缺点:代码混乱、Java 和 HTML 混写、维护极差,所以后面用EL + JSTL替代脚本。

二、EL 表达式 基础

1. 概念

EL(Expression Language):表达式语言,专门用来在 JSP 中快速获取域对象数据,替代<%= %>脚本。

语法超级简单:

${ 表达式 }

2. 核心作用

  1. 从四大域中取值:pageContext、request、session、application
  2. 自动判空,空数据不会输出null
  3. 简化对象、集合、数组取值。

3. 常用示例

  1. 取普通数据
<% request.setAttribute("msg","Hello JSP"); %> <!-- EL取值 --> ${msg}
  1. 取对象属性
${user.name} ${user.age}
  1. 运算
${10 + 20} ${age >= 18}

4. 优势

  • 写法简洁、无 java 硬编码;
  • 自动忽略 null,页面更整洁;
  • 配合 JSTL 标签使用,彻底告别 JSP 脚本。

三、JSTL 标签库 基础

1. 概念

JSTL(JSP Standard Tag Library):JSP 标准标签库,是一套自定义标签,用标签代替 Java 代码

解决问题:JSP 页面大量 Java 代码,可读性差、难维护。

2. 使用前提

  1. 导入 JSTL 依赖 jar 包;
  2. 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}"/>

四、三者关系(重点记忆)

  1. JSP:载体页面,是容器;
  2. EL 表达式:负责取值、运算
  3. 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>

六、总结

  1. JSP:动态网页技术,融合 HTML 与服务端代码;
  2. EL:${}快速取值、做运算,简化页面数据获取;
  3. JSTL:<c:xxx>标签,实现循环、判断等业务逻辑;
  4. 三者是Java Web 传统动态页面标配组合
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 7:55:06

Cadence ADE实战:手把手教你仿真LC VCO的寄生电阻与振荡频率(附脚本)

Cadence ADE实战&#xff1a;LC VCO寄生电阻与振荡频率的精确仿真指南 在射频集成电路设计中&#xff0c;LC压控振荡器(VCO)的性能直接影响整个系统的相位噪声和频率稳定性。作为一名长期奋战在IC设计一线的工程师&#xff0c;我深知理论计算与EDA工具仿真之间的鸿沟常常让初学…

作者头像 李华
网站建设 2026/4/28 7:53:23

开源AI代码补全平台Code4Me V2架构解析

1. Code4Me V2项目概述Code4Me V2是一个面向研究的开源代码补全平台&#xff0c;专为JetBrains系列IDE设计。这个项目由荷兰代尔夫特理工大学的研究团队开发&#xff0c;旨在解决当前AI代码补全领域的一个关键痛点&#xff1a;商业工具&#xff08;如GitHub Copilot&#xff09…

作者头像 李华
网站建设 2026/4/28 7:46:25

PhaseNO:基于神经算子的地震监测技术创新与应用

1. 地震监测技术演进与PhaseNO的创新价值地震监测技术在过去几十年经历了从人工到自动化的革命性转变。早期的地震学家需要像老练的侦探一样&#xff0c;在纸带记录仪上手工标记P波和S波的到达时间。这种传统方法不仅效率低下&#xff08;一个熟练的分析师每天最多只能处理几十…

作者头像 李华
网站建设 2026/4/28 7:43:30

玻璃与隔声(1)---玻璃的隔声性能如何衡量?

玻璃与隔声(1)---玻璃的隔声性能如何衡量? 测量玻璃的隔声性能有两个至关重要的概念:响度和频率。 01 响度 响度是一个比较直观的概念,响亮的噪音通常有较大的压力变化,而微弱的噪音有较小的压力变化。根据探究的侧重点不同,可以使用不同的变量和单位: (1)声强指…

作者头像 李华
网站建设 2026/4/28 7:42:21

融合CBAM混合域注意力的YOLOv10小目标检测:原理详解与完整代码实现

1. 引言 目标检测是计算机视觉领域的核心任务之一,而小目标检测一直是该领域最具挑战性的难题。随着深度学习技术的发展,YOLO系列算法凭借其出色的速度与精度平衡,成为工业界和学术界广泛应用的检测框架。YOLOv10作为该系列的最新成员,在继承前人优点的基础上,进一步优化…

作者头像 李华
网站建设 2026/4/28 7:39:22

投标必看:如何快速完成标书查重?几分钟避免人工通宵核对

“标书终于写完了&#xff0c;但心里总有点慌……”这是很多投标人交标前的真实写照。技术方案改了七八版&#xff0c;图纸画了半个月&#xff0c;工程量清单核了又核。可临到提交&#xff0c;心里还是不踏实&#xff1a;万一和别人的方案“撞车”怎么办&#xff1f;万一图纸被…

作者头像 李华