前言
上节我们学了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;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
来一个Servlet
@WebServlet("/student")
public class UserServlet extends HttpServlet {
@Override
protected 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、out、remove、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(JSP Standard Tag Library),包括其与EL的配合使用,简化JSP代码的优势。通过实例展示了如何引入JSTL,以及核心标签库如forEach的使用方法,强调了set、out、remove和catch等常用标签的功能。
 轻松掌握&spm=1001.2101.3001.5002&articleId=123901656&d=1&t=3&u=1880c15a4ff047d1bbfd8c7aa734e1a7)
1万+

被折叠的 条评论
为什么被折叠?



