前言

上节我们学了EL,现在我们来讲JSTL


一、回顾EL

废话不说,直接上代码,把代码分离,Java代码写在Servlet里,前端下载jsp里

先写一个Student类


public class Student {private int id;private String name;private double age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getAge() {return age;}public void setAge(double age) {this.age = age;}public Student() {}public Student(int id, String name, double age) {this.id = id;this.name = name;this.age = age;}@Overridepublic String toString() {return "Student{" +"id=" + id +", name='" + name + '\'' +", age=" + age +'}';}
}

来一个Servlet

@WebServlet("/student")
public class UserServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {List<Student> list = new ArrayList<>();list.add(new Student(1,"zhangsan",23.5));list.add(new Student(2,"lisi",53.5));list.add(new Student(3,"wangwu",73.5));//通过key valu 形式存储req.setAttribute("list",list);//转发req.getRequestDispatcher("index.jsp").forward(req,resp);}
}

最后来一个jsp

<html><head><title>$Title$</title></head><body><table border="1" bgcolor="#faebd7"><tr><th>编号</th><th>姓名</th><th>成绩</th></tr><tr><td>${requestScope.list[0].id}</td><td>${requestScope.list[0].name}</td><td>${requestScope.list[0].age}</td></tr><tr><td>${requestScope.list[1].id}</td><td>${requestScope.list[1].name}</td><td>${requestScope.list[1].age}</td></tr><tr><td>${requestScope.list[2].id}</td><td>${requestScope.list[2].name}</td><td>${requestScope.list[3].age}</td></tr></table></body>
</html>

我们来看看输出效果

这样太多代码了,如果有100行那我们HTML是不是写很多?我们在jsp利用循环输出

  <body><%List<Student> list = (List<Student>) request.getAttribute("list");for(Student stu:list){//这句是关键,El是取,前提要有存request.setAttribute("stu",stu);%><table align="center" bgcolor="#faebd7" border="1"><tr><td>${stu.id}</td><td>${stu.name}</td><td>${stu.age}</td></tr><%}%></table></body>

看看怎么样

可以实现,只不过有点丑

这样一存一取的,也挺麻烦的,我们接下来JSTL

二、JSTL

1.简介(只在JSP中使用)

JSP Standard Tag Library JSP 标准标签库,JSP 为开发者提供的⼀系列的标签

使⽤这些标签可以完成 ⼀些逻辑处理,⽐如循环遍历集合,让代码更加简洁,不再出现 JSP 脚本穿插的情况。

实际开发中 EL 和 JSTL 结合起来使⽤,JSTL 侧重于逻辑处理,EL 负责展示数据。

如何使用?需要引进,共3步

1、在web 下创建lib  需要导⼊ jar 包(两个 jstl.jar standard.jar)存放的位置 web/WEB-INF

上图

在lib下粘贴两个压缩包

2、在 JSP ⻚⾯开始的地⽅导⼊ JSTL核心 标签库

c 表示可以代替uri这一大串

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

3、在需要的地⽅使⽤,我们回到我们前言中的问题

到这里已经成功了,接下来我们用起来,仔细看c标签

整个index.jsp就这么多代码,看起来是不是简洁了

迭代标签:forEach

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html><head><title>$Title$</title></head><body><table align="center" bgcolor="#faebd7" border="1"><tr><td>编号</td><td>姓名</td><td>成绩</td></tr>//这个list是我setAttubute的            <c:forEach items="${list}" var="stu"><tr><td>${stu.id}</td><td>${stu.name}</td><td>${stu.age}</td></tr></c:forEach></table></body>
</html>

2.实操

JSTL 优点:

1、提供了统⼀的标签

2、可以⽤于编写各种动态功能

核⼼标签库常⽤标签: set、outremove、catch

 set:向域对象中添加数据

var相当于key  scope是请求方式,有pagaContext  request  session 等等


target代表更改的对象目标  property代表更改对象的属性  value代表更改成什么

<body><%Student stu = new Student(1,"zhangsang",33.2);request.setAttribute("stu",stu);%>//更改前输出一次${requestScope.name}<c:set target="${stu}" property="name" value="lisi"></c:set>//更改后输出一次${requestScope.name}
</body>


 out:输出域对象中的数据

<body><c:set var="name" value="Tom" ></c:set><c:out value="${name}"></c:out>
</body>

感觉还不如直接${name}输出


 remove:删除域对象中的数据

<body><c:set var="name" value="Tom" ></c:set><c:out value="${name}"></c:out><hr><c:remove var="name"></c:remove><c:out value="${name}" default="未定义"></c:out>
</body>

default 表示找不到name才输出


 catch:捕获异常

<body><c:catch var="error"><%int a = 10/0;%></c:catch>${error}
</body>

条件标签:if choose

细心的你应该发现了标签里面就是jsp的el表达式,上节我们讲到

在if标签中,如果是false,则不输出,只有正确才输出

JSTL --图文并茂详解(全) 轻松掌握相关推荐

  1. UICC 之 USIM 详解全系列——UICC基础知识介绍

    本人就职于国际知名终端厂商,负责modem芯片研发. 在5G早期负责终端数据业务层.核心网相关的开发工作,目前牵头6G算力网络技术标准研究. UICC 之 USIM 详解全系列--UICC(TS102 ...

  2. UICC 之 USIM 详解全系列——UICC协议层结构

    本人就职于国际知名终端厂商,负责modem芯片研发. 在5G早期负责终端数据业务层.核心网相关的开发工作,目前牵头6G算力网络技术标准研究. UICC 之 USIM 详解全系列--UICC协议层结构 ...

  3. UICC 之 USIM 详解全系列——背景与系列介绍

    本人就职于国际知名终端厂商,负责modem芯片研发. 在5G早期负责终端数据业务层.核心网相关的开发工作,目前牵头6G算力网络技术标准研究. UICC 之 USIM 详解全系列--背景与系列介绍 文章 ...

  4. 屏幕小于6英寸的手机_6英寸屏幕真的大么?你可能对“全面屏”有什么误解!详解全面屏手机那些事...

    6英寸屏幕真的大么?你可能对"全面屏"有什么误解!详解全面屏手机那些事 2018-05-15 10:31:35 225点赞 278收藏 118评论 小编注:想获得更多专属福利吗?金 ...

  5. rust机枪塔攻击模式_《辐射4》机枪塔类型及使用心得图文详解 全类型机枪塔伤害介绍...

    今天小编给大家分享的是玩家"影与静"总结的<辐射4>机枪塔类型及使用心得图文详解 全类型机枪塔伤害介绍,一起来看下吧. 查过相关攻略,内容也就是在庇护山庄和星光做的攻速 ...

  6. EL表达式 JSTL(详解)

    相关JSTL.EL博客收集如下: JSTL 标签大全详解:http://blog.csdn.net/qq_25827845/article/details/53311722 EL表达式详解:http: ...

  7. mysql详解(全)

    库表基础属性 mysql操作 mysql表操作 mysql表内容操作 mysql查询流程 存储引擎 数据记录存储格式 系统表汇总 建表规范 建表约束 字段类型 sql函数 存储过程 sql关键字 sq ...

  8. redis详解(全)

    学前小故事 数据库和缓存保证一致性小故事 windows && linux 安装redis redis 持久化 redis API 学前小故事 [我是redis] 你好,我是Redis ...

  9. 图文并茂详解iptables 防火墙工作原理及知识点

    防火墙相关概念 iptables相关概念以及工作原理 iptables中四表五链的原理及规则 iptables中的基本命令详解 ------------------防火墙相关概念----------- ...

最新文章

  1. 物理攻击规避(Physical Attack Mitigation)
  2. 虚拟IO服务器,虚拟IO服务器VIOS概念.doc
  3. 40029错误{“errcode“:40029,“errmsg“:“invalid code, rid: 623bbdcd-3c97f4af-5a2c06d6“}
  4. Android Robolectric 加载运行本地 So 动态库
  5. nodejs gulp less编辑
  6. matconvnet 尝试将 SCRIPT vl_imreadjpeg 作为函数执行:
  7. Junit 4 的 @Before 和 @BeforeClass 对比 Junit 5 @BeforeEach 和 @BeforeAll
  8. 创维电视安装第三方app
  9. WIN7 SP1 windbg安装符号文件
  10. caps scrlk numlk 闪烁
  11. python分析谷歌浏览器的历史记录
  12. ESP32设备驱动-BMP180气压温度传感器驱动
  13. python预测股票价格论文_基于机器学习的股票分析与预测模型研究
  14. Zynq-Linux移植学习笔记之24-VPVN温度监测
  15. 论文阅读13:ENHANCING COLLABORATIVE FILTERING MUSIC RECOMMENDATION BY BALANCING EXPLORATION AND EXPLOITAT
  16. 创业者手记:我所犯的那些入门错误
  17. H.264与AVS视频标准核心技术比较
  18. Python总纲路线
  19. sim卡没坏但苹果手机无服务_手机资讯:苹果iPhone读取不Sim卡怎么办
  20. 单片机实例21——拉幕式数码显示技术(硬件电路图+汇编程序+C语言程序)

热门文章

  1. 得年轻人者得天下,新闻客户端如何抓住不看报纸的90后?
  2. 中学校园网计算机网络工程系统设计,中学校园网络系统设计方案.pdf
  3. vue项目使用高德地图定位当前地址
  4. 如何查看 ubuntu 版本是不是 :LTS
  5. 2021年N1叉车司机模拟考试题及N1叉车司机作业模拟考试
  6. matlab差速器建模仿真,matlab 两轮差速模型运动模型公式和运动轨迹模拟
  7. 图像分类相关优质开源数据集汇总(附下载链接)
  8. NLP算法-关键词提取之Gensim算法库
  9. C语言俄罗斯方块(旧版本)
  10. 面试技巧和注意事项---------65个最常见的面试问题与技巧性答复------------CSDN