多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 简介 JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能。jstl出现的目的同el一样也是要代替jsp页面中的脚本代码。JSTL标准标准标签库有5个子库,但随着发展,目前常使用的是他的核心库 | 标签库 | 标签库的URL | 前缀 | | --- | --- | --- | | Core | http://java.sun.com/jsp/jstl/core | c | | I18N | http://java.sun.com/jsp/jstl/fmt | fmt | | SQL | http://java.sun.com/jsp/jstl/sql | sql | | xml | http://java.sun.com/jsp/jstl/xml | x | | Functions | http://java.sun.com/jsp/jstl/functions | fn | # JSTL下载与导入 JSTL下载: 从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指令导入核心标签库 ~~~ <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> ~~~ # JSTL核心库的常用标签 1)<c:if test=””>标签 其中test是返回boolean的条件 ~~~ <!-- test表示boolean表达式的结果 --> <c:if test="1==1"> 1 </c:if> ~~~ ~~~ <% request.setAttribute("count", 10); %> <!-- jstl标签经常会和el配合使用 --> <!-- test代表的返回boolean的表达式 --> <c:if test="${count==10 }"> xx </c:if> ~~~ 2)<c:forEach>标签 使用方式有两种组合形式 ~~~ <!-- forEach模拟 for (int i=0; i<5; i++) { syso(i); } --> ~~~ ~~~ <c:forEach begin="0" end="5" var="i"> ${i} <br /> </c:forEach> ~~~ ~~~ <!-- 模拟增强for productList---List<Product> for(Product product : productList) { syso(product.getPname()); } --> <!-- 这是域中取的 --> <!-- items:一个集合或数组 var:代表集合中的某一个元素 <c:forEach items="${productList }" var="pro"> ${pro.pname} </c:forEach> --> ~~~ 示例: 1)遍历`List<String>`的值 2)遍历`List<User>`的值 3)遍历`Map<String,String>`的值 4)遍历Map<String,User>的值 5)遍历Map<User,Map<String,User>>的值 entry.key-----User entry.value------List<String,User> ~~~ <% //模拟List<String> strList List<String> strList = new ArrayList<String>(); strList.add("1111"); strList.add("222"); strList.add("333"); strList.add("444"); request.setAttribute("strList", strList); //遍历List<User>的值 List<User> userList = new ArrayList<User>(); User user1 = new User(); user1.setId(2); user1.setName("lisi"); user1.setPassword("123"); userList.add(user1); User user2 = new User(); user2.setId(3); user2.setName("wangwu"); user2.setPassword("123"); userList.add(user2); application.setAttribute("userList", userList); //遍历Map<String,String>的值 Map<String,String> strMap = new HashMap<String,String>(); strMap.put("name", "lucy"); strMap.put("age", "18"); strMap.put("addr", "西三旗"); strMap.put("email", "lqqdwdwd2cn"); session.setAttribute("strMap", strMap); //遍历Map<String,User>的值 Map<String,User> userMap = new HashMap<String,User>(); userMap.put("user1", user1); userMap.put("user2", user2); request.setAttribute("userMap", userMap); %> <h1>取出strList的数据</h1> <c:forEach items="${strList }" var="str"> ${str }<br/> </c:forEach> <h1>取出userList的数据</h1> <c:forEach items="${userList}" var="user"> user的name:${user.name }------user的password:${user.password }<br/> </c:forEach> <h1>取出strMap的数据</h1> <c:forEach items="${strMap }" var="entry"> ${entry.key }====${entry.value }<br/> </c:forEach> <h1>取出userMap的数据</h1> <c:forEach items="${userMap }" var="entry"> ${entry.key }:${entry.value.name }--${entry.value.password }<br/> </c:forEach> ~~~