在之前我们学过在JSP页面上为了不该用脚本,以是我们有了JSP内置的行为、行为只能供应一小部分的功能,大多数的时候还是会用java脚本,接着就利用了EL表达式,基本上EL表达式看似能知足我们的哀求,它能够获取各种工具,各种值,并且还不会抛出NullPointerException之类的缺点,但是EL表达式功能还是有限,例如不能遍历凑集等,因此为了完善JSP,让其完备不该用java代码,就有了jstl标签库,利用jstl和EL的合营利用,基本上可以实现所有的功能,显示数据,遍历数据等。
一、为什么利用标签?
JSP是用来显示数据的,前面我们在JSP中的HTML中嵌入java代码,与<%%>等混在一起,可读性和可掩护性都很差,而且利用java脚本不便于代码重用,要实现比较繁芜的显示功能,也未便利,而JSP标签和HTML代码很类似,利用JSP标签显得JSP整洁而干净,可读性好,标签能够重复利用,以是就像我们上面说的,我们逐步意识到不敷,就自然在一步步改进,从利用JSP行为,利用EL,在利用标签,都是为了一个目的,让JSP更加完备,方便,只显示数据,而不嵌入逻辑代码。这个涉及到了分层思想,后面说讲解到。
二、JSTL标签库
JSTL标签库中包括很多种类的标签core、fmt、fn方法库、sql标签库,利用JSTL标签库,须要用taglib指令导入JSTL标签库
core标签库
<%@taglib uri=\"大众http://java.sun.com/jsp/jstl/core\"大众 prefix=\"大众c\"大众 %>
讲解<c:out/>、<c:set/>、<c:remove/>、<c:if test=\"大众\"大众/>、<c:choose />、<c:forTokens />、<c:catch /> 、<c:url />、 <c:redirect />、<c:forEach/>、
<c:out/>标签
out :将指定内容输出到浏览器,默认支持el表达式,
<c:out value=\"大众\"大众 default=\公众\"大众 escapeXml />
value:输出的值,可以为EL表达式
default:如果value属性的值不存在,会输出default属性值
excapeXml:如果为true,则会为value中的分外字符进行转义,默认为true
<c:set/>和<c:remove/>标签
图中只先容set标签的一种用法,个中var不能接管EL表达式,只能是字符,
<c:set target=\"大众\公众 property=\"大众\公众 value=\"大众\"大众 />
target:跟var类似,但是它能够接管EL表达式,可以是一个工具,一个map等,和var进行互补
property:工具中的属性名
value:属性赋值
利用哪种set标签,就看自己的需求了。
<c:if test=\公众\公众/>标签
if条件语句
<c:choose />标签
<c:forTokens > 标签
将自定义字符串,按照指定字符进行分割,并遍历输出
items:自定义字符串
delims:指定字符
var:遍历的变量名。
<c:catch > 标签
相称于try catch
var:捕捉后的非常工具
<c:forEach/>标签
增强的for循环,
格式:
<c:forEach items=\公众\公众 var=\"大众\公众 />
items:须要遍历的工具
var:用于存放遍历的每一项内容,存放在page浸染域,只能在循环体中利用
1、items为字符串或字符串数组
为字符串,直接输出,为字符串数组,遍历输出
2、items为list凑集
3、items为map凑集
4、普通for循环
begin:从1开始
end:到10结束
step:每次加2
var:循环的变量,
<c:url />标签
记得讲session的时候,如果cookie禁用了,那么只能将url进行重写才能让session连续生效,而利用的api是response.encodeURL();便是将SESSIONID当作参数带过来,而url标签的浸染便是实现类似功能
<c:url value=\公众\"大众 var=\"大众\公众 scope=\"大众\"大众 /> 就讲解三个属性
value:要进行重写的url
var:如果写了该变量,那么就会将其重写后的url存入page浸染域中,如果scope没有的话,默认便是page,否则以scope属性值为准,在浸染域范围内就可以直接拿着这个变量利用了,如下面所展示的。
scope:浸染域范围,默认是page,
访问后点击超链接
没有关闭cookie,以是不会将SESSIONID写入url中 。
<c:redirect />标签
<c:import />标签
类似于JSP的include行为和include指令,JSTL也供应了include功能的标签<c:import/>,不过import标签功能更强大,乃至可以把Internet上的网页包含进来。
<c:import url=\公众http://www.baidu.com\"大众 charEncoding=\"大众utf-8\"大众/>
fmt标签库
是一些赞助性功能标签,就讲解一个把,用的不多,等用到的时候在去详细学
<%@ taglib uri=\公众http://java.sun.com/jsp/jstl/fmt\"大众 prefix=\"大众fmt\"大众%>
标签只有一个属性,value
<fmt:requestEncoding/>设置编码,
相称于Java中的request.setCharacterEncoding(\"大众\"大众);
post提交中文参数,利用<fmt:requestEncoding value=\公众utf-8\"大众/>来设置编码,就不会涌现中文乱码了。
get提交中文参数,该标签就会失落效,除非到TOMCAT的server.xml中,将URLEncoding设置为UTF-8(默认为ISO-8859-1)。
<fmt:setLocale/>显示所有地区的数据格式等等
fn方法库
供应一些方法,函数,例如字符串查找,截取之类。之以是不叫fn标签库而叫fn方法库,由于与core,fmt标签格式不一样,并且必须在el表达式中利用
格式:fn:methodName()的格式,比如,fn:contains()
contains方法判断是否包含指定的字符串,相称于java里String类的contains方法。
fn:contains(String string1,String string2);
containsIgnoreCase方法,判断是否包含指定字符串,忽略大小写
fn:contains(String string1,String string2)
endsWith方法,判断某字符串是否以指定的参数结尾,
fn:endWith(String string1,String string2);
startsWith方法,判断某字符串是否以指定参数开始
fn:startsWith(String string1,String string2);
escapeXml方法,是否转义字符
fn:escapeXml(source);
indexOf方法,查找字符串在另一个字符串中第一次涌现的位置
fn:indexOf(String string1,String string2);
split方法,将字符串以指定参数为界分割成多个字符串形成字符串数组
。。
join方法,与split方法相反,将字符串数组以参数为界连接成字符串
length方法,取字符串,数组,凑集的长度等等
SQL标签库
JSP中直接可以操作数据库,但是大多数时候我们都不会这样用。。
XML标签库
为了方便地处理XML,
三、总结
重点讲解了一下JSTL中的core标签库,实在也便是一些掌握流程的标签,没什么思想,只要会用就行了,往后忘却了就回过分来查查看,最主要的是思想,这些去世东西记录一下就行了。
上一篇:深入学习Java Web(六) :EL表达式详解