JSTL标签

为什么是使用EL表达式
EL表达式封装了数据访问的功能,而JSTL标签库则封装了逻辑控制、循环控制以及数据格式化等功能,二者结合使用才能完整实现动态页面的开发需求
一、JSTL标签库简介
JSTL全称 JSP Standard  Tag Library,常被用来代替传统的Java片段语言来实现页面逻辑,与控制程序输出的EL表达式相结合,两者相辅相成。
二、JSTL标签库使用之前的准备
在使用JSTL标签之前,先要导入jstl.jar的包,如果是通过Maven创建项目的话,直接在pom.xml里添加依赖即可。还需要在JSP页面开头添加指令。uri是指tld文件中某个库的uri,prefix是指前缀,如果是c.tld库中的,一般写成c,可以区别包里相同的标签。然后就可以用如<c:out/>这样的格式调用标签了。
< %@ taglib  uri = "http://java.sun.com/jsp/jstl/core"   prefix = "c"  % >   
三、常用标签库的用法
1.核心标签库
1.1 通用标签
1.1.1 <c:out>
<c:out   value = "value"  [ escapeXml = "{true|false}" ] [ default = "defaultValue" ] />   
value值为显示的值,引号内可以写EL表达式,[ ]内属性为非必填属性,escapeXml的默认值为true,代表其中的标签就按照字符串显示,不按照标签语义进行显示,default为当value值为null时,显示的默认值。
1.1.2 <c:set>
<c:set   value = "value"   var = "name"  [ scope = "{page|request|session|application}" ] />   
把WEB域中某个属性key值为person的JavaBean对象的name属性值赋成value值。
1.1.3 <c:remove>
<c:remove   var = "person"   scope = "request" />   
移除某个域中的某个名为var的属性值
1.1.4<c:catch>
<c:catch   var = "exception" >   
< %  
    int  a  =  5  / 0;  
% >   
</c:catch>   
<c:out   value = "${exception}" />   
捕获异常。
1.2 条件标签
1.2.1 <c:if>
<span   style = "font-size:18px;" ><c:if   test = "${5 / 1 == 5}" >   
Body  
</c:if></span>   
test的中的表达式就相当于if()括号中的语句。Body就相当于test的值为true后执行的语句。
1.2.2 <c:choose>
1.2.3 <c:when>
1.2.3 <c:otherwise>
以上三个标签基本一起用,choose为父标签,作为选项的开始,每个when是一个选项,最后的其它就是otherwise。
基本语法:
<c:choose>   
     <c:when   test = "${5 / 1 == 1}" >   
     BodyA  
     </c:when>   
  <c:when   test = "${5 / 1 == 2}" >   
        BodyB  
     </c:when>   
      <c:otherwise>   
        BodyC  
     </c:otherwise>   
</c:choose>   
1.3 迭代标签
<c:forEach>
假设servlet将数据存在某个WEB域中,以下是两种容器迭代方式的代码:
< %  
     List <Person>   list  =  new  ArrayList <Person> ();  
     list.add(new Person("kkk"));  
     list.add(new Person("sss"));  
     list.add(new Person("jjj"));  
     application.setAttribute("list_1", list);  
     Map <String , Person >   map  =  new  HashMap <String , Person > ();  
     map.put("a", new Person("aaa"));  
     map.put("b", new Person("bbb"));  
     map.put("1", new Person("ccc"));  
     request.setAttribute("map", map);  
% >   
<c:forEach   items = "${list_1}"   var = "person"   begin = "0"   end = "2"   step = "1" >   
     ${person.name }  
</c:forEach>     
<c:forEach   items = "${map }"   var = "entry"   begin = "0"   end = "2"   step = "1" >   <!-- 遍历Map类对象,先转换为EntrySet,再遍历 -->   
    ${entry.key } ${entry.value.name } <br>   
</c:forEach>   
1.4 URL标签
1.41 <c:import>
<c:import url=""/>与<jsp:include page=""/>都是动态加载,但是import更灵活,可以加载WEBAPP范围外的url。
1.42 <c:redirect>
用于重定向到某个URL,语法格式:
<c:redirect   url = "value"  [ context = "context" ] />   
1.43 <c:url>
用于产生一个链接,语法格式:
<c:url   value = "" [ context = "" ] [ var = "" ] [ scope = "" />   

2.国际化标签库
2.1 <fmt:formatDate>  日期格式化
语法格式:
<fmt:formatDate   value = "<%=new Date() %>"   pattern = "yyyy年MM月dd日HH点mm分ss秒" />   
2.2 <fmt:formatNumber> 数字格式化
语法格式:
<fmt:formatNumber   value = "${5/3 }"   pattern = ".0000" />   
小数点保留四位
3.数据库标签库
3.1 <sql:setDataSource>  准备数据库
对于没有默认数据库的JSP页面,该标签能准备一个数据库以供使用。语法格式:
<sql:setDataSource   var = "demo"   driver = "com.mysql.jdbc.Driver"   url = "jdbc:mysql://localhost:3306/db"   user = "root"   password = "admin"   />   
var代表数据库的变量名,在稍后的查询将会用到
3.2 <sql:query>  查询数据库
在连接了数据库后,即可使用该标签执行SQL语句查询数据库。查询后的结果集存在rs中,然后用<c:forEach>标签遍历结果集的每一行记录。语法格式:
<sql:query   var = "rs"   dataSource = "${ demo}" >   
SELECT * FROM info  
</sql:query>   
<table>   
<c:forEach   items = "${rs.rows }"   var = "row"   varStatus = "s" >   
<span   style = "white-space:pre;" >   </span><tr>   
<span   style = "white-space:pre;" >       </span><td> ${s.index } </td>   
<span   style = "white-space:pre;" >       </span><td> ${row.name } </td>   
<span   style = "white-space:pre;" >       </span><td> ${row.age } </td>   
<span   style = "white-space:pre;" >   </span></tr>   
</c:forEach>   
</table>   
也可以将Body中的sql语句写到标签里面。
<sql:query   var = "rs"   dataSource = "${ demo}"   sql = "SELECT * FROM info" >   
3.3 <sql:update>  更新数据库
语法格式1:
<sql:update   var = "update"   sql = ""   dataSource = "${demo }" />   
语法格式2:
<sql:update   var = "update"   dataSource = "${demo }" >   
UPDATE info SET  age =? where  name =?  
<sql:param   value = "1" />   
<sql:param   value = "xxx" />   
</sql:update>   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值