jsp标签的分类
1)内置标签(动作标签):不需要在jsp页面导入标签.
2)jstl标签:需要在jsp页面导入标签,通过taglib指令.
3)自定义标签:开发者自行定义,也需要在jsp页面导入相应自定义标签
jstl标签库
jstl标签库(Java standard tag libray),Java标准标签库,SUN公司设计了超多标签供我们使用,从而减少jsp页面中的jsp脚本.
分类
1)核心标签库(c标签库),开发者使用最多,很重要.
2)国际化标签库(fmt标签)
3)EL函数库(fn函数库)
4)xml标签库(x标签)
5)sql标签库(sql标签库)
使用jstl标签库步骤
1)导入jstl支持的jar包(也就是标签背后隐藏的Java代码).其实现在使用JavaEE5.0或者JavaEE6.0,创建项目时都会自动导入jstl标签库对应的jar包.
2)通过taglib指令导入标签库,需要什么标签就导入什么标签.
<%@taglib uri="tld文件的uri名称" prefix="前缀" %>
3)最后就是使用标签了.
核心标签库(c标签库)
常用的c标签及作用
<%--使用C标签
保存数据
<c:set></c:set>
获取数据
<c:out value=""></c:out>
单条件判断
<c:if test=""></c:if>
多条件判断
<c:choose></c:choose>
<c:when test=""></c:when>
<c:otherwise></c:otherwise>
循环数据
<c:forEach></c:forEach>
<c:forTokens items="" delims=""></c:forTokens>
重定向
<c:redirect></c:redirect>
--%>
使用C标签前奏
导入C标签库
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
uri和prefix的写法参照Java EE 5 Libraries-->jstl-1.2.jar-->META-INF-->c.tld文件里面的这两行代码:
<short-name>c</short-name>
<uri>http://java.sun.com/jsp/jstl/core</uri>
使用C标签
1)set-->保存数据
<%--set标签:保存数据到域中(默认数据保存到page域中) --%>
<c:set var="name" value="bighuan" scope="request"></c:set>
EL表达式取值:${requestScope.name }
<br/>
2)out-->获取数据
<%--
out标签:从域中获取数据
default:当value里的值为null,使用default里的默认值
escapeXml:是否对value的内容进行转义,默认转义;为true,value转义原样输出,比如输出"<h4>标题</h4>",而为false时,不对value
内容进行转义,输出"标题"
--%>
<%
String age=null;
pageContext.setAttribute("age", age);
%>
${age }<br/>
out标签取值:<c:out value="${age }" default="20"></c:out><br/>
<c:out value="${age }" default="<h4>标题</h4>" escapeXml="false"></c:out>
3)if-->单条件判断(没有else效果)
<%--if标签:单条件判断 --%>
<c:if test="${empty age }">
条件成立!
</c:if>
结果为:条件成立!
4)多条件判断(choose--when--otherwise)
<%--多条件判断 :choose+when+otherwise,三个一起使用实现if else效果--%>
<c:set var="score" value="60"></c:set>
<c:choose>
<c:when test="${score>=90 && score <=100 }">
优秀
</c:when>
<c:when test="${score>=80 && score <90 }">
良好
</c:when>
<c:when test="${score>=70 && score <80 }">
一般
</c:when>
<c:when test="${score>=60 && score <70 }">
及格
</c:when>
<c:otherwise>
不及格
</c:otherwise>
</c:choose>
结果:良好
5)forEach遍历
存数据,Person是一个拥有name和id成员变量的一个标准javabean,使用记得导入该bean所在的包
<%
//以后数据最好放servlet中写,这里是为了方便
Person person=new Person("bighuan",100);
//将对象存入域对象中
pageContext.setAttribute("person", person);
List<Person> list=new ArrayList();
list.add(person);
list.add(new Person("erqiu",20));
list.add(new Person("tiedan",21));
pageContext.setAttribute("list", list);
Map<String ,Person> map=new HashMap<String , Person>();
map.put("001", person);
map.put("002",new Person("erqiu",21));
map.put("008",new Person("ergou",29));
map.put("004",new Person("ertie",24));
pageContext.setAttribute("map", map);
%>
使用forEach:
<%--
forEach遍历
begin:从哪个元素开始遍历,默认从0开始
end:到哪个元素结束,默认到最后
step:步长,默认为1
items:需要遍历的数据(集合,map等)
var:每个元素的名称:当前正在遍历元素的状态对象,(count属性:当前位置开始,也就是1开始)
varStatus:
--%>
//集合
<c:forEach begin="0" end="2" step="1" items="${list }" var="p" varStatus="varSta">
序号:${varSta.count}--名字:${p.name }--id:${p.id }<br/>
</c:forEach>
//map
<c:forEach items="${map }" var="entry">
${entry.key }--${entry.value.name }--${entry.value.id }<br/>
</c:forEach>
遍历结果:
序号:1--名字:bighuan--id:100
序号:2--名字:erqiu--id:20
序号:3--名字:tiedan--id:21
008--ergou--29
004--ertie--24
001--bighuan--100
002--erqiu--21
6)forTokens遍历
<%
String str="java-php-python-语文-艺术";
pageContext.setAttribute("str", str);
%>
<%--jsp中切割方法 --%>
<c:forTokens items="${str }" delims="-" var="s">
${s }<br/>
</c:forTokens>
结果:
java
php
python
语文
艺术
7)redirect重定向
<%--重定向:redirect --%>
<c:redirect url="http://www.baidu.com"></c:redirect>
总结
核心标签库的常用几个标签作用及使用示例都在博客了...
下一篇就是jsp自定义标签了,坚持吧!多写一些博客是对知识的一种巩固,一种消化方式!