JSP中许多自定义的标签库,已经由JCP的成员Apache定义好并已经打包。我们只需要导入该JAR包后,在页面中使用taglib指令将其导入即可使用。这套标签库称为JSTL(JSP Standard Tag libarary)即JSP标准标签库
JSTL中定义了五个标签库
核心标签库:主要用于完成基本的逻辑运算(重点)
格式化标签库:主要用于完成日期、数字的格式化显示
EL函数标签库:定义了若干个EL函数
SQL操作标签库:完成SQL操作(已经不使用,由java完成)
XML操作标签库:完成XML操作(已经不使用,由java完成)
上面是对JSTL简单了解,该博客主要写关于核心标签库,ok,先看下目录
博客目录
1、写JSTL的准备
2、核心标签库常用的标签
3、c:set
4、c:remove
5、c:catch
6、c:out
7、c:if
8、c:choose
9、c:forEach(重点)
一、写JSTL的准备
写JSTL之前需要导入两个jar包
jstl.jar
standard.jar
将以上两个jar包导入后,可以在standard.jar下的META-INF可以找到c.tld,在c.tld中都是核心标签库的自定义标签
taglib指令在核心标签库中的使用
使用JSTL核心标签库,需要在页面中通过taglib指令,将标签库导入
二、核心标签库常用的标签
c:set
c:remove
c:out
c:catch
c:if
c:choose
c:forEach
三、c:set
用于进行变量定义,并将变量存放到指定域属性空间,为Bean的属性赋值,设置Map的key与value
Beantest.java
package linjie.com;
public class Beantest{
private String name;
private int age;
public Beantest() {}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
index.jsp
Insert title here
name=${requestScope.name }
------------------------------
name=${be.name }
------------------------------
map=new HashMap();
pageContext.setAttribute("map", map);
%>
map=${map }
name=${map.name }
age=${map.age }
客户浏览器显示结果
四、c:remove
从域属性空间中删除指定变量
Insert title here
删除指定域空间中的指定变量
name_request=${requestScope.name }
name_page=${pageScope.name }
name_session=${sessionScope.name }
name_application=${applicationScope.name }
-----------------------------
删除所有域中的属性值
name_request=${requestScope.name }
name_page=${pageScope.name }
name_session=${sessionScope.name }
name_application=${applicationScope.name }
客户浏览器显示结果
五、c:catch
获取异常信息
Insert title here
ex=${ex.message }
客户浏览器显示结果异常
六、c:out
用于在页面上输出EL表达式的值
Insert title here
name1=
name2=
name3=${name }
客户浏览器显示结果
EL表达式不用就可以在页面上输出,使用< c:out/>好处就是:
可以控制是否解析HTML标签,还可以设定初始值(如下) Insert title here
name=
name=${empty name ? 'linjie' : name }
客户浏览器显示结果
七、c:if
用于实现对于条件的判断
Insert title here
成功执行...
客户浏览器显示结果
八、c:choose
进行选择
框架
一个简单分页DEMO(当前页为第一页,只有下一页、尾页可选)
Insert title here
首页 上一页 下一页 尾页
首页 上一页 下一页 尾页
首页 上一页 下一页 尾页
客户浏览器显示结果
九、c:forEach
用于循环遍历数组、list、set、map集合
1、简单遍历数组、map、set、list
Insert title here
-----------遍历list-------------
names=new ArrayList();
names.add("林杰");
names.add("linjie");
pageContext.setAttribute("names",names);
%>
${name }
-----------遍历set-------------
schools=new HashSet();
schools.add("浙大");
schools.add("北大");
pageContext.setAttribute("schools", schools);
%>
${school }
-----------遍历map------------
maps=new HashMap();
maps.put("name", "林杰");
maps.put("address", "浙江");
pageContext.setAttribute("maps", maps);
%>
${map }
------------遍历数组 int[]
${age }
客户浏览器显示结果
2、begin、end、step用法
Insert title here
names=new ArrayList();
names.add("林杰");
names.add("linjie");
names.add("luxy");
names.add("king");
names.add("bbbb");
pageContext.setAttribute("names",names);
%>
${name }
---------------------------------
${num }
客户浏览器显示结果
3、高级功能(表格处理)
Insert title here
be=new ArrayList();
be.add(new Beantest("林杰",20));
be.add(new Beantest("aa",21));
be.add(new Beantest("bb",22));
be.add(new Beantest("cc",23));
pageContext.setAttribute("be", be);
%>
序号
姓名
年龄
${vs.count }
${b.name }
${b.age }
客户浏览器显示结果