• 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 = "参数值" />

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

  • 相关阅读:
    用户交互
    python简介
    maven阿里云镜像setting
    apache虚拟主机的ip用法 包括iis
    apache的虚拟主机配置和指定目录的访问描述(
    apache重定向301 配置,根域名转到www
    前端学习
    一步一步写jQuery插件
    json 和 table控件
    下载相关
  • 原文地址:https://www.cnblogs.com/lzj-learn/p/11649725.html
Copyright © 2020-2023  润新知