• jstl核心标签库


    JSTL(jsp standard tag Library) jsp标准标签库,它是apache对el表达式的扩展,jstl与el结合可以完成更强大的功能。

           JSTL它是一种标签语言,它不是jsp内置标签,所以在使用JSTL需要导入相关的jar包。

    核心标签库一共有12个:

    标签名 功能 备注
    set    
    if    
    forEach    
    out    
    remove    
    redirect 用于重定向  
    choose when otherwise    
    forToken    
    url 和 param    
    catch    
    import    

    1、set标签:

    <body>
        <c:set scope="request" value="tom" var="name"></c:set>
        <%--上述jstl标签相当于是request.setAttribute("name","tom") --%>
        ${requestScope.name}
        <%--
            scope:域范围
            value:设置值
            var:设置的名称
        --%>
        <br>
        <%
            User user = new User();
            user.setUsername("fox");
            request.setAttribute("user", user);
        %>
    
        <c:set property="username" target="${user}" value="james" />
        ${user.username}
        <%--
            上述的jstl代码,相当于 从request域中获了到user对象, 并给user对象赋值username=james, 备注,User是一个实体类,
            user.setUser("james");
         --%>
    
    </body>

    2、if标签:

    <body>
        <c:if test="false">
                hello
            </c:if>
        <hr>
        <%
            request.setAttribute("a", 10);
            request.setAttribute("b", 20);
        %>
    
        <c:if test="${a>b}">   <!--这个地方不能写${a}>${b}, 也不能写${a>${b}}-->
            ${a }
        </c:if>
    
        <c:if test="${a<b}">
            ${b }
        </c:if>
        
        <%--    
            if标签必须有test属性,并且它的值必须是true/false
        --%>
    </body>

    3、forEach标签:

      c:forEach基本使用1
        <br>
        <c:forEach begin="1" end="10" var="n" step="1">
            ${n}<br>
        </c:forEach>
        <%--
            上述代码相当于是
            for(int n=1;n<=10;n++){
                out.println(n);
            }
            begin:循环开始变量
            end:循环结束变量
            var:定义一个变量,用于接收循环
            step:步长
         --%>
    
        <hr>
        c:forEach基本使用2
        <br>
        <c:forEach begin="1" end="10" var="n" step="1" varStatus="vs">
            ${n}--${vs.count }--${vs.index}--${vs.first}--${vs.last}--${vs.current}<br>
        </c:forEach>
        <%--
            varStatus它是用于记录循环状态,它是一个对象,可使用的属性有 
            count:用来记录循环的元素的个数
            index:用来记录所循环的容器中的元素的下标
            first:判断当前是否是第一个元素
            last:判断当前是否是最后一个元素
            current:代表当前循环的元素
         --%>
    </body>
    <body>
        c:forEach高级使用:
        <hr>
        <h1>遍历数组</h1>
        <%
            String[] st = { "aaa", "bbb", "ccc" };
            request.setAttribute("st", st);
        %>
        <c:forEach items="${st}" var="s" varStatus="vs">
            ${s}---${vs.index }<br>
        </c:forEach>
        <%--
            items:用于接收一个容器
            var:它是用于接收从容器中迭代出来元素
            上面代码相当于增强for循环
            for(String s:st){
            }
            
         --%>
        <hr>
        <h1>遍历List集合</h1>
        <%
            List<String> list = new ArrayList<String>();
            list.add("111");
            list.add("222");
            list.add("333");
            request.setAttribute("list", list);
        %>
        <c:forEach items="${list}" var="n">
            ${n}<br>
        </c:forEach>
        
        <hr>
        <h1>遍历Map集合</h1>
        <%
            Map<String,String> map=new HashMap<String,String>();
            map.put("one", "111");
            map.put("two", "222");
            request.setAttribute("map", map);
        %>
        <c:forEach items="${map}" var="entry">
            ${entry.key}--${entry.value}<br>
        </c:forEach>
        
        <%--
            对map集合遍历,它相当于是使用entrySet()方法遍历
            
            Set<Map.Entry<String,String>> entry=map.entrySet();
            for(Map.Entry<String,String> me:entry){
                me.getKey()  me.getValue():
            }
            
         --%>
    </body>

    4、out标签:

    <body>
          <%
              request.setAttribute("msg", "<font color='red'>hello world</font>");
          %>
        <c:out value="${msg}" default="good" escapeXml="true"/>
        
        <%--
            value:代表要输出的信息
            default:默认值
            escapeXml:它的值如果是false,信息会被浏览器解析,如果为true,代表信息原样输出。
         --%>
    </body>

    5、remove标签:

    <body>
        
        <%
            User user = new User();
            user.setUsername("fox");
            request.setAttribute("user", user);
        %>
    
        ${user}  <!-- 获取user并打印 -->
        <c:remove var="user" scope="request"/>
        <%--上述代码相当于  request.removeAttribute("user")--%>
        ${user}  <!-- 这里获取不到user,因为已经被删除了 -->
    </body>

    6、redirect标签:

    <body>
        <c:redirect context="/jstl" url="/demo1.jsp"/>
        <%--
            相当于response.sendRedirect("/jstl/demo1.jsp");
         --%>
    </body>

    7、choose when otherwise标签:

    <body>
        <%
            int day = 50;
            switch (day) {
            case 1:
                out.println("周1");
                break;
            case 2:
                out.println("周2");
                break;
            case 3:
                out.println("周3");
                break;
            case 4:
                out.println("周4");
                break;
            case 5:
                out.println("周5");
                break;
            case 6:
                out.println("周6");
                break;
            case 7:
                out.println("周7");
                break;
            default:
                out.print("无此天");
            }
        %>
        <hr>
        <%
            request.setAttribute("day", 50);
        %>
        <c:choose>
            <c:when test="${day==1}">周1</c:when>
            <c:when test="${day==2}">周2</c:when>
            <c:when test="${day==3}">周3</c:when>
            <c:when test="${day==4}">周4</c:when>
            <c:when test="${day==5}">周5</c:when>
            <c:when test="${day==6}">周6</c:when>
            <c:when test="${day==7}">周7</c:when>
            <c:otherwise>
                无此天
            </c:otherwise>
        </c:choose>
    </body>

    8、forToken标签:

    <body>
            <%
                request.setAttribute("str", "aa,bb,cc");
            %>
            <c:forTokens items="${str}" delims="," var="n">
                ${n}<br>
            </c:forTokens>
    </body>

    9、url 标签 和 param标签:

    <body>
           <c:url context="/jstl" scope="request" value="/hello" var="myurl">
               <c:param name="username" value="张三"></c:param>
           </c:url>
           ${requestScope.myurl}
           <%--
               content它相当于工程名
               scope:域范围
               value:访问的资源路径
               var:声明一个变量
            --%>
            
            <%--
                param就是描述参数
                它的优点是可以直接将汉字进行url编码
             --%>
    </body>

    10、catch标签:

    <body>
            <c:catch var="e">
                <%
                    int i=0;
                    int n=10/i;
                %>
            </c:catch>
            ${e}
    </body>

    11、import标签:

    <body>
            <c:import url="demo1.jsp"></c:import>
            <%--相当于include操作, 静态导入 --%>
    </body>
  • 相关阅读:
    Android中WebView如何加载JavaScript脚本
    Android中WebView如何加载JavaScript脚本
    Android中WebView如何加载JavaScript脚本
    Android如何使用SQLlite数据库
    Android如何使用SQLlite数据库
    Android如何使用SQLlite数据库
    __declspec(dllimport)的作用
    __declspec,__cdecl,__stdcall都是什么意思?有什么作用?
    #pragma pack(push,1)与#pragma pack(1)的区别
    #pragma pack(n) 的作用
  • 原文地址:https://www.cnblogs.com/daimajun/p/6582549.html
Copyright © 2020-2023  润新知