1 <%@page import="cn.woo.entity.Person"%>
2 <%@page import="java.util.List"%>
3 <%@page import="java.util.ArrayList"%>
4 <%@ page language="java" contentType="text/html; charset=UTF-8"
5 pageEncoding="UTF-8"%>
6 <!--
7 使用@taglib 指令引入标签库
8 uri:为标签库的地址【此处使用的是jsp的标准标签库,里面标签还有很多此处不一一演示】
9 prefix:自定义的标签前缀,使用的时候需要写该前缀
10 -->
11 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
12
13 <!--
14 ========================================================================================
15 其他jstl有关的标签库和函数库,可自行查询每个库中标签的使用方式【也可以借助Eclipse中的提示功能查看各个库中的标签以及标签的属性】
16 ========================================================================================
17 -->
18 <!-- jstl的fmt格式化标签库 -->
19 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
20 <!-- jstl的fn方法库:包含了向字符串截取等方法 -->
21 <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
22 <!-- jstl关于sql方面的标签库:包含了操作sql的标签-->
23 <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
24 <!-- jstl关于xml方面的标签库:包含了操作xml的标签-->
25 <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="xml"%>
26
27 <!-- ======================================================================================= -->
28 <%
29 // 创建Person集合
30 List<Person> persons = new ArrayList<Person>();
31 Person p1 = new Person("23","wpp");
32 Person p2 = new Person("24","waa");
33 persons.add(p1);
34 persons.add(p2);
35 // 要将数据放置在域中才能使用EL表达式获取展示,之前使用<jsp:use>行为创建的对象默认存放在page域对象中
36 request.setAttribute("personList", persons);
37
38 //后面演示set标签操作对象的时候使用
39 pageContext.setAttribute("p1", p1);
40 %>
41 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
42 <html>
43 <head>
44 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
45 <title>演示JSTL常用标签的使用</title>
46 </head>
47 <body>
48 <!-- out输出标签
49 default:[${ param.action }没有获取到数值的时候显示默认值]
50 escapeXml:对一些特殊字符进行编码如:'>' '<' '&'
51 -->
52 <c:out value="${ param.action }" default="没有action参数" escapeXml="true"></c:out>
53 <c:out value="${ '<>' }" default="默认数值" escapeXml="true"></c:out>
54
55 <!-- if标签
56 条件写在test属性中,字符串的比较直接使用==进行比较
57 -->
58 <c:if test="${ param.action == 'login' }">
59 <div>登陆面板</div>
60 </c:if>
61 <c:if test="${ param.action == homepage}">
62 <div>主页面</div>
63 </c:if>
64
65 <!-- 利用choose、when、otherwise 标签实现if else功能-->
66 <c:choose>
67 <c:when test="${ param.action == 'login'}">
68 <div>登陆面板</div>
69 </c:when>
70 <c:otherwise>
71 <div>非登陆面板</div>
72 </c:otherwise>
73 </c:choose>
74
75 <!-- 利用forEach标签 输出1~100之间的所有偶数
76 begin:起始位置
77 end:结束位置
78 step:遍历过程中每一次跳过的步数
79 var:设置当前遍历项的名称
80 items:被遍历的集合数据 如:${persons} ===>人员信息集合
81 varStatus:保存当前被遍历对象的信息【如:当前被遍历元素的索引等】
82 -->
83 <%-- <c:forEach begin="2" end="100" step="2" var="number" varStatus="">
84 <p>${ number }</p>
85 </c:forEach> --%>
86 <!-- 遍历Persons集合 -->
87 <c:forEach items="${ personList }" var="person" varStatus="objStatus">
88 <p>名称:${ person.name } 序号:${ objStatus.index }</p>
89 </c:forEach>
90
91 <!-- forTokens标签
92 和forEach标签的使用方式一样,都有items var varStatus begin end step 等属性
93 不同的是forEach标签的items中放置的是集合或者对象,而forTokens标签的items属性中放置的是字符串
94 它会将该字符串按照delims的值进行分割展示
95 -->
96 <c:forTokens items="aaa,bbb,ccc,ddd,eee" delims="," var="str">
97 <p>数值:${ str }</p>
98 </c:forTokens>
99
100 <!-- set标签
101 可以创建/修改 变量或者对象中的属性【前提条件是对象的属性拥有set方法】
102 scope:操作的变量放置的域/新创建的变量要放置的域 【page、request、session、application】
103 value:要设置的数值
104 var:【只能操作:Integer\Double\Float\String】类型不能操作javaBean和Map
105 property:被操作的对象的属性名称/或者map中的一个key
106 target:对象名称/或者map集合名称 【property和target常用来操作javaBean和Map============>只能用来操作已经存在的对象,不能创建对象】
107 -->
108 <!-- set创建变量,存放网站总访问次数,和当前客户端的访问次数 -->
109 <c:set scope="application" value="${ totalCount+1 }" var="totalCount"> </c:set>
110 <c:set scope="session" value="${ count+1 }" var="count"></c:set>
111 本站总访问人数:${ totalCount }<br>
112 您的访问次数为:${ count }<br>
113 <!-- set操作javaBean -->
114 <c:set value="更改后的名称" target="${ p1 }" property="name"></c:set>
115 <c:out value="${ p1.name }"></c:out>
116 </body>
117 </html>