1.0 JSTL的下载
JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,是由apache的jakarta小组来维护的。JSTL只能运行在支持JSP1.2和Servlet2.3规范的容器上。
2.0 搭建开发环境
-
Dependencies provided by a JSP 2.1 container:
Java 1.5 or later
Servlet 2.5 or later
JSP 2.1 or later
-
Additional dependencies
- The XML tag library requires Apache Xalan 2.7.1 or later
-
Add the following JARfiles to the '/WEB-INF/lib' directory of your application:
taglibs-standard-spec-1.2.1.jar
taglibs-standard-impl-1.2.1.jar
taglibs-standard-jstlel-1.2.1.jar
xalan-2.7.1.jar
serializer-2.7.1.jar
3.0 引入对应的JSTL Tag Libraries
核心标签库的引入:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
4.0 核心标签库
4.1
属性说明:
value:必须,值会输出到页面。可以是表达式或字符串。
escapeXml:非必须,值可以是true/false,默认是true。默认情况下以下字符原样输出,也就是不当html解析,如果设置为false就会转为相应的html实体。
default:非必须,设置默认值,当value的值是null时,输出。
示例:
4.2
(1). 给page/request/session/application内置对象的属性赋值
"page.jsp?usernaem=liSi">set标签测试
page.jsp
说明:如果var属性的值在request范围内存在,那么会在request对象中创建这个属性,并赋值。
<%=request.getAttribute("aa") %>
(2). 给page/request/session/application内置对象的属性赋值,与 1) 的区别把value属性的值放在标签中。
<%=request.getAttribute("aa") %>
(3). 给javaBean属性赋值
引入类:
<%@ page import="com.zheting.it.vo."* %>
实例化对象:
<% Person person = new Person(); %>
修改对象的值:
(4). 给javaBean属性赋值
引入类:
<%@ page import="com.zheting.it.vo."* %>
实例化对象:
<%
Person person = new Person();
pageContext.setAttribute("kk", person);
%>
修改对象的值:
(5). 给javaBean属性赋值
说明:value 属性的值可以写在标签体中。
4.3
4.4
4.5
var属性用来存储test属性比较的结果,即true/false。
语法一只是为了得到比较结果时使用,标签体中没有要执行的内容。
多个条件判断时,用and连接,注意返回false时不输出false,输出的是一个空字符串。
<%=pageContext.getAttribute("ff") %>
附:EL表达式中的操作符:
可以判断一个对象(如集合)或属性为null或空字符串””。
4.6
4.7
<%
String[] arr = {"a","b","c","d","e","f"}; //数组
pageContext.setAttribute("arr", arr);
List list = new ArrayList(); //List
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add("e");
list.add("f");
pageContext.setAttribute("list", list);
Map map = new HashMap();
map.put("a", "aa");
map.put("b", "bb");
map.put("c", "cc");
map.put("d", "dd");
map.put("e", "ee");
map.put("f", "ff");
pageContext.setAttribute("map", map);
%>
运行结果:
只输出偶数:
运行结果:
varStatus属性详细介绍:
varStatus属性是实现了接口:javax.servlet.jsp.jstl.core.LoopTagStatus
c:forEach varStatus属性
current当前这次迭代的(集合中的)项
index当前这次迭代从 0 开始的迭代索引
count当前这次迭代从 1 开始的迭代计数
first用来表明当前这轮迭代是否为第一次迭代的标志
last用来表明当前这轮迭代是否为最后一次迭代的标志
4.8
这个标签的作用就是把字符串按照指定的分隔符拆分,并循环。
运行结果:
items属性值得字符串,用delims属性值”,”分割,从索引2开始,到索引9(包括)结束,varStrtus的属性值中记录循环状态信息,其count属性是从1开始计数的,var属性值存储着当前循环得到的那个值。