美文网首页java
java web jstl标签库

java web jstl标签库

作者: n油炸小朋友 | 来源:发表于2018-06-09 00:17 被阅读0次

    jsp页面是为了显示数据,如果嵌入java代码,就会使得可读性差,java代码也难以重用和维护。为了不在jsp页面里面写java脚本,我们使用了jsp内置的行为、指令,也使用el表达式来获取对象和值,但是这些并没有提供循环遍历的功能,所以我们就需要用到jstl标签库。

    引入方式

    要使用jstl标签库,我们需要用到tablib指令引入。

    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/>等标签。

    1. <c:out/>标签
      <c:out value="" default="" escapeXml />
      作用:将指定内容输出到浏览器,默认支持el表达式,

    value:输出的值,可以为EL表达式
    default:如果value属性的值不存在,会输出default属性值
    excapeXml:如果为true,则会为value中的特殊字符进行转义,默认为true

    <c:out value="${user.name}" default="不存在这个值" /> <br/>
    <c:out value="${empty user}" /> <br/>
    <c:out value="字符串" /> <br/>
    <c:out value="<b>不转义</b>" escapeXml="false"/> <br/>
    
    image.png

    第一行不存在user.name , 所以显示的是default里面的内容;
    第四行选择不转义,所以<b></b>这些字符没有显示,并且内容加粗了

    1. <c:set/>标签
    • <c:set var="" value="" [scope="{ page|request|session|application }"]></c:set>
      这种var不能接受EL表达式,只能是字符
    • <c:set target="" property="" value="" />
      target:跟var类似,但是它只能够接受EL表达式,可以是一个对象,一个map等,和var进行互补
      property:对象中的属性名 
      value:属性赋值
    <c:set var="hello" value="hello page" scope="page"></c:set>
    <c:set var="hello" value="hello request" scope="request"></c:set>
    <c:out value="${hello}"></c:out><br/>
    <c:out value="${requestScope.hello}"></c:out><br/>
    
    <jsp:useBean id="user" class="bean.user" scope="page"/>
    <c:set target="${user}" property="name" value="hello world"></c:set>
    <c:out value="${user.name}"></c:out><br/>
    
    
    image.png
    1. <c:remove />标签
      <c:remove var="" scope=""/>
      移除page域中的hello,显示时依次找page、request、session、application中的hello,所以最后显示的是request中的hello
    <c:remove var="hello" scope="page"/>
    <c:out value="${hello}"></c:out><br/>`
    
    image.png
    1. <c:if test=""/>标签
    <c:if test="${not empty user.name }">
    <c:out value="username: ${user.name}"></c:out><br/>
    </c:if>
    
    image.png
    1. <c:choose />标签
      <c:choose />相当于switch的作用
      <c:when />相当于case的作用
      <c:otherwise />相当于default的作用
    <c:set target="${user }" property="age" value="15"/>
    <c:choose>
        <c:when test="${user.age<10 }">小于10岁</c:when>
        <c:when test="${user.age<20 }">大于等于10岁小于20岁</c:when>
        <c:otherwise>大于等于20岁</c:otherwise>
    </c:choose>
    
    image.png
    1. <c:forTokens > 标签
      将自定义字符串,按照指定字符进行分割,并遍历输出
      items:自定义字符串
      delims:指定字符
      var:遍历的变量名。
    <c:forTokens items="lin-jia-qian" delims="-" var="s">
            ${s }<br/>
    </c:forTokens>
    
    image.png
    1. <c:catch > 标签

    相当于try catch

    <c:catch var="e">
        <c:set target="cuowudefuzhi" property="hi" value="dfdvc"/>
    </c:catch>
    <c:if test="${not empty e }">
    ${e }<br/>
    </c:if>
    
    image.png
    1. <c:forEach/>标签
      <c:forEach items="" var="" />
      items:需要遍历的对象
      var:用于存放遍历的每一项内容,存放在page作用域,只能在循环体中使用

    普通for循环:

    <c:forEach var="num" begin="0" end="10" step="2">
        ${num }
    </c:forEach>
    
    image.png

    forEach list集合:

    <%
    List<String> list=new ArrayList<String>();
    list.add("item1");
    list.add("item2");
    list.add("item3");
    
    pageContext.setAttribute("list", list);
    
    %>
    
    <c:forEach items="${list }" var="str" >
        ${str}<br/>
    </c:forEach>
    
    
    image.png

    forEach map映射:

    <%
      Map<String,String> map=new HashMap<String,String>();
      map.put("1","hello");
      map.put("2","world");
      pageContext.setAttribute("map", map);
    %>
    <c:forEach items="${map }" var="item">
        ${item.key }=${item.value }<br/>
    </c:forEach>
    
    image.png
    1. <c:url />标签
      <c:url value="" var="" scope="" />
      value:要进行重写的url
      var:如果写了该变量,那么就会将其重写后的url存入作用域中,默认是page,以scope属性值为准
      scope:作用域范围,默认是page
    <c:url value="/index.jsp" var="beanNameUrl" scope="page">
        <c:param name="userName" value="lin"></c:param>
    </c:url>
    <a href="${ beanNameUrl}">点击跳转</a>
    
    image.png

    这个可以用于浏览器把cookie功能关闭时传递sessionid。

    1. <c:redirect />标签
    <c:redirect url="/index.jsp">
    </c:redirect>
    
    1. <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"%>
    是一些辅助性功能标签,就讲解一个把,用的不多

    fn方法库

    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
    提供一些方法,函数,例如字符串查找,截取之类。
    必须在el表达式中使用
    格式:fn:methodName()的格式,比如:fn:contains()

    1、fn:contains(string, substring)
    如果参数string中包含参数substring,返回true。

    2、fn:containsIgnoreCase(string, substring)
    如果参数string中包含参数substring(忽略大小写),返回true

    3、fn:endsWith(string, suffix)
    如果参数 string 以参数suffix结尾,返回true。

    4、fn:escapeXml(string)
    将有特殊意义的XML (和HTML)转换为对应的XML character entity code,并返回。

    5、fn:indexOf(string, substring)
    返回参数substring在参数string中第一次出现的位置。

    6、fn:join(array, separator)
    将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。

    7、fn:length(item)
    返回参数item中包含元素的数量。参数Item类型是数组、collection或者String。如果是String类型,返回值是String中的字符数。

    8、fn:replace(string, before, after)
    返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果。

    9、fn:startsWith(string, prefix)
    如果参数string以参数prefix开头,返回true。

    10、fn:substring(string, begin, end)
    返回参数string部分字符串, 从参数begin开始到参数end位置。

    11、fn:substringAfter(string, substring)
    返回参数substring在参数string中后面的那一部分字符串。

    12、fn:substringBefore(string, substring)
    返回参数substring在参数string中前面的那一部分字符串。

    13、fn:toLowerCase(string)
    将参数string所有的字符变为小写,并将其返回。

    14、fn:toUpperCase(string)
    将参数string所有的字符变为大写,并将其返回。

    15、fn:trim(string)
    去除参数string 首尾的空格,并将其返回。

    其他库

    除此之外,还有sql库和xml库,不过一般不会在里面用

    相关文章

      网友评论

        本文标题:java web jstl标签库

        本文链接:https://www.haomeiwen.com/subject/uphzsftx.html