zoukankan      html  css  js  c++  java
  • 十二、JSTL标签库

      1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
      2 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
      3 <%--
      4     JSTL学习:
      5         作用:在jsp页面使用其可以非常方便的进行数据的处理。较与使用java代码块方法,更加的简单,代码更加的简洁易读。
      6         使用:
      7             核心标签库
      8         流程:
      9             导入jar包
     10             引入标签库
     11                 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
     12         内容:
     13             基本标签:
     14                 out标签:<c:out value="${表达式}" default="默认值"></c:out>
     15                     作用:结合EL表达式将数据响应给浏览器,如果EL表达式没有取到数据则可以使用default属性声明默认值。
     16                 set标签: <c:set value="数据" var="键名" scope="作用域名"></c:set>
     17                     作用:将数据存储到指定的作用域中,默认是pageContext作用域
     18                     注意:
     19                         scope的值为:page  request  session  application
     20                 remove标签:<c:remove var="要删除数据的键名" scope="作用域名"/>
     21                     作用:删除作用域中的数据,默认是删除四个作用域中的符合要求的数据。
     22                         但是可以通过scope属性指明要删除的作用域数据。        
     23                     注意:
     24                         使用pageContext.removeAttriute("键名"),    此方法会将四个作用域中的符合要求的数据全部删除
     25                         使用pageContext.removeAttriute(String name,int scope)
     26                             指明要删除的作用域中的数据 scope的值为 1pageContext,2request ,3 session,4 application
     27                         使用request.removeAttibute("键名")         删除当前作用域符合要求的数据
     28                         使用session.removeAttibute("键名")               删除当前作用域符合要求的数据
     29                         使用application.removeAttibute("键名")        删除当前作用域符合要求的数据
     30             逻辑标签:
     31                 单分支判断标签:<c:if test="${表达式}">数据</c:if>
     32                     作用:可以根据el表达式进行一定程度的单分支逻辑判断。
     33                     注意:
     34                         test属性中书写的是EL表达式,或者说是EL表达式的逻辑表达式。
     35                         该标签只能进行EL表达式相关的逻辑判断。不能进行EL表达式不能获取的数据的逻辑处理
     36                 多分支判断标签:
     37                     <c:choose>
     38                         <c:when test="${表达式}"></c:when>
     39                         <c:when test="${表达式}"></c:when>
     40                         ..
     41                         <c:otherwise></c:otherwise>
     42                     </c:choose>
     43                     注意:
     44                         符合条件后只会执行一个分支,其他分支不会执行。
     45                 循环标签:
     46                     <c:foreach>
     47                         循环体
     48                     </c:foreach>
     49                     属性:
     50                         begin:声明循环的开始位置
     51                         end:声明循环的结束位置
     52                         step:声明循环的步长
     53                         varStatus:声明变量记录循环状态 ,例如变量名:i
     54                             注意:记录的数据存储到了作用域中可以直接使用El表达式进行获取
     55                             示例:   ${i.index}  获取当次循环的下标
     56                                   ${i.count}  获取当次循环的次数
     57                                   ${i.first}  判断是否是第一次循环
     58                                   ${i.last}         判断是否是最后一次循环
     59                         items:声明要遍历的数据,可以是集合和数组等
     60                             注意:要使用EL表达式来获取
     61                         var:声明变量记录每次遍历的结果。可以做循环体中使用使用EL表达式获取遍历出来的数据    
     62  --%>
     63  <h3>JSTL学习:</h3>
     64  <hr />
     65  <%
     66      request.setAttribute("str","jstl学习");
     67  %>
     68  <!------------------------------------- out标签学习 ------------------------------------------->
     69  <%=request.getAttribute("str") %>--${str}--<c:out value="${str}" default="我是out标签"></c:out>
     70  <br />
     71  <!------------------------------------------- set标签学习 ------------------------------------>
     72  <%
     73      request.setAttribute("s1","set标签学习");
     74     
     75  %>
     76  <c:set value="set标签学习2" var="s2" scope="request"></c:set>
     77  <c:set value="hello pageContext" var="hello" scope="page"></c:set>
     78  <c:set value="hello request" var="hello" scope="request"></c:set>
     79  <c:set value="hello session" var="hello" scope="session"></c:set>
     80  <c:set value="hello application" var="hello" scope="application"></c:set>
     81  ${s1}--${requestScope.s2}
     82  <br />
     83  <!-------------------------------- remove标签学习 ---------------------------------------------->
     84 <%-- <%
     85     pageContext.removeAttribute("hello",4);
     86      //request.removeAttribute("hello");
     87      //session.removeAttribute("hello");
     88  %>  --%>
     89 <c:remove var="hello" scope="request"/>
     90 ${hello}
     91  <br />
     92 <!-------------------------------------- 单分支判断标签 ------------------------------------------->
     93 <c:set var="a" value="12"></c:set>
     94 <%
     95     int b=4;
     96     int a=Integer.parseInt((String)pageContext.getAttribute("a"));
     97     if(a>8){
     98 %>
     99     <b>今天天气真好,适合学习1</b>
    100 <%} %>
    101 <c:if test="${a>8}">
    102     <b>今天天气真好,适合学习2</b>
    103 </c:if>
    104  <br />
    105 <!----------------------------------------多分支逻辑判断  ---------------------------->
    106 <c:set var="score" value="40"></c:set>
    107 <c:choose>
    108     <c:when test="${score>=90}">
    109         <i>奖励苹果电脑一台</i>
    110     </c:when>
    111     <c:when test="${score<90&&score>=80}">
    112         <i>奖励苹果手机一部</i>
    113     </c:when>
    114     <c:when test="${score>=70&&score<80}">
    115         <i>无奖励无惩罚</i>
    116     </c:when>
    117     <c:otherwise>
    118         <i>男女混合双打</i>
    119     </c:otherwise>
    120 </c:choose>
    121  <br />
    122 <!-----------------------------------------循环标签  ------------------------------------------------->
    123 <c:forEach begin="0" end="5" step="1" varStatus="i">
    124     <c:if test="${i.count==3}">
    125         <u>我是第三次循环</u>
    126     </c:if>
    127     11111--${i.index}--${i.count}--${i.first}--${i.last}<br />
    128 </c:forEach>
    129 
    130 <!--------------------------------------- 遍历List集合 ---------------------------------------------->
    131 <%
    132     //创建测试数据list
    133     ArrayList<String> list=new ArrayList<String>();
    134     list.add("苹果");
    135     list.add("榴莲");
    136     list.add("荔枝");
    137     //将list存储到作用域中
    138     request.setAttribute("list",list);
    139     
    140 %>
    141 <c:forEach items="${list}" var="s" varStatus="i">
    142     ${s}--${i.index}--${i.count}<br />
    143 </c:forEach>
    144 <!-----------------------遍历map集合  ----------------------------------------------->
    145 <%
    146     //声明Map集合测试数据
    147     HashMap<String,String> hs=new HashMap<String ,String>();
    148     hs.put("s1","唱歌");
    149     hs.put("s2", "跳舞");
    150     hs.put("s3", "敲代码");
    151     //将数据存储到作用域中
    152     request.setAttribute("hs", hs);
    153 %>
    154 <c:forEach items="${hs}" var="s">
    155     ${s.key}--${s.value}<br />
    156 </c:forEach>
  • 相关阅读:
    java中this()、super()的用法和区别
    线段树基础操作
    普通平衡树的基础操作
    简单dp问题汇总
    欧拉线性筛法打表素数
    单调队列与dp的关系
    最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
    常用chrome扩展程序
    各种数据类型的字节数
    排查mysql的奇怪问题
  • 原文地址:https://www.cnblogs.com/qiaoxin11/p/12925702.html
Copyright © 2011-2022 走看看