主页 > 软件开发  > 

JSP——标准标签库(JSTL)

JSP——标准标签库(JSTL)

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:JAVA开发者成长之路 ✨特色专栏:国学周更-心性养成之路 🥭本文内容:JSP——EL表达式 更多内容点击👇       JSP——EL表达式

本文目录 1.1 EL现有问题1.2 什么是JSTL1.3 JSTL的作用1.4 JSTL使用1.5 核心标签1.5.1 条件标签if判断1.5.2 多条件choose判断1.5.3 迭代foreach1.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 /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 /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 /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. .entity.User" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib uri="http://java.sun /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}&nbsp;&nbsp;${sta.first}&nbsp;&nbsp;${sta.last}&nbsp;&nbsp;${sta.count}&nbsp;&nbsp;${sta.index}</p> </c:forEach> </body> </html>

效果展示:

案例二代码:

<%@ page import="java.util.List" %> <%@ page import="java.util.ArrayList" %> <%@ page import="com.cxyzxc. .entity.User" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib uri="http://java.sun /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 /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)