JSTL 标签库

1、什么是JSTL 标签库
                JSTL 是apache 对EL 表达式的扩展(也就是说JSTL 依赖EL), JSTL 是标签语言!JSTL 标签使用以来非常方便,它与JSP 动作
        标签一样,只不过它不是JSP 内置的标签,需要我们自己导包,以  及指定标签库而已!
                如果你使用MyEclipse 开发JavaWeb,那么在把项目发布 到Tomcat 时,你会发现,MyEclipse 会在lib 目录下存放jstl 的
        Jar 包!如果你没有使用MyEclipse 开发那么需要自己来导入这个 JSTL 的Jar 包:jstl-1.2.jar。

2、JSTL 标签库的作用
                用来提升在JSP 页面的逻辑代码的编码效率,使用标签来替换逻辑代码的直接书写,高效,美观,整洁,易读。
3、使用JSTL 标签库
        a) 内容:
            i. 核心标签库(学习)
            ii. 格式化标签库(了解)
            iii. 函数标签库(了解)
            iv. XML 标签库(了解)
            v. SQL 标签库(了解)
b) 使用:
            i. 导包
            ii. 使用taglib 标签引入资源
            iii. 核心标签库
            iv.格式化标签库

学习网址:http://www.runoob.com/jsp/jsp-jstl.html

 

    <%--  
         JSTL学习:
                 提高jsp中逻辑代码的编写效率,使用标签。
         
         使用:
             JSTL的核心标签库(重点)
             JSTL的格式化标签库    (讲解)
             JSTL的SQL标签库    (了解)
             JSTL的函数标签库    (了解)
             JSTL的XML标签库    (了解)
             
         JSTL的核心  标签库:
             1、导入jar包
             2、声明jstl 标签库的引入(核心标签库)
                 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>    (必须有,才能引入特有的标签)
             3、内容:
                 基本标签:
                     <c:out value="数据" default="默认值"></c:out>
                         数据可以为常量值  也可以是EL 表达式。
                         作用:将数据输出给客户端;
                     <c:set var="hello"    value="hello pageContext" scope="page"></c:set>
                         作用:存储数据到作用域对象中
                         var: 表示存储的键名
                         value:表示存储的数据
                         scope: 表示存储的作用域对象 page  request session application
                      <c:remove var="hello" scope="page"/>
                          作用:删除作用域中指定的数据
                        var:表示要删除的键的名字
                        scope:表示要删除的作用域(可选)
                        注意:
                            如果在不指定作用域的情况使用该标签删除数据,会将四个作用域对象中的符合要求的数据全部删除。   

<%request.setAttribute("str", "今天是个好天气"); %>
 <%
	// request.setAttribute("hello", "hello  request");
 %>
 <h3>基本标签学习</h3>
  <hr>
 <c:out value="哈哈"></c:out>
 <c:out value=",${str }"></c:out>
 
 <c:set var="hello"	value="hello pageContext" scope="page"></c:set>
  <c:set var="hello"	value="hello request" scope="request"></c:set>
   <c:set var="hello"	value="hello session" scope="session"></c:set>
    <c:set var="hello"	value="hello application" scope="application"></c:set>
     
 <c:out value="${requestScope.hello }"></c:out>
 
 <c:remove var="hello" scope="page"/>
 <c:out value="${hello }"></c:out>
 <hr />

    逻辑标签:
            <c:if test="${表达式}">
                前端代码:
            /c:if>        
            
            作用:进行逻辑判断,相当java代码的单分支判断
            注意:
                逻辑判断边标签需要依赖于EL 的逻辑运算,也就涉及到数据必须从作用域中获取;使用c:set 可以进行赋值。

<c:choose>
        <c:when test="">执行内容</c:when>
        <c:when test="">执行内容</c:when>
        ...
        <c:otherwise>执行内容</c:otherwise>
    </c:choose>    
        作用:用来进行多条件的逻辑判断,类似java中的多分支 语句
        注意:
            条件成立只会执行一次,都不成立则执行otherwise

 <h3>逻辑标签学习</h3>
 <!-- 传统方式 -->
 <%
 	int a = 4;
 if(a>3){	%>
	 <b>今天的天气贼棒</b>
 <% }
 %><br />
 <!-- jstl 方式 -->
 <c:set var="a" value="4"></c:set>
 <c:if test="${a>3 }">
 	<b>今天的天气贼棒</b>
 </c:if><br />
 
 <c:set var="score" value="55"></c:set>
 <c:choose>
 	<c:when test="${score > 90 }">
 		<i>奖励吃鸡装备一套</i>
 	</c:when>
 	<c:when test="${score >= 80 && score <90 }">
 		<i>奖励空投箱</i>
 	</c:when>
 	<c:when test="${score >70 && score <80 }">
 		<i>奖励8倍镜子</i>
 	</c:when>
 	<c:otherwise>
 		<i>被淘汰</i>
 	</c:otherwise>
 </c:choose>

 

 


                循环标签:
                        <c:forEach begin="1" end="4" step="2">
                            循环体
                        </c:forEach>
                    作用:
                        循环内容处理
                    使用:
                        begin:循环开始位置
                        end: 循环结束位置
                        step: 设置步长(自增  数)
                        vsStatus:声明变量记录每次循环的数据(角标,次数,是否是第一次循环,是否是最后一次循环)
                            注意:
                                数据存储在作用域中,需要使用EL 表达式获取
                                    例如:111----${vs.index }----${vs.count }----${vs.first }----${vs.last }<br />
                        
                        items:声明要遍历的对象,结合EL 表达式获取对象
                        var : 声明变量记录每次循环的结果,存储在作用域中,需要使用EL 表达式获取

<!-- 传统方式的表格 -->
 <table border="1px">
	<tr>
		<td>课程名称</td>
		<td>教师</td>
		<td>价格</td>
		<td>重要性</td>
	</tr>
	<%
		for(int i=0;i<3;i++){
	%>
	<tr>
		<td>java</td>
		<td>张老师</td>
		<td>不要钱</td>
		<td>非常重要</td>
	</tr>
	<%} %>



<!-- 使用JSTL 方式完成循环 -->
<!-- 常量循环 -->
<%-- 默认自增为1		step可设置自增数	 --%>
<c:forEach begin="0" end="4" step="1" varStatus="vs">
	 111----${vs.index }----${vs.count }----${vs.first }----${vs.last }<br />
</c:forEach>

<!-- 动态循环 -->
<% 
	ArrayList<String> list = new ArrayList<String>();
	list.add("a");
	list.add("b");
	list.add("c");
	list.add("d");
	request.setAttribute("list", list);
	HashMap<String,String> map=new HashMap<String,String>();
	map.put("a1", "哈哈哈");
	map.put("b1", "嘿嘿");
	request.setAttribute("map",map);

%> 
<c:forEach items="${list }" var="str">
	 
	${str }<br />
</c:forEach>
 
 <!-- 创建表格数据 -->
  <table border="1px">
	<tr>
		<td>课程名称</td>
		<td>教师</td>
		<td>价格</td>
		<td>重要性</td>
	</tr>
	 <c:forEach items="${list }" var="s">
	 <tr>
		<td>${s }</td>
		<td>${s }</td>
		<td>${s }</td>
		<td>${s }</td>
	</tr>
	 </c:forEach>
	 
 

</table>
<!-- 遍历map 集合 -->
<c:forEach items="${map }" var="m">
	${m }---${m.key}<br />
</c:forEach>
 

 

转载于:https://my.oschina.net/u/3788977/blog/2222213

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值