JavaWeb系列十三: 服务器端渲染技术(JSP) 下

在这里插入图片描述

2. EL表达式

2.1 EL表达式快速入门

  1. EL表达式全称: Expression Language, 是表达式语言
  2. EL表达式主要是代替jsp页面的表达式脚本
  3. EL表达式输出数据时, 比jsp的表达式脚本简洁
  4. EL表达式基本语法: ${key1}
  5. EL表达式在输出null时, 输出的是""
  6. jsp表达式脚本输出null时, 输出的是"null"字符串
    在这里插入图片描述

2.2 EL表达式输出形式

public class Book {
    private String name;//书名
    private String[] writer;//作者
    private List<String> reader;//读者
    private Map<String, Object> topics;//评讲

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String[] getWriter() {
        return writer;
    }

    public void setWriter(String[] writer) {
        this.writer = writer;
    }

    public List<String> getReader() {
        return reader;
    }

    public void setReader(List<String> reader) {
        this.reader = reader;
    }

    public Map<String, Object> getTopics() {
        return topics;
    }

    public void setTopics(Map<String, Object> topics) {
        this.topics = topics;
    }

    @Override
    public String toString() {
        return "Book{" +
                "name='" + name + '\'' +
                ", writer=" + Arrays.toString(writer) +
                ", reader=" + reader +
                ", topics=" + topics +
                '}';
    }
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>el 表达式输出数据演示</title>
</head>
<body>
<h1>el 表达式输出数据演示</h1>
<%
    // private String name;//书名
    //private String[] writer;//作者
    //private List<String> reader;//读者
    //private Map<String, Object> topics;//评讲

    //创建Book, 放入相关属性
    Book book = new Book();
    book.setName("雪国");

    book.setWriter(new String[]{"川端康成","2"});

    ArrayList<String> list = new ArrayList<>();
    list.add("赵志伟");
    list.add("赵培竹");
    book.setReader(list);

    Map<String, Object> hashMap = new HashMap<>();
    hashMap.put("赵志伟", "讲的不错❤");
    hashMap.put("赵培竹", "Love❤");
    book.setTopics(hashMap);

    //把book对象 放入request域对象
    request.setAttribute("bookkey", book);
%>
book对象: ${bookkey}<br/>
book.name: ${bookkey.name}<br/>
book.writer: ${bookkey.writer}<br/>
book.writer[0]: ${bookkey.writer[0]}<br/>
book.readers: ${bookkey.reader}<br/>
book.readers.get(1): ${bookkey.reader.get(1)}<br/>
book.readers[0]: ${bookkey.reader[0]}<br/>
book.topics["赵志伟"]: ${bookkey.topics["赵志伟"]}<br/>
book.topics.get("赵培竹"): ${bookkey.topics.get("赵培竹")}<br/>
</body>
</html>

输出结果
在这里插入图片描述

2.3 el运算符

关系运算符说明范例结果
== 或 eq等于${5 == 5} 或 ${5 eq 5}true
!= 或 ne不等于${5 != 5} 或 ${5 ne 5}false
< 或 lt小于${3 < 5} 或 ${3 lt 5}true
> 或 gt大于${3 > 5} 或 ${3 gt 5}false
<= 或 le小于等于${3 <= 5} 或 ${3 le 5}true
>= 或 ge大于等于${3 >= 5} 或 ${3 ge 5}false
  • 逻辑运算
逻辑运算符说明范例结果
&& 或 and与运算${12 == 12 && 12 < 11}false
或 or或运算${12 == 12
! 或 not取反运算${ !true } 或 ${not true}false
  • 算术运算
算数运算符说明范例结果
+加法${12 + 12}30
-减法${24 - 12}12
/ 或 div除法${ 144 / 12 } 或 ${ 144 div 12 }12
*乘法${ 144 * 10 }1440
% 或 mod取模${ 144 % 10 } 或 ${ 144 mod 10 }4

2.4 empty运算

  1. empty运算可以判断一个数据是否为空, 如果为空, 返回true, 否则返回false
  2. 以下几种情况为空
  • 值为null
  • 值为空串
  • 值是Object类型数组, 长度为零
  • list集合, 元素个数为零
  • map集合, 元素个数为零
    在这里插入图片描述
    在这里插入图片描述
  • 三元运算
    在这里插入图片描述

2.5 EL获取四个域数据

变量类型说明
pageContextPageContextImpl获取jsp中的九大内置对象
pageScopeMap<String, Object>获取pageContext域中的数据
requestScopeMap<String, Object>获取Request域中的数据
sessionScopeMap<String, Object>获取Session域中的数据
applicationScopeMap<String, Object>获取ServletContext域中的数据

在这里插入图片描述
在这里插入图片描述

2.6 EL获取HTTP相关信息

在这里插入图片描述
在这里插入图片描述

3. JSTL标签库

3.1 jstl 快速入门

  1. JSTL标签库是指 JSP Standard Tag Library(JSP标准标签库)
  2. EL表达式是为了替换jsp中的表达式脚本, JSTL是为了替换代码脚本. 这样jsp页面变得更加简洁
  3. JSTL由五个标签库组成
功能范围URI前缀
核心标签库http://java.sun.com/jsp/jstl/corec
格式化http://java.sun.com/jsp/jstl/fmtfmt
函数http://java.sun.com/jsp/jstl/functionsfn
数据库http://java.sun.com/jsp/jstl/sqlsql
XMLhttp://java.sun.com/jsp/jstl/xmlx
  1. 使用JSTL, 需要导入相关的jar包, 即taglibs-standard-impl-1.2.1.jar, taglibs-standard-spec-1.2.1.jar
    在这里插入图片描述

3.2 <c:set/>标签

  1. 介绍: <c:set scope=“request” var=“username” value=“赵志伟”/>

<c:set />标签可以往域中存放数据

  1. 等价于 域对象.setAttribute(key, value);
  2. scope属性 设置保存到哪个域
    page表示PageContext域 (如果不写, 默认值)
    request表示Request域
    session表示Session域
    application表示ServletContext域
  3. var属性 设置key值
  4. value属性 设置值
    在这里插入图片描述

3.3 <c:if/>标签

  1. 介绍: <c:if test=“${10 > 2}”>hello</c:if>

<c:if />

  1. if标签用来做if判断
  2. test属性表示判断的条件(用EL表达式输出)
    在这里插入图片描述

3.4 <c:choose/>标签

  1. 介绍: 多路判断, 跟switch…case…default非常接近
  1. 取值问题
    在这里插入图片描述
    在这里插入图片描述
  2. c:choose标签使用在这里插入图片描述

3.5 <c:forEach/>标签

varstatus的使用, 参考👉
遍历Map集合的方法, 参考👉
c:forEach的循环次数,以及内部循环数据累加统计

  1. 介绍: c:forEach标签, 用来遍历输出, 主要有4种形式
  • 普通遍历输出 i 到 j
    在这里插入图片描述
  • 遍历数组
    在这里插入图片描述
  • 遍历Map
    在这里插入图片描述
  • 遍历List
    在这里插入图片描述

3.6 作业布置

  • 11
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~ 小团子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值