JSTL (JSP Standard Tag Library)
1. 标签是JSP作为JavaEE分层程序中显示层的一种解决方案。比脚本维护起来简单,整体看着比较整齐,而且功能强大。
2. Core标签库
(1) 标签
<c:choose>
<c:when test=”${param.action}”>
When标签输出
</c:when>
<c:otherwise>
Otherwise标签输出
</c:otherwise>
</c:choose>
当action的值是”true”时,When标签输出,否则Otherwise标签输出
(4) 标签
for(int num=2;num<=100;num+=2){
System.out.print(num);
}
<c:forEach var=”num” begin=”2” end=”100” step=”2”>
${num}
</c:forEach>
(5) 标签还可遍历list
person有id属性
<c:forEach items=”${personList}” var=”person”>
${person.id}
</c:forEach>
(6) 标签遍历map
Person是一个map
<c:forEach items=”${personList}” var=”person”>
${person.key}
${person.value}
</c:forEach>
(7) 有varStatus属性
调用就通过
<c:forEach items=”${personList}” var=”person” varStatus=”varStatus”>
${ varStatus.current.key}
${ varStatus.current.value}
</c:forEach>
(8) 标签也是用于循环的,它是用于循环字符串
<c:forTokens items=”Jane,Tomi,Andy,Hedrix,McCartney,Lenno,Court,Ben”
delims=”,” var=”item” varStatus=”varStatus” begin=”1” end=”7” step=”2”>
${ varStatus.index}
${ item}
</c:forTokens>
(9) 实现计数器
<c:set var=”totalcount” value=”$ {totalCount +1}” scope=”application”>
(10) 标签
<c:remove var=”somemap” scope=”page”/>
这个标签只有两个属性,一个是var只接受字符串的表达式,还有一个是scope可以从page,request,Session,application中删除所有类型的数据,如果被删除的对象不存在也没事的,不会抛异常
(11) 捕捉异常
就是用来捕获异常
<c:catch var=”e”>
<c:set target=”someBean” property=”someProperty” value=”Some value”>
</c:set>
<c:catch>
<c:if test=”${e!=null}”>
程序抛出了异常 ${e.class.name} ,原因:${e.message}
</c:if>
(12) 导入网络资源
(13) 实现url重写
(14) 标签实现重定向
(15) 标签就是设置参数的,一般重定向页面要设置参数就是使用
<c:redirect url=”http://www.baidu.com/s”>
<c:param name=”wd” value=”music” ></c:param>
</c:redirect>
- Fmt标签库
(1) 设置编码
(2) 实现本地化
(3) 就是显示时区只是影响
只有这里的时间受影响
(4) 设置的是全局的时区有scope属性
(5) 这样所有的messages_XX.properties的文件都会被加载,中文系统访问时返回messages_zh_CN.properties的资源,日语系统访问时返回messages_ja.perperties的资源,如果某个资源不存在,那么返回messages.properties
(6) 里的参数用进行访问
<fmt:bundle basename=”messages” prefix=”prompt.”>
<fmt:message key=”xxx”>
<fmt:param value=”xxx”></fmt:param>
//如果有这个资源能用参数就用param标签进行设置值。
</fmt:message>
</fmt:message>
- JSTL的fn方法库
(1) 通过<%@ taglib uri=”…/functions” prefix=”fn”%>这样导入
(2) 遵循的原则是fn:methodName()的格式,直接可以在EL表达式中使用
(3) fn:contains(总的,sub)判断是总的否包含sub
(4) fn:contains(总的,sub)判断总的是否包含sub,忽略大小写
(5) fn:endsWith(String original,String suppix)判断文件类型
(6) fn:startsWith()判断文件是否是以指定参数开始
(7) fn:escapeXml()实现HTML编码,也就是特殊字符会改变
(8) fn:indexOf()方法,也就是一个字符串出现在另一个字符串第一次出现的位置,没有就返回-1
(9) fn:split(String source, String seperator)分割字符
(10) fn:join(String[] array,String seperator)联合字符,把数组按照分隔符进行连接
(11) fn:length(Object param)返回的是int类型的长度 - JSTL SQL标签库
(1) 导入<%@ taglib uri=”…./sql” prefix=”sql”%>
(2) 设置数据源
(3) 查询表数据
示例:
<sql:query var=”rs” dataSource=”${dataSource}” >
select * from tablename
</sql:query>
或者
<sql:query var=”rs” dataSource=”${dataSource}” sql=”select * from tablename”>
</sql:query>
(4) 还可以支持分页显示,
(5) 结果集动态遍历
${param.sqlyuju} //sqlyuju这是我们自己设的变量,最好用catch下异常
(6) 更新表数据,执行更新的时候用这个,否则用query
(7) 和
insert into tb_person(name,birthday) values (?,?)
<sql:param value=”hello”></sql:param>
<sql:dateParam value=”${date}” type=”timestamp”>
(8) 事务管理标签如果事务中有一个sql语句抛了异常那么所有事务中的sql语句都失败
6. JSTL的XML标签库
(1) Xml标签库除了需要jstl.jar和standard.jar之外,还需要xalan.jar和serializer.jar
(2) 这里Xml标签不能使用,是要用x做前缀
(3) 标签可以解析xml文件
<c:set var=”XML”>
<student description=”Software Engineer”>
<name>helloween</name>
<age>20</age>
</student>
</c:set>
<x:parse var=”content” doc=”${XML}” />
就把XML这个变量解析到content中去了
也可以直接解析,不用doc
<x:parse var=”content”>
<student description=”Software Engineer”>
<name>helloween</name>
<age>20</age>
</student>
</x:parse>
还可以用c:import导入文件作为doc,注意导入的文件一定要是XML格式的否则会出错
(4) 输出指定元素’
Select可以有多种路径,
,/,@
表示JSTL或者JSP定义的变量
/表示父子关系或者所属关系
@表示属性
(5) 标签
(6) 标签,用于判断某个路径存不存在,有三个属性:var、scope、select。
var用于保存返回的结果
scope用于声明var的作用域
select指定目标路径
(7) 标签用法和core标签一样
(8) 标签用于保存某一个路径下的变量
(9) 把XML转化为HTML,用一个template文件(xslt)进行转换
<x:transform doc=”${data}” xslt=”${template}”></x:transform>