概述
✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。
????个人主页:Java Fans的博客
????个人信条:不迁怒,不贰过。小知识,大智慧。
????当前专栏:JAVA开发者成长之路
✨特色专栏:国学周更-心性养成之路
????本文内容:JSP——标准标签库 (JSTL)
更多内容点击????
JSP——EL表达式
本文目录
- 1.1 EL现有问题
- 1.2 什么是JSTL
- 1.3 JSTL的作用
- 1.4 JSTL使用
- 1.5 核心标签
- 1.5.1 条件标签if判断
- 1.5.2 多条件choose判断
- 1.5.3 迭代foreach
- 1.5.4 url标签
- 1.6 整合
1.1 EL现有问题
- EL主要是用于作用域获取数据,虽然可以做运算判断,但是得到的都是一个结果,做展示
- EL不存在流程控制。比如判断。
- EL对于集合只能做单点访问,不能实现遍历操作。比如循环。
1.2 什么是JSTL
(1)JSTL:全称为Java Server Standard Tag Library
(2)JSP标准标签库(JSTL)是一个JSP标签集合
1.3 JSTL的作用
- 可对EL获取的数据进行逻辑操作
- 与EL合作完成数据的展示
1.4 JSTL使用
- 导入两个jar文件:standard.jar和jstl.jar文件拷贝到/WEB-INF /lib/下
- 在JSP页面引入标签库<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” >
1.5 核心标签
1.5.1 条件标签if判断
语法:<c:if test="条件"></c:if>
案例代码
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
request.setAttribute("username", "zhangsan");
request.setAttribute("age", 18);
%>
<h2>姓名:${username},年龄:${age}</h2>
<!-- test属性中是条件,条件需要使用EL表达式来实现-->
<c:if test="${username eq 'zhangsan'}">
<h2>欢迎你,${username}</h2>
</c:if>
<c:if test="${username ne 'zhangsansan'}">
<h2>请重新登录</h2>
</c:if>
</body>
</html>
效果展示:
1.5.2 多条件choose判断
语法:
<c:choose>
<c:when test="条件1">结果1</c:when>
<c:when test="条件2">结果2</c:when>
......
<c:when test="条件n">结果n</c:when>
<c:otherwise>结果m</c:otherwise>
</c:choose>
案例代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
request.setAttribute("username", "zhangsan");
request.setAttribute("age", 35);
%>
<h2>姓名:${username},年龄:${age}</h2>
<%--根据年龄判断--%>
<c:choose>
<c:when test="${age<18}"><h2>少年</h2></c:when>
<c:when test="${age>=18 and age<30}"><h2>青年</h2></c:when>
<c:when test="${age>=30 and age<50}"><h2>中年</h2></c:when>
<c:otherwise><h2>老年</h2></c:otherwise>
</c:choose>
</body>
</html>
效果展示:
1.5.3 迭代foreach
语法:
<c:foreach var="变量名" items="集合" begin="起始下标" end="结束下标" step="间隔长度" varstatus="遍历状态"></c:foreach>
案例一代码:
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.cxyzxc.www.entity.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
list.add("F");
list.add("G");
request.setAttribute("list", list);
%>
<h2>Java中增强for循环遍历</h2>
<%
for(String str:list){
out.println(str);
}
%>
<hr />
<h2>JSTL迭代foreach</h2>
<!--
var:变量名
items:遍历的数组或者集合名,用EL表达式表示
begin:开始下标
end:结束下标
step:间隔长度
varStatus:遍历状态
first:是否是第一行
last:是否是最后一行
count:当前行数
index:当前元素下标
-->
<c:forEach var="str" items="${list}" begin="0" end="5" step="2" varStatus="sta">
<p>${str} ${sta.first} ${sta.last} ${sta.count} ${sta.index}</p>
</c:forEach>
</body>
</html>
效果展示:
案例二代码:
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="com.cxyzxc.www.entity.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
List<User> users = new ArrayList<User>();
users.add(new User("张三","123456"));
users.add(new User("李四","123456"));
users.add(new User("王五","123456"));
users.add(new User("赵六","123456"));
users.add(new User("孙七","123456"));
users.add(new User("吴八","123456"));
users.add(new User("周九","123456"));
request.setAttribute("users", users);
%>
<h2>所有用户信息</h2>
<!--
var:变量名
items:遍历的数组或者集合名,用EL表达式表示
begin:开始下标
end:结束下标
step:间隔长度
varStatus:遍历状态
first:是否是第一行
last:是否是最后一行
count:当前行数
index:当前元素下标
-->
<table border="1" width="500px" cellspacing="0">
<tr>
<th>用户名</th>
<th>密码</th>
<th>是否是第一个</th>
<th>是否是最后一个</th>
<th>计数count</th>
<th>索引index</th>
</tr>
<c:forEach var="user" items="${users}" varStatus="sta">
<tr>
<td>${user.username}</td>
<td>${user.password}</td>
<td>${sta.first}</td>
<td>${sta.last}</td>
<td>${sta.count}</td>
<td>${sta.index}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
效果展示:
1.5.4 url标签
(1)在Cookie禁用的情况下,通过重写URL拼接JESSIONID来传递ID值。便于下一次访问时仍可查到上一次的Session对象
(2)语法:<c:url context=‘${pageContext.request.contextPath}’ value=‘/xxxController’ />
(3)注意:所有涉及到页面跳转或者重定向跳转时。都应该使用URL重写
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
String newURL = response.encodeRedirectURL(request.getContextPath() + "/jstl/JstlDemo04.jsp");
%>
<%=newURL%>
<a href="<%=response.encodeRedirectURL(request.getContextPath()+"/jstl/JstlDemo04.jsp")%>">跳转</a>
<br/>
<c:url context="${pageContext.request.contextPath}" value="/jstl/JstlDemo04.jsp"></c:url>
<a href="<c:url context='${pageContext.request.contextPath}' value='/jstl/JstlDemo04.jsp'></c:url>">跳转2</a>
</body>
</html>
效果展示:
1.6 整合
将现有EmpProject项目进行整合,使用EL+JSTL替换脚本代码
码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识,点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。
最后
以上就是坚定超短裙为你收集整理的JSP——标准标签库 (JSTL)的全部内容,希望文章能够帮你解决JSP——标准标签库 (JSTL)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复