java_JavaWeb(13)

JSTL标签库——核心标签库

为了弥补html标签的不足,为了更加方便地在jsp页面中使用java逻辑代码,JSTL标签库因运而生,而其中的佼佼者,被恩宠最多的就是核心标签库了;

核心标签库从功能上可分为4类:

  • 表达式控制标签:out标签、set标签、remove标签、catch标签
  • 流程控制标签:if标签、choose标签、when标签、otherwise标签
  • 循环标签:forEach标签、forTokens标签
  • URL操作标签:import标签、url标签、redirect标签、param标签

JSP页面引入核心标签库的代码为:<%@taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>

<c:out>标签:输出要显示的数据

语法:<c:out value = "要显示的数据对象" [escapeXml="true|false"] [default = "默认值"] />

      <c:out value = "要显示的数据对象" [escapeXml="true|false"]>默认值</ c:out>

value属性输出要显示的数据;

escapeXml属性表示是否将<、>、&、'、等特殊符号进行HTML编码后再进行输出,默认为true;

default属性表示当value属性输入为null输出的默认值;

<c:set>标签:将某个对象存到域范围、Map或JavaBean对象中

语法:<c:set value="值" var="名" [scope = "page|request|session|application"] />

      <c:set var = "名" [scope = "page|request|session|application"]>值</ c:set>

    <c:set value = "值" target="JavaBean对象" property = "属性名" />

       <c:set target = "JavaBean对象" property = "属性名">值</ c:set>

1和2是向scope范围内存储一个值,3和4是给指定的JavaBean的一个属性赋值,相信各个属性代表的意义也很容易理解,就不做解释了;

为了不让大家理解错还是举个小栗子吧,可以结合之前引用JavaBean对象所使用的<jsp:useBean>标签,如下所示:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<jsp:useBean id="person" class="lzj.learn.Person"/>
<body>
    <c:set target = "${person}" porperty = "name">xiao兆</ c:set>
</body>

这里要注意的是需要使用EL表达式代表JavaBean对象,而不能直接使用target = "person";下面两节就会补充EL表达式了^_^;

<c:remove>标签:在域范围或Map、JavaBean对象中移除某个变量的值

语法:<c:remove var = "名" [scope = "page|request|session|application"] />

<c:catch>标签:用于捕获产生异常的代码,可用var属性将所捕获的异常对象保存在page的这个域中

语法:<c:catch var = "表示捕获异常对象的变量名">可能产生异常的代码</ c:catch>;

<c:if>标签:用于判断语句,将结果保存,或判断是否执行标签体,效果和if语句类似

语法:没有标签体时:<c:if test = "判断内容" var = "名" [scope = "page|request|session|application"] />

      有标签体时:<c:if test ="判断内容" [var = "名"] [scope = "page|request|session|application"]>标签体,也是判断成功时执行的内容</ c:if>

其中的var属性的值只有true或false,用于储存判断结果;

 <c:choose>标签、<c:when>标签、<c:otherwise>标签:这3个标签通常一起使用,choose标签是when和otherwise标签的父标签,其效果大家应该可以感觉出来,类似"if-else if-else"的复杂条件判断结果

语法:<c:choose>

     <c:when test = "判断内容">业务逻辑1</ c:when>

     <c:when test = "判断内容">业务逻辑2</ c:when>  

        <c:otherwise>业务逻辑3</ c:othewise>

     </ c:choose>

看完其语法相信大家应该可以更好理解其作用;

<c:forEach>:根据循环条件遍历集合中的元素

语法:<c:forEach var = "名" items = "集合名" varStates = "statesname" begin = "begin" end = "end" step = "step" >输出内容</ c:forEach>

var属性:设定变量名储存各元素;

items属性:指定要遍历的集合;

varStates属性:指各个元素在循环中的状态信息

begin属性:表示循环在集合中的起始位置;

end属性:表示循环在集合中的结束位置;

step属性:表示循环时的步长;

这个通过个范例来加深理解:

<%--创建一个集合,并将其放到一个对象名为list中 --%>
<% List<String> list = new ArrayList<String>();
       list.add(0,xiao);
       list.add(1,zhao);
       list.add(2,lin);
       list.add(3,jia);
       request.stAttribute("list" , list); %>
<c:forEach var = "lzj" items = "${list}" varStates =" jzl " begin = "1" end = "3" step = "1" >
<c:out value = "${lzj}" /》的属性:<br>
<%--该元素所在的位置,即索引是多少--%>
<c:out value = "${jzl.index}" />
<%--该元素是不是循环的第一个元素--%>
<c:out value = "${jzl.first}" />
</ c:forEach>

<c:forTokens>标签:用于浏览字符串,根据指定的字符截取字符串

语法:<c:forTokens items = "字符串内容" delims = "分割符号" [var = "值" begin = "begin" end = "end" varStates = "statesname" step = "step"] />

delims属性是用来分割字符串,其余属性的意义和<c:forEach>标签类似,还是通过一个范例加深理解:

<c:forTokens items = "我:是:你:爸:爸" delims = ":" var = "lzj" begin = "1" end = "3" step = "1" varStates = "jzl">
<c:out value = "${lzj}" />的属性:<br>
<c:out value = "${jzl.index}" /><br>
<c:out value = "${jzl.first}" /><br>
</ c:forTokens>

<c:import>标签:用于引入其他静态或动态页面到JSP页面中,可以包含其他web应用的文件,甚至网络资源

语法:<c:import url = "url" [context = "context" var = "string" scope= "page|request|session|application" context = "context" charEncoding = "encoding"] />

url属性:可以是绝对路径也可以是相对路径;

context属性:在使用相对路径时表示资源的前缀路径,比如:在根目录文件下有root的web应用,该应用下有index.jsp文件,引用时,url = "/index.jsp",这时候context = "/root",context属性的“/”表示根目录,url属性的“/”表示context;即相当于url = "/root/index.jsp";

var属性:将所引用的文本内容储存在变量中,可通过变量名进行调用;

在引入资源时会时常和<c:catch>标签配用,当找不到资源时可以捕抓异常;

其余的属性应该不难理解了,范例:

<c:catch value = "error">
    <c:import var = "lzj" url = "www.baidu.com" scope = "session" charEncoding = "utf-8" />
    <c:out value = "${lzj}" />
</ c:catch>

由于scope定义是session,即var定义的变量接收要导入的文件,并存储在session中,所以当别的页面同样导入该文件时,可直接用var所定义的变量名,即可直接使用<c:out value = ${lzj} />输出;

<c:url>标签:在JSP页面构造一个URL地址,事项URL的重写

语法:<c:url value = "基础的URL" [var = "名" scope = "page|request|session|application" context = "context"] />

value属性:指定基础的URL

var属性:将URL保存到web域中的属性名称

其余属性类似于<c:import>标签;

这个标签可配合<c:param>,给url指定参数及参数值;

范例:

<c:url value = "http://www.baidu.com" var = "lzj" >
     <c:param name = "username" value = "lzj" />
     <c:param name = "pwd" value = "123456" />
</ c:url>
<a href = "${lzj}">百度首页</ a>

此时的“百度首页链接”是带有参数的链接;

<c:redirect>标签:实现JSP页面的重定向

语法:<c:redirect url = "url" [context = "context"] />

同样地,是可以和<c:param>标签一起使用,为url添加参数和参数值;

当访问当前JSP页面时,会自动跳转到所写url中,这个比较好理解就不写范例了;

<c:param>标签:为URL地址添加参数

语法:<c:param name = "参数名" value = "参数值" />

用法相信看完前面的应该都了解了,就不多做介绍了;

posted @ 2019-10-11 15:40  xiao兆  阅读(219)  评论(0编辑  收藏  举报