JSTL-一套标准通用的标签库

JSTL标签库是为JavaWeb开发人员提供的一套标准通用的标签库,JSTL标签库和EL配合使用取代JSP中大部分的Java代码.
在使用JSTL标签库提供的标签之前,必须在JSP中通过taglib指令引入JSTL标签库(如果缺少JSTL库相关的jar,还需要提前导入jar包)
1、导入JSTL的jar包(因为不是sun公司提供的,所以要导包)


2、引入JSTL库
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
其中常用的标签如下:

1、 -- 往四大作用域中添加域属性,或者修改四大作用域中已有的属性

(1)往四大作用域中添加一个域属性
(2)修改四大作用域中已有的属性
如果重复添加相同的属性,值会发生覆盖,相当于修改.
(3)修改作用域中Map集合中的属性

1.c:set标签

(1)往域中添加一个域属性

${name}

(2)修改域中已有的域属性

${name}

(3)修改域map集合中的域属性

<% Map map=new HashMap(); map.put("name", "翠花"); map.put("age","18"); map.put("nickname", "小花"); request.setAttribute("person", map); for(Map.Entry e:map.entrySet()) { out.println(e.getKey()+" "+e.getValue()); } %>
修改前 ${person.name } ${person.age } ${person.nickname }
修改后 ${person.name } ${person.age } ${person.nickname }

c_set标签属性总结:
(1)var – 指定存入域中属性的名称
(2)value -- 指定存入域中属性的值
(3)scope – 指定将属性存在哪一个域中, 可取值:
page – 表示pageContext域
request – 表示requeset域
session – 表示session域
application – 表示ServletContext域
(4)target – 指定修改域中的哪一个集合,比如: (5)property – 指定修改域中集合中的哪一个属性

2、 -- 构造if…else…语句

yes
no

判断用户是否登录

2.c:if标签

yes no
<% session.setAttribute("user", "李世石"); //session.invalidate(); %> 您好,请登录 欢迎,${user}回来。。。

test属性用于指定判断的条件,注意:JSTL中没有提供else对应的标签

3、 -- 对集合或数组等中元素进行循环遍历或者是执行指定次数的循环.

(1)遍历域中数组或集合中的元素
(2)遍历域中map集合中的元素
(3)打印1~100之间的奇数,并指定间隔符号
(4)打印1~100之间的奇数并指定间隔符号,并将位置是3的倍数的数值指定颜色为红色.

3.c:forEach标签

循环的作用:
1.遍历数组或者是集合中的数据
2.执行指定次数的循环

(1)遍历域中的数组或者集合中的元素

<% List list=new ArrayList(); list.add("篮球"); list.add("足球"); list.add("网球"); list.add("毽球"); application.setAttribute("list",list); for(String o:list){ out.println(o); } %>
${o}

(2)遍历域中的map集合中的元素

把map看成set,set里面是entry,entry里面是key和value 法一: ${entry.getKey() }:${entry.getValue()}

法二: ${entry.key}:${entry.value}

(3)打印1-100之间的数,使用逗号分隔

<%for(int i=1;i<=100;i++){out.println(i+",");} %>
${i},

(4)打印1-100之间的奇数,使用逗号分隔,将位置是3的倍数的数值设置颜色为红色

<%for(int i=1,count=1;i<=100;i=i+2,count++){ if(count%3==0){ out.println(""+i+","); }else{ out.println(""+i+","); } } %>

varStatus="status"用于指定表示循环状态信息的对象,通过该对象可以获取如下内容
first--Boolean,当前被遍历元素是否是第一个
last--Boolean,当前被遍历元素是否是最后一个
count--数值,表示当前被遍历的元素是第几个
index--索引,当前被遍历的索引值(索引值+i)

style="color:red" > ${i},
处理逗号问题 style="color:red" > ${i} ,

运行结果

3.c:forEach标签
循环的作用:
1.遍历数组或者是集合中的数据
2.执行指定次数的循环

(1)遍历域中的数组或者集合中的元素
篮球 足球 网球 毽球
篮球 足球 网球 毽球
(2)遍历域中的map集合中的元素
法一: name:霸王花
nickname:霸霸
age:20
法二: name:霸王花
nickname:霸霸
age:20
(3)打印1-100之间的数,使用逗号分隔
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 
(4)打印1-100之间的奇数,使用逗号分隔,将位置是3的倍数的数值设置颜色为红色
1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 
varStatus="status"用于指定表示循环状态信息的对象,通过该对象可以获取如下内容
first--Boolean,当前被遍历元素是否是第一个
last--Boolean,当前被遍历元素是否是最后一个
count--数值,表示当前被遍历的元素是第几个
index--索引,当前被遍历的索引值(索引值+i)

1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 
处理逗号问题 1 , 3 , 5 , 7 , 9 , 11 , 13 , 15 , 17 , 19 , 21 , 23 , 25 , 27 , 29 , 31 , 33 , 35 , 37 , 39 , 41 , 43 , 45 , 47 , 49 , 51 , 53 , 55 , 57 , 59 , 61 , 63 , 65 , 67 , 69 , 71 , 73 , 75 , 77 , 79 , 81 , 83 , 85 , 87 , 89 , 91 , 93 , 95 , 97 , 99 

你可能感兴趣的:(JSTL-一套标准通用的标签库)