• jstl的if标签和forEach标签的解析


      今天上午学习了jstl的if标签和forEach标签(其它标签用的很少,所以没讲,只讲了这两个标签),然后通过代码练习了一下,现在总结。

       首先导入包从Apache的网站下载JSTL的JAR包。进入 “http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/”网址下载 JSTL的安装包。jakarta-taglibs-standard-1.1.2.zip,然后将下载好的JSTL安装包 进行解压,此时,在lib目录下可以看到两个JAR文件,分别为jstl.jar和standard.jar。 其中,jstl.jar文件包含JSTL规范中定义的接口和相关类,standard.jar文件包含用于 实现JSTL的.class文件以及JSTL中5个标签库描述符文件(TLD),将两个jar包导入我们工程的lib中

    然后使用jsp的taglib指令导入核心标签库prefix是前缀)。

      if标签:if标签由名字可以想到,它是判断标记,如果是true,则进入执行该标签语句,否则不执行。遗憾的是jstl并没有给我提供else的标签,所以我们只能写两个if标签作为判断

       if标签的格式:<c:if test="">xxxx</c:if> 如果test内容返回的是一个true,则向页面输出xxx,否则不执行。一般test内容为表达式,由于解析的问题,所以我们用el表达式。

     例子:   

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <c:if test="${1==1}"> 
            正确
        </c:if>
        <c:if test="${1!=1}"> 
            错误
        </c:if>
    </body>
    </html>

    运行结果:

       if标签的应用:一般应用在登录界面,如果你没登录就显示请登录、请注册,否则就显示你的用户名。比如天猫界面,这是未登录的:,登录的:,该实例在下篇博客。

      forEach:和java代码里的for循环相似,它有属性begin,end,从名字可以开出,该循环从begin开始,到end结束。

      实例:                            运行结果:

                                  

      因为forEach标签只是用来在jsp循环,不能从域取数据,而el可以在域中取数据,所以我们经常将二者一块用,能很方便的从域中取东西。

    示例:

    1)遍历List<String>的值

    2)遍历List<User>的值

    3)遍历Map<String,String>的值

    4)遍历Map<String,User>的值

    5)遍历Map<User,Map<String,User>>的值

    代码:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="bin.User"%>
    <%@ page import="java.util.*"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <!-- 模拟for循环语句输出i值
            for(int i=0;i<=5;i++){
                System.out.println(i);
            }
         -->
        <c:forEach begin="0" end="5" var="i">
            ${i}<br>
        </c:forEach>
        <% 
            //遍历List<String>的值
            List<String> l1 = new ArrayList<String>();
            l1.add("zhangbaiyi");
            l1.add("guqianwan");
            l1.add("yangyimao");
            application.setAttribute("l1", l1);
            //遍历List<User>的值
            User user1 = new User();
            user1.setUsername("zhangsan");
            user1.setPassword("123");
            User user2 = new User();
            user2.setUsername("lisi");
            user2.setPassword("123");
            User user3 = new User();
            user3.setUsername("wangwu");
            user3.setPassword("123");
            List<User> list = new ArrayList<User>();
            list.add(user1);
            list.add(user2);
            list.add(user3);
            application.setAttribute("list", list);
            //遍历Map<String,String>的值
            Map<String,String> Map = new HashMap<String,String>();
            Map.put("name","zhangsan");
            Map.put("sex","male");
            Map.put("old","20");
            Map.put("minzu","han");
            application.setAttribute("Map", Map);
            //遍历Map<String,User>的值
            Map<String,User> userMap = new HashMap<String,User>();
            userMap.put("user1",user1);
            userMap.put("user2", user2);
            userMap.put("user3",user3);
            application.setAttribute("userMap", userMap);
            //遍历Map<User,Map<String,User>>的值
            Map<User,Map<String,User>> UserMap =  new HashMap<User,Map<String,User>>();
            UserMap.putIfAbsent(user1,userMap);
            UserMap.putIfAbsent(user2,userMap);
            UserMap.putIfAbsent(user3,userMap);
            application.setAttribute("UserMap",UserMap);
        %>
        <hr>
        <c:forEach items="${l1}" var="str">
            ${str}<br>
        </c:forEach>
        <hr>
        <c:forEach items="${list}" var="user">
            ${user.username}--------${user.password}<br>
        </c:forEach>
        <hr>
            <c:forEach items="${Map}" var="entry">
            ${entry.key}------${entry.value}<br>
        </c:forEach>
        <hr>
        <c:forEach items="${userMap}" var="entry">
            ${entry.key}------${entry.value.username}------${entry.value.password}<br>
        </c:forEach>
        
        <hr>
        <c:forEach items="${UserMap}" var="UserMap">
            用户名:${UserMap.key.username}-----密码:${UserMap.key.password}<br>
            <c:forEach items="${UserMap.value}" var="userMap">
                用户:${userMap.key}-----用户名:${userMap.value.username}------密码:${userMap.value.password}<br>
            </c:forEach>
            
        </c:forEach>
    </body>
    </html>

    运行结果:

    总结:if和forEach语句很好掌握,当一定要敲,刚学完觉得很简单,但是实践就会出现问题,让问题浮出水面,然后解决!每天学习一点java,每天进一步!

    如果有大佬发现错误,请留言指出,感谢,向您学习

     

         

  • 相关阅读:
    CAN总线布线规范
    使用make_ext4fs时报错,No such file or directory
    安装arm-2009q3交叉编译器后,执行No such file....
    Busybox下make menconfig报错处理!
    解决Markdown转为PDF后,尖括号不能正确显示问题。
    开发板与PC直连 交叉、直连网线做法
    BusyBox tftp使用
    STM32的flash数据页转存过程分析!
    c语言中log函数的使用!
    POJ 3667 Hotel
  • 原文地址:https://www.cnblogs.com/yangxiao-/p/12005046.html
Copyright © 2020-2023  润新知