首页 > 其他分享 >JSTL学习

JSTL学习

时间:2024-06-03 21:12:34浏览次数:19  
标签:name 标签 学习 JSTL User var password public

JSTL学习日记

jstl相当于c++上的stl , 当然不是说用法,只是意义上有很大的相似之处

//开始学习
//第一步 , 先下载并导入jstl的核心库(通过 <@% uri="路径" 去导入)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <%--通过taglib标签引入所需要的库--%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
      <head>
          <title>jstl的使用</title>
<%--          JSTL的使用流程
                1: 下载JSTL所需要的jar包(教程很好找,园子或者csdn上应该都有)
                    (standard.jar)
                     (jstl.jar)
                2: 将jar包导在web目录下的WEB-INF新建lib包,将jar包拷贝进去
                3: File -> project Structure -> Modules -> Dependencies -> + 将对应的lib目录加载进来
                4: 将需要使用的JSP页面通过taglib标签引入



--%>
      </head>
      <body>
       <%--相当于 if(){}else{}  , 比较类似 , 养成阅读代码的好习惯,不然你可能不清楚 <c 是什么东西--%>             
        <c:if test="${1 == 1}">
            HELLO JSTL
        </c:if>
      </body>
</html>
//初识if标签
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--引入核心库--%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
    <head>
        <title>if标签</title>
<%--        if标签
                格式
                    <c:if test="<boolean>" var="<string> scope="<string>" >
                    ......
                    </c:if>
                提示
                    无else
                    操作全部是域对象
                    若想要else的效果 , 设置两个相反的条件
                常用属性
                    test:条件判断 , 操作域对象 , Boolean类型 (必要属性)
                    var: 存放在作用域中的变量名 , 接受判断结果 (可选)
                    scope: 限域变量名的范围: (page , request , session , application) (同上)
               所需要的判断条件较少时选用if
--%>
    </head>
    <body>
        <%
            //设置数据
            request.setAttribute("num",10);
        %>
    <c:if test="${num > 0}">
        数值大于0
    </c:if>
<%--        起到else的效果--%>
    <c:if test="${num <= 0}">
        数值小于等于0
    </c:if>

    <c:if test="${num > 100}" var="flag" scope="request">
    </c:if>
    ${flag}-----${sessionScope.flag} (输出了空字符串)
    </body>
</html>
//choose标签 , 相当于switch  , when标签 , 相当于case , otherwise标签 , 相当于default
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--导入库--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
    <head>
        <title>三种类型使用</title>
            <%--
                choose , when , otherwise
                    格式:
                        <c:choose>
                            <c:when>
                                ....
                            </c:when>
                             <c:when>
                                ....
                            </c:when>
                             <c:when>
                                ....
                            </c:when>
                        </c:choose>
                    属性:
                        1:choose标签无属性
                        2:when必须要有test属性
                        3:otherwise标签无属性
                    提示:
                        1:choose标签中必须至少要有一个when.可以没有otherwise
                        2:choose标签中otherwise必须放在最后一个when后面
                        3:choose标签中只能设置when标签与otherwise标签
                        4:when标签和otherwise标签可以嵌套其他标签
                        5:otherwise标签会在所有的when标签不执行时才会执行
                        6:所需要的判断条件较多时使用choose标签


            --%>
    </head>
    <body>
        <%
            //设置数据
            request.setAttribute("score",80);
        %>
    <c:choose>
        <c:when test="${score < 60}">
            <h2>你个小渣渣</h2>
        </c:when>
        <c:when test="${score==60}">
            <h2>分不在高,及格就行</h2>
        </c:when>
        <c:when test="${score>60 && score < 80}">
            <h2>哎哟,不错哦</h2>
        </c:when>
        <c:otherwise>
            <h2>你很棒棒哦</h2>
        </c:otherwise>
    </c:choose>
    </body>
</html>
// 这部分的代码牵扯javabean  所以先新建一个User.java文件
// User.java
package org.example.po;
public class User {
    private Integer id;
    private String name;
    private String password;

    public User() {
    }
    public User(Integer id, String name, String password) {
        this.id = id;
        this.name = name;
        this.password = password;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}



//进行forEach学习
<%@ page import="org.example.po.User" %>
<%@ page import="java.util.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--引入标签库--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
    <head>
        <title>forEach标签</title>
    </head>
    <body>
        <%--  forEach
                    格式:
                        <c:forEach
                         items="<object>"
                         begin="<int>"
                         end="<int>"
                         step="<int>"
                         var="<string>"
                         varStatus="<string>"
                        >
                        </c:forEach>
             forEach varStatus:
                      属性:
                        index: 当前这次迭代从0开始的迭代索引
                        count: 当前这次迭代从1开始的迭代计数
                        first: 用来表明当前这次迭代是否为第一次迭代的标志
                        last:  用来表明当前这次迭代是否为最后一次迭代的标志

                      属性:
                        1:begin 开始数
                        2:end 结束数
                        3:step 间隔数
                        4:var 限域变量名 , 用来接受当前遍历的成员
                        5:items 要循环的数据 list 数组 map

                        1: 迭代内容多次:
                            <c:forEach begin="开始数" end="结束数" step="间隔数" var="限域变量名">
                            </c:forEach>
                            相当于Java中的for( int i=  0 ; i < 10 ; i++){}
                        2: 循环:
                            <c:forEach items="要被循环的数据" var="限域变量名">
                            </c:forEach>
                            相当于java中的foreach
                            for(String str : list){}
          --%>

<%--    迭代主体内容多次--%>
              
    <c:forEach var="i" begin="1" end="10" step="2">
        ${i} &nbsp;
    </c:forEach>
        <hr>
<%--    循环--%>
    <%
        //准备数据
        List<String> list = new ArrayList<>();
        for( int i = 0 ; i < 10 ; i++){
            list.add("A: " + i) ;
        }
        pageContext.setAttribute("list", list);

    %>
    <c:forEach var="str" items="${list}">
        ${str} &nbsp;
    </c:forEach>
    <hr>
        
    <table align="center" border="1" width="800px" style="border-collapse: collapse">
        <tr>
            <th>名称</th>
            <th>当前成员下标</th>
            <th>当前成员循环数</th>
            <th>是否第一次被循环</th>
            <th>是否最后一次被循环</th>
        </tr>
        <c:forEach items="${list}" varStatus="itemp" var="item">
            <tr>
                <td>${item}</td>
                <td>${itemp.index}</td>
                <td>${itemp.count}</td>
                <td>${itemp.first}</td>
                <td>${itemp.last}</td>
            </tr>
        </c:forEach>
    </table>
    <hr>
            
<%--    循环对象集合 , 别忘了新建User.java否则这段代码全部都是错误的--%>
    <%
        //导入数据
        List<User> userList = new ArrayList<User>();
        User user = new User(1 , "张三" , "123456");
        User user1 = new User(2 , "李四" , "123321") ;
        User user2 = new User(3 , "王五","654321") ;
        userList.add(user);
        userList.add(user1);
        userList.add(user2);
        //将数据设置到作用域中
        request.setAttribute("userList", userList);

    %>
<%--判断集合是否为空--%>
<%--    当集合不为空时--%>
    <c:if test="${!empty userList}">
        <%--  遍历      --%>
        <table align="center" width="800px" border="1" style="border-collapse: collapse">
            <tr>
                <th>用户编号</th>
                <th>用户名称</th>
                <th>用户密码</th>
                <th>操作</th>
            </tr>
            <c:forEach items="${userList}" var="user">
                <tr align="center">
                    <td>${user.id}</td>
                    <td>${user.name}</td>
                    <td>${user.password}</td>
                    <td><button>修改</button></td>
                </tr>
            </c:forEach>
        </table>
    </c:if>
<%--循环map--%>
        <%
            //准备数据
            Map<String, Object> map = new HashMap<>();
            map.put("map1","aaa") ;
            map.put("map2","bbb") ;
            map.put("map3","ccc") ;
            pageContext.setAttribute("map", map);
        %>
        <c:if test="${!empty map}">
            <c:forEach items="${map}" var="m">
                key: ${m.key} &nbsp;
                value ${m.value} &nbsp; <br>
            </c:forEach>
        </c:if>
    </body>
</html>


<%--格式化标签学习 , 简而言之 , 就是把参数原来的数据类型转换成一种因的数据类型 , 或是把现在的数据类型转换成原来的数据类型--%>
<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--引入格式化标签核心库--%>
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
  <head>
      <title>格式化动作标签</title>
  </head>
  <body>
<%--
      格式化动作标签
          formatNumber
          讲数值型转换成指定格式的字符串
            语法格式:
              <fmt: formatNumber
                  value="<string>"
                  type="<string>"
                  var="<string>"
                  scope="<string>"
               />
            常用属性:
              value: 要格式化的数值
              type: 要格式化的类型 : number: 数值(默认)  percent: 百分比 currency: 货币
              var: 限域变量名 , 用来接受格式化的结果
              scope: var属性的范围 (page request session application)
           提示:
              如果使用了var属性 , 标签不会输出结果 , 需要使用EL表达式使出结果

           formatDate标签
            将Date型的数据转化成指定格式的字符串
              格式:
                <fmt:formatDate
                    value="<string>"
                    type="<string>"
                    dateStyle="<string>"
                    timeStyle="<string>"
                    pattern="<string>"
                    timeZone="<string>"
                    var="<string>"
                    scope="<string>"
                    />
               属性:
                   value: 要格式化的日期
                   type: 格式化的类型
                          date: 日期型 年月日
                          time: 时间型 时分秒
                          both 日期时间型 年月日时分秒
                   dateStyle: 日期格式
                   timeStyle: 时间格式
                   pattern: 自定义模式 y M d H/h m s
                   timeZone:
                   var:
                   scope:


             parseNumber标签
                  将指定格式的数值字符串转换成数值型
                        格式:
                            <fmt:parseNumber
                                value="<string>"
                                type="<string>"
                                var="<string>"
                                scope="<string>"
                             />

               parseDate标签
                    将日期型的字符串转化成date类型
                          格式:
                              <fmt:parseDate
                                  value="<string>"
                                  type="<string>"
                                  dateStyle="<string>"
                                  timeStyle="<string>"
                                  pattern="<string>"
                                  var="<string>"
                                  scope="<string>"
                              />
--%>

  <fmt:formatNumber value="10" type="number" var="num" /> ${num} <br>
  <fmt:formatNumber value="10" type="percent" /> <br>
  <fmt:formatNumber value="10" type="currency" /> <br>
  <%-- 设置时区 --%>
  <fmt:setLocale value="en_US"/>
  <fmt:formatNumber value="10" type="currency" /> <br>
  <hr>
<%--  格式化日期--%>
  <%
    request.setAttribute("MyDate",new Date());
  %>
  ${MyDate}<br>
  <fmt:formatDate value="${MyDate}" /> <br>
  <fmt:formatDate value="${MyDate}" type="date" /> <br>
  <fmt:formatDate value="${MyDate}" type="time" /> <br>
  <fmt:formatDate value="${MyDate}" type="both"/> <br>
  <fmt:formatDate value="${MyDate}" type="both" dateStyle="FULL"/> <br>
  <fmt:formatDate value="${MyDate}" type="both" timeStyle="short"/> <br>
  <fmt:formatDate value="${MyDate}" pattern="yyyy-MM-dd hh:mm:ss"/> <br>
  <hr>
  <fmt:parseNumber value="100"/> <br>
  <fmt:parseNumber value="100" type="number" /> <br>
  <fmt:parseNumber value="100%" type="percent" /> <br>
  <fmt:parseNumber value="$10.00" type="currency" /> <br>
  <hr>
      <%--下面这两行代码本应该是显示时间的格式化代码, 但是会报500的错,显示时间不能被解析 , 恳请大佬们看看是为啥--%>
<%--  <fmt:parseDate value="2024-06-03" type="date" /> <br>--%>
<%--  <fmt:parseDate value="2024-06-03" pattern="yyyy-MM-dd" /> <br>--%>



  </body>
</html>
    

标签:name,标签,学习,JSTL,User,var,password,public
From: https://www.cnblogs.com/123456-BX/p/18229666

相关文章

  • 实战整体布局学习上
    1.```htmlindex1headermainfooter```2.```htmlindex1-页眉与页脚<!--中:搜索框--><divclass="search"><divclass="logo">JD</div><divclass="zoomiconfonticon-x......
  • c#学习-(委托的高级使用)
    一、多播委托(multicast)&&单播委托        一个委托内部封装不止一个方法usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Threading;namespacesix_multicast{internal......
  • 联邦学习研究方向及论文推荐(一)
    关于联邦学习的概念在网上资源丰富,但是考虑到有些同学在接触时缺少对研究方向细致了解而困恼,我根据一些综述论文博客等资料为大家做个易于理解的详细介绍。由于内容较多且分为两部分。目录Researchdirections(1)1.ModelAggregation2.Personalization3.Recommendersystem......
  • 2021新书Python程序设计 人工智能案例实践 Python编程人工智能基本描述统计集中趋势和
    书:pan.baidu.com/s/1owku2NBxL7GdW59zEi20AA?pwd=suov​提取码:suov我的阅读笔记:图像识别:使用深度学习框架(如TensorFlow、PyTorch)创建图像分类模型。探索迁移学习,使用预训练模型进行定制。自然语言处理(NLP):构建一个情感分析模型,用于分析文本中的情感。实现一个文本生成模型,......
  • python学习笔记-03
    流程控制1.顺序流程代码自上而下的执行。2.选择流程/分支流程根据在某一步的判断有选择的执行相应的逻辑。2.1单分支if语句if条件表达式: 代码 代码 ...2.2双分支if-else语句if条件表达式: 代码 代码 ...else:代码代码...2.3多分支if......
  • 持续性学习-Day17(MySQL)
    1、初识MySQLJavaEE:企业级Java开发Web前段(页面展示,数据)后端(连接点:连接数据库JDBC;链接前端:控制,控制反转,给前台传数据)数据库(存数据)1.1数据库分类关系型数据库(SQL):MySQL、Oracle、SqlServer、DB2、SQLlite通过表和表、行和列之间的关系进行数据的存储非关系型数......
  • 【机器学习】——驱动智能制造的青春力量,优化生产、预见故障、提升质量
    目录一.优化生产流程1.1数据收集1.2数据预处理1.3模型训练1.4优化建议1.5示例代码二.预测设备故障2.1数据收集2.2数据预处理2.3模型训练2.4故障预测2.5示例代码三.提升产品质量3.1数据收集3.2数据预处理3.3模型训练3.4质量提升3.5示例代码......
  • 孩子不爱学习,批评、催促、监督都没用,3步激发孩子的上进心
      有家长发愁说:我该如何教?三年级倒数第一?  孩子现在上三年级,成绩倒数,学习态度差,不愿多写一个字、多说一句话。写作业特别慢,写字特别丑,从上小学起就是这个状态。  在学校被老师批评、投诉、留堂后,家长开始也是苦口婆心好言相劝,但是反复多次教育,孩子就是不改。家......
  • 【计算机毕业设计】ssm719精品课程在线学习系统+jsp
    如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统精品课程学习信息管理难度大,容错率低,管理人员处理数据费工费时,所以专门为解决这个难题开发了一个精品课程在线学......
  • 设计模式学习(二)工厂模式——工厂方法模式+注册表
    目录工厂方法模式的瑕疵注册表工厂方法模式的瑕疵在前一篇笔记中我们介绍了工厂方法模式,示例的类图如下:考虑一种情况:现在要在程序运行时,根据外部资源,动态的实例化对象。也就是说在编译期我们无法知道要实例化的对象的类型。因此在实例化的过程中,就需要加以判断。例如,在我的例......