一、什么是 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 传统动态页面标配组合
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐