【笔记】JSTL基础知识

JavaServerPages Standard Tag Library jsp标准标签库

核心标签库:

<c:out>
相当于out对象,打印字符串或这一个表达式的值。
<c:out value="value" [escapeXml="{true|false}"]  [default="defaultValue"]/>
或者双标记
escapeXML用于是否输出value中的html标签 忽略即输出 否则显示html被浏览器执行
可以输出表达式或者EL表达式的值

<c:set>
把变量的值设置到jsp内置对象中,或者是设置到Javabean的属性中,功能和jsp动作指令中的<jsp:setProperty>相似
1<c:set value="value" var="varname" [scope="{page|request|session|application}"]/>
 varName要存储的变量的名称 
2 或者双标记包住设置的值value
3或者<c:set value="" target="" property=""/> target是一个JavaBean  propertyName是JavaBean4.
4.或者将上边的改为双标记

JSTL中 scope默认的是指都是page

<c:remove>
功能和set相反 用于日出在set中设置的变量
<c:remove var="varname" [scope="{page|r|s|a}"]/>
var指定已出名称

<c:if>
条件判断
<c:if test="testCondition" [var="varName"] [scope="{pgae|r|s|a}"]>   
结果为真的时候执行的操作代码
</c:if>
 testConditon指定测试的条件
 varName指定变量的名称,这个变量的值是前边测试条件的结果 布尔型 scope指定varName有效范围

<c:choose>、<c:when>、<c:otherwise>
choose标签没具体功能,他仅仅作为when和otherwise的父标签
<c:choose>
    <c:when test="testCondition">
           满足条件后的具体操作
      </c:when>
    <c:when>
           满足条件后的具体操作
      </c:when>
        <c:otherwise>
              没有满足条件的具体操作
         </c:otherwise>
</c:choose>
一个choose中可包含多个when和一个otherwise标签
判断条件可以使用el表达式


<c:forEach>
迭代标签 循环控制,可以循环遍历一个集合中的内容,数组、list/map/array/listlinkedlist/set/vector等
<c:forEach [var=""] items="" [varStatus=""] [begin=""] [end=""] [step=""]>要循环的内容</c:forEach>
或者<c:forEach [var=""] items="" [varStatus=""] begin="" end="" [step=""]>要循环的内容</c:forEach>
items指定要遍历的集合 varName是定义集合中的当前对象名称,varStatus是遍历当前的状态信息 包括index、count、first、last
第二种方法只能按照指定次数循环集合

<c:forTokens>
JSTL中的另一个迭代循环标签,他可以用来对字符串进行迭代循环,这个字符串使用符号分开的
<c:forTokens items="" delims="" [var=""] [varStatus=""] [begin=""] [end=""] [step=""]>循环重要执行的内容</c:forTokens>
items指定要处理的字符串,delims指明这个字符串中分割的字符,var指明当去哪循环的字符串,varStatus指明循环当前的状态


<c:import>
把其他动态或者静态的文档包含到当前JSP页面,类似动作指令<jsp:include> ,但是不同的是动作指令只能包含当前web应用的内容,而他不仅可以包含当前,还可以包含其他web应用的内容
<c:import url="" [context=""] [var="varName"] [scope="{page|r|s|a}"] [charEncoding=""]>可以包含<c:param>标签</c:mport>
url为引用位置
<c:import url="" [context=""] [var="varName"] varReader="" [charEncoding=""]>可以包含<c:param>标签</c:mport>
依旧使用表达式进行输出

<c:redirect>
把用户的一个请求从一个页面转换到另一个页面 同hsp中response内建对象的跳转功能很相似
<c:redirect url="" [comtext=""] /> 不传递参数 仅仅实现跳转
<c:redirect url="" [context=""]>
    <c:param>  使用该标签传递参数
</c:redirect>
地址栏无变化 传递的参数在地址栏也不显示

<c:url>
用于产生一个url
<c:url value="" [context=""] [var=""] [scope=""]/>  仅产生一个url
<c:url value="http://123.com" [context=""] [var=""] [scope=""]>
    <c:param name="message" value="hello">
</c:url>   可以生成一个带参数的url -------- http://123.com?message=hello

<c:param>
向一个页面传递参数
<c:param name="" value="" />

<c:catch>
捕捉jsp页面产生的错误,和java语言中的catch功能是类似的
<c:catach [var="varname"]>
        要捕捉的异常部分
</c:catach >
例:
<c:catach [var="exception"]>
        <%
                out.println(10/0);
        %>
</c:catach >
<c:out value="${excepiton.message}"/>

数据库标签库
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql">
<sql:setDataSource>
设置数据源
<sql:setDataSource driver="drivername" url=“”[user=""] [password=""] [var=""] [scope=""]/ >
例:
<sql:setDataSource driver="com.microsoft.jdbc.sqlserver.SQLServerDriver" url=“jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test”user="sa" password="1234" var="conn" [scope=""]/ >
第二种使用方法,是在设置了数据源的情况下
<sql:setDataSource dataSource="dataSource" [var=""] [scope=""] />  dataSource是已经存在的数据源

<sql:query>
从数据库中取出指定的结果集
<sql:query var="" dataSource="" [maxRows=""] [startRow=""] [scope=""]> SQL语句</sql:query>
var取出结果集的名称  dataSource数据源 maxRows startRow 控制结果集大小和开始的位置 包含一个sql语句
第二种用法<sql:query sql="" var="" dataSource="" [maxRows=""] [startRow=""] [scope=""] /> 
对于取出的结果集var="rs" 
rs.rowCount得到行数   forEach循环遍历${ rs.rows}获取到 var="?"  然后用?.字段名的方式获取

<sql:update>
对数据库执行更新操作
<sql:update dataSource="" [var=""] [scope=""] >sql语句</sql:update>
或者使用单标记 但加sql属性

<sql:param>
向<sql:query>中的sql语句传递参数,类似预编译 
<sql:param value=""/>  或者双标记包围
<sql:query var="rs" dataSource="dataSource">
    select * from a where b=?
    <sql:param value="1000"/>
</sql:query>
当有多个参数时 顺序对应、

<sql:dateParam>
与<sql:param>用法相同 用于设置日期格式参数
<sql:dateParam value="" [type="{timestamp|time|date}"]>
time 时间格式 date 日期格式 timestamp 是日期加时间完整格式 

<sql:transaction>
支持数据库操作的事务处理
<sql:transaction [isolation="{read_uncommitted|read_committed|repeatable_read|serializable}"] [dataSource=""]>
    数据库操作
</sql:transaction>
isolation 事务处理的级别
<sql:transaction dataSource="${database}">
    <sql:update>
        更新数据库sql
    </sql:update>
    <sql:query>
        查询数据库sql语句
    </sql:query>
</sql:transaction>


xml操作标签库

<x:parse>
用于解析一个xml文档
<x:parse {doc="xmlDoc"|xml="xmlDoc"} {var="varName"  [scope="{page|r|s|a}"] | varDom="varName" [scopeDom="{page|r|s|a}"]}  [systemId=""] [filter=""]/>
doc、xml指明了要处理的xml文档  解析后春放在var中 如果是以DOM的方式解析 则存放在varDom中 
或者 不使用  {doc="xmlDoc"|xml="xmlDoc"}指明xml文档 而是用双标记的方式包围xml文档

<x:out>
输出解析后的xml结点的值
<x:out select="node" [escapeXML="{true|false}"]/>
其中node是xml文档节点定位的表示式 这里使用XPath语法 
例:
<c:import var="doc" url="students.xml" charEncoding="gb2312"/>
<x:parse var="studentDoc" doc ="${doc}"/>
<x:out select="$studentDoc/students/student/name"/>

<x:set>
和<c;set>相似 将一个值设置到一个变量中 不同是x将XML中某个节点的内容赋值到一个变量
 <x:set select="node" var="name" [scope={||||}] />
node为一个节点 var是用来接受这个节点值的变量

<x:if>
与<c:if>相似 只不过判断条件变成了XPath表达式 判断文档中是否有满足这个表达式的节点
<x:if select="node"  var="varName" [scope="{pgae|r|s|a}"]>
返回值为var
<x:if select="node"  var="varName" [scope="{pgae|r|s|a}"]>   
结果为真的时候执行的操作代码
</x:if>

<x:choose><x:when><x:otherwise>
类似 只不过判断条件改变

<x:forEach>
对XML文档进行遍历 
<x:forEach [var=""] select="node" [varStatus=""] [begin=""] [end=""] [step=""] >    
    循环执行的内容
</x:forEach>
select指定循环取出的节点 循环取出所有符合表达式的节点
例:
<c:import var="doc" url=teacher.xml" charEncoding="gb2312" />
<x:parse var="teacherDoc" doc="${doc}">
<x:forEach select="$teacherDoc//teacher" varStatus="status">
<x:out select="name">
</x:forEach>

国际化标签
<fmt:setLocale>设置国家地区参数 从而可以使用本地化表示方式
jstl可以自动根据Local设置搜索资源文件,从而实现其他国际化问题,这样就需要另几个国际化标签,包括<fmt:bundle><fmt:setBundle>
<fmt:message><fmt:param><fmt:requestEncoding>
其中<fmt:bundle><fmt:setBundle>用于绑定资源文件,<fmt:message>用于显示资源文件,<fmt:param>用于传递参数,<fmt:requestEncoding>用于设置请求的字符编码

数字格式标签
<fmt:setLocale value="en_US"/>
<fmt:formatNumber value="12345" />
<fmt:formatNumber type="percent">12345</fmt:formatNumber>
<fmt:formatNumber value+"1234.56" type="currency"/>

日期格式标签
使用JSTL标签可以很方面的处理日期格斯
< fmt:parseDate>可以很方便的将一个字符串解析成一个日期格式的对象
< fmt:formatDate value="" [pattern="" | [type="time | date | both" ]  [dateStyle="default | short | medium |long |full" ] [timeStyle="default | short | medium | long | full "]  ] [ timeZone="timeZone" ] [var="" [scope=""]  /]>
date 是一个时间类型的变量,pattern是输出的时间格式 type是输出的类型,可以选时间、日期或者全选 ,dateStyle和timeStyle是指输出日期或者日期的样式 timeZone是指时区
< fmt:parseDate .....>与上边基本相似  不同处是 前者(formatDate)是把日期格式 转换成指定格式的字符串  而后者(praseDate)是将一个字符串转化成一个指定格式的日期变量 
例:
<c:set var="date" value="<%=new jvava.util.Date()%>"/>
<fmt:formatDate value="${date}" pattern="yyyy年MM月dd日" type="date" dateStyle="full"/>
<fmt:formatDate value="${date}" pattern="HH:mm:ss" type="time" timeStyle="full" />
<fmt:formatDate value="${date}" pattern="yyyy年MM月dd日 HH:mm:ss" type="both" dateStyle="full" timeStyle="full" />
<fmt:formatDate value="${date}”type="both" timeStype="full" var="formatted" />
<fmt:parseDate value="${formatted}" type="both" timeStyle="full" timeZone="GMT" var="parsed"/>
<c:out value="${parsed}"/>

函数标签库
很多字符串函数...........


自定义标签库
1.创建类 继承Tag接口(不需要处理正文内容) 如果需要处理开始结束标签内的正文内容的话,需要实现BodyTag接口
不对正文进行处理,质押实现doEndTag方法即可。
2.tld配置文件
3.正文引用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值