EL&JSTL
2025/7/21大约 3 分钟《JavaWeb》笔记ELJSTLJavaJavaWebServletJSPJDBCWeb开发HTTP
JSP
1. 指令
作用:用于配置 JSP 页面,导入资源文件
格式:
<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %>分类:
- page:配置 JSP 页面
- contentType:等同于 response.setContentType()
- 设置响应体的 mime 类型以及字符集
- 设置当前 JSP 页面的编码(高级 IDE 生效,低级工具需设置 pageEncoding)
- import:导包
- errorPage:指定错误页面
- isErrorPage:标识当前页面是否为错误页面
- true:是,可使用内置对象 exception
- false:否(默认)
- contentType:等同于 response.setContentType()
- include:页面包含
<%@ include file="top.jsp" %>- taglib:导入标签库
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>- page:配置 JSP 页面
2. 注释
- HTML 注释:
<!-- 只能注释 HTML 代码片段 -->- JSP 注释(推荐):
<%-- 可以注释所有 --%>3. 内置对象(9个)
| 变量名 | 类型 | 作用 |
|---|---|---|
| pageContext | PageContext | 当前页面共享数据,可获取其他8个内置对象 |
| request | HttpServletRequest | 一次请求访问多个资源(转发) |
| session | HttpSession | 一次会话中的多个请求 |
| application | ServletContext | 所有用户间共享数据 |
| response | HttpServletResponse | 响应对象 |
| page | Object | 当前页面对象,相当于 this |
| out | JspWriter | 输出对象,输出数据到页面 |
| config | ServletConfig | Servlet 的配置对象 |
| exception | Throwable | 异常对象(仅在 isErrorPage=true 时可用) |
MVC 开发模式
1. JSP 演变历史
- Serlet 初期:只能用 response 输出 HTML,非常繁琐
- JSP 出现:简化了 Servlet,但混写 Java 和 HTML 不易维护
- MVC 模式:解耦视图与控制逻辑,提升维护性和协作性
2. MVC 说明
- M(Model):JavaBean,处理业务逻辑
- V(View):JSP,展示数据
- C(Controller):Servlet,控制层
- 接收用户请求
- 调用模型
- 返回视图页面
优缺点:
- 优点:
- 降低耦合、便于维护、利于协作
- 可重用性高
- 缺点:
- 架构复杂、对开发者要求高
EL 表达式(Expression Language)
1. 概念
- 简化 JSP 中 Java 代码的编写
- 格式:$
2. 忽略 EL 表达式
- 设置 isELIgnored="true" 忽略整页
- 使用 ${} 忽略单个表达式
3. EL 表达式使用
1. 运算
- 运算符:
- 算术:+ - * / (div) % (mod)
- 比较:> < >= <= == !=
- 逻辑:&& (and) || (or) ! (not)
- 空判断:empty
${empty list}
${not empty str}2. 获取值
- 语法:${域.键名} 或 ${键名}(从小到大依次查找)
| 域名 | 对应对象 |
|---|---|
| pageScope | pageContext |
| requestScope | request |
| sessionScope | session |
| applicationScope | application |
- 示例:
${requestScope.name}3. 获取对象或集合属性
- 对象:
${域.对象.属性}- List 集合:
${域.list[0]}- Map 集合:
${map.key}
${map["key"]}JSTL(JSP 标准标签库)
1. 概念
- Apache 提供的开源 JSP 标签
- 用于简化 JSP 中的 Java 代码
2. 使用步骤
- 导入 JSTL 所需 jar 包
- 引入标签库:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>- 编写标签代码
3. 常用标签
1. c:if
- 相当于 Java 的 if
- 属性:
- test:布尔表达式(结合 EL 使用)
<c:if test="${user.age > 18}">
成年人
</c:if>没有 else,如需 else 效果可再写一个 c:if
2. c:choose
- 相当于 Java 的 switch 结构
- 标签组成:
- <c:choose> 开始
- <c:when> 相当于 case
- <c:otherwise> 相当于 default
3. c:forEach
- 相当于 Java 的 for 循环
- 用法常见于遍历集合展示表格
4. 示例练习
- 从 request 域中获取 User List,用 JSTL + EL 展示到 <table> 中
三层架构(分层设计)
表示层(界面层):
- 用户可见,包含 JSP、HTML、CSS、JS 等
业务逻辑层:
- 控制逻辑和业务判断,如 Servlet 和 Service
数据访问层:
- 与数据库交互,如 DAO、JDBC、MyBatis
案例:用户信息列表展示
1. 需求
- 实现用户信息的增删改查功能
2. 技术栈设计
- Servlet + JSP + MySQL
- JdbcTemplate + Druid + BeanUtils + Tomcat
3. 数据库设计
CREATE DATABASE day17;
USE day17;
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
gender VARCHAR(5),
age INT,
address VARCHAR(32),
qq VARCHAR(20),
email VARCHAR(50)
);4. 开发步骤
- 创建数据库环境
- 创建 Java Web 项目
- 导入相关 jar 包(JSTL, Druid, JdbcTemplate 等)
- 编写增删改查功能
5. 测试与部署
- 运行 Tomcat,测试页面功能是否完整
- 检查 JSP 页面是否正确展示数据
