Salmon的全栈知识 Salmon的全栈知识
首页
  • JavaSE
  • JavaWeb
  • Spring生态
  • JUC
  • JVM
  • Netty
  • Java各版本特性
  • 23种设计模式
  • Maven
  • Java常用框架
  • Dubbo
  • OpenFeign
  • Nacos
  • Zookeeper
  • Sentinel
  • Seata
  • SpringCloud Gateway
  • Apollo
  • Eureka
  • Go基础
  • Gin
  • SQL数据库

    • MySQL
    • Oracle
  • NoSQL数据库

    • Redis
    • MongoDB
    • ElasticSearch
  • 消息中间件

    • RabbitMQ
    • RocketMQ
    • Kafka
    • ActiveMQ
    • MQTT
    • NATS
  • 网关中间件

    • Nginx
  • Linux
  • Docker
  • Git
  • K8s
  • Solidity
  • Java
  • 计算机网络
  • 操作系统
GitHub (opens new window)
首页
  • JavaSE
  • JavaWeb
  • Spring生态
  • JUC
  • JVM
  • Netty
  • Java各版本特性
  • 23种设计模式
  • Maven
  • Java常用框架
  • Dubbo
  • OpenFeign
  • Nacos
  • Zookeeper
  • Sentinel
  • Seata
  • SpringCloud Gateway
  • Apollo
  • Eureka
  • Go基础
  • Gin
  • SQL数据库

    • MySQL
    • Oracle
  • NoSQL数据库

    • Redis
    • MongoDB
    • ElasticSearch
  • 消息中间件

    • RabbitMQ
    • RocketMQ
    • Kafka
    • ActiveMQ
    • MQTT
    • NATS
  • 网关中间件

    • Nginx
  • Linux
  • Docker
  • Git
  • K8s
  • Solidity
  • Java
  • 计算机网络
  • 操作系统
GitHub (opens new window)
npm

(进入注册为作者充电)

  • JUnit单元测试
  • JDBC
  • JDBC连接池&JDBCTemplate
  • XML
  • Tomcat&Servlet
  • Servlet&HTTP&Request
  • Response
  • Cookie&Session
  • EL&JSTL
    • JSP
      • 1. 指令
      • 2. 注释
      • 3. 内置对象(9个)
    • MVC 开发模式
      • 1. JSP 演变历史
      • 2. MVC 说明
    • EL 表达式(Expression Language)
      • 1. 概念
      • 2. 忽略 EL 表达式
      • 3. EL 表达式使用
      • 1. 运算
      • 2. 获取值
      • 3. 获取对象或集合属性
    • JSTL(JSP 标准标签库)
      • 1. 概念
      • 2. 使用步骤
      • 3. 常用标签
      • 1. c:if
      • 2. c:choose
      • 3. c:forEach
      • 4. 示例练习
    • 三层架构(分层设计)
    • 案例:用户信息列表展示
      • 1. 需求
      • 2. 技术栈设计
      • 3. 数据库设计
      • 4. 开发步骤
      • 5. 测试与部署
  • Filter&Listener
  • 《JavaWeb》笔记
Salmon
2025-07-21
目录

EL&JSTL

# JSP

# 1. 指令

  • 作用:用于配置 JSP 页面,导入资源文件

  • 格式:

    <%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %>
    
  • 分类:

    1. page:配置 JSP 页面
      • contentType:等同于 response.setContentType()
        • 设置响应体的 mime 类型以及字符集
        • 设置当前 JSP 页面的编码(高级 IDE 生效,低级工具需设置 pageEncoding)
      • import:导包
      • errorPage:指定错误页面
      • isErrorPage:标识当前页面是否为错误页面
        • true:是,可使用内置对象 exception
        • false:否(默认)
    2. include:页面包含
    <%@ include file="top.jsp" %>
    
    1. taglib:导入标签库
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    

# 2. 注释

  1. HTML 注释:
<!-- 只能注释 HTML 代码片段 -->
  1. 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 演变历史

  1. Serlet 初期:只能用 response 输出 HTML,非常繁琐
  2. JSP 出现:简化了 Servlet,但混写 Java 和 HTML 不易维护
  3. 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. 使用步骤

  1. 导入 JSTL 所需 jar 包
  2. 引入标签库:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  1. 编写标签代码

# 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> 中

# 三层架构(分层设计)

  1. 表示层(界面层):

    • 用户可见,包含 JSP、HTML、CSS、JS 等
  2. 业务逻辑层:

    • 控制逻辑和业务判断,如 Servlet 和 Service
  3. 数据访问层:

    • 与数据库交互,如 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. 开发步骤

  1. 创建数据库环境
  2. 创建 Java Web 项目
  3. 导入相关 jar 包(JSTL, Druid, JdbcTemplate 等)
  4. 编写增删改查功能

# 5. 测试与部署

  • 运行 Tomcat,测试页面功能是否完整
  • 检查 JSP 页面是否正确展示数据
上次更新: 2025/07/23, 07:26:30
Cookie&Session
Filter&Listener

← Cookie&Session Filter&Listener→

Theme by Vdoing | Copyright © 2022-2025 Salmon's Blog
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式