我是靠谱客的博主 坚定超短裙,最近开发中收集的这篇文章主要介绍JSP——标准标签库 (JSTL),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在这里插入图片描述

✅作者简介:热爱国学的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}&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.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)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部