Servlet 之jsp(下)--JSTL

  JavaServer Pages Standard Tag Library为jsp标准标签库,jsp规范一部分。sun定义规范即接口。apache对规范进行了实现,开发时导入其jar包即可,但tomcat有自己的jar包支持,不同的tomcat版本也有差异,使用时需要注意。

  使用要求:容器必须支持Servlet 2.4 且JSP 2.0 以上版本,下载地址:http://tomcat.apache.org/taglibs/standard/。目前主流开发中,使用比较多的就是核心标签库(<c:out>),国际化标签库(<fmt:formatDate>)以及函数标签库(<fn:indexOf("adhsjakh","s")>),函数标签库之前已经介绍过,数据库标签与XML标签很少用到,所以本篇主要是核心库和国际化库常用的内容,最后提一下自定义标签库的思路。

=============================================================>

  核心标签库在导入时存在1.0和1.1两个版本,但在taglib引用时区别就只是路径上有区别,所以特别注意。

  常用核心库的内容,首先是一个域操作的例子:

...
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page isELIgnored="false"%>
</head>
<body>
    <c:out value="hello,This is jstl-c test!"></c:out>
    <br>
    <c:out value="${empty user}"></c:out>
    <br>
    <c:out value="<a>html编码显示</a>" escapeXml="true"></c:out>
    ====>
    <c:out value="<a>html编码转义后显示</a>" escapeXml="false"></c:out>
    <br>
    <hr/>
    <c:set value="changchun" var="place" scope="request"></c:set>
    c:set设置后取值:${requestScope.place }
    <c:remove var="place" scope="request"/>
    <br>
    c:remove后再取值:${requestScope.place }
</body>
...

页面展示:

hello,This is jstl-c test! 
true 
<a>html编码显示</a> ====> html编码转义后显示 
c:set设置后取值:changchun 
c:remove后再取值:

  逻辑控制操作的例子:

...
<title>Insert title here</title>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page isELIgnored="false"%>
</head>
<body>
    <c:set var="username" value="changchun" scope="session"></c:set>
    <c:if test="${not empty sessionScope.username }">
        <b>not empty</b>
    </c:if>
    <c:if test="${empty sessionScope.username }">
        <b>empty</b>
    </c:if>
    <br>
    <c:choose>
        <c:when test="${not empty sessionScope.username }">
            <b>choose中显示有值!</b>
            <br>
        </c:when>
    </c:choose>
    <c:choose>
        <c:when test="${param.id<=10 }">
            param.id<=10
        </c:when>
        <c:when test="${param.id>100 }">
            param.id>100
        </c:when>
        <c:otherwise>
            <b>所输入的数值不在关注范围内</b>
        </c:otherwise>
    </c:choose>
</body>
...

页面展示:

http://localhost:8080/RFP02W/views/cTestLogic.jsp?id=18
not empty 
choose中显示有值! 
所输入的数值不在关注范围内

   另一个比较常用的就是url处理,对于复杂的地址,可以用<c:url>进行简化:

...
    <h2>Hello World!</h2>
    <a href="${pageContext.request.contextPath}/views/elTest.jsp">elTest</a>
    <a href="${pageContext.request.contextPath}/views/cTest.jsp">cTest</a>
    <a href="${pageContext.request.contextPath}/views/cTestLogic.jsp">cTestLogic</a>
    
    <c:url value="/views/elTest.jsp" var="elTest" scope="session"></c:url>
    <a href="${sessionScope.elTest }">try elTest again!</a>
...

简化后的地址与之前的效果一致,如果需要在其后加参数,直接在里面引用<c:param>,用name与value进行赋值。

  <c:foreach>可以对字符串,数组,集合实现遍历,使用得当可以减少脚本的篇幅,使代码易于理解。此处略过。

=================================================================>

  最后fmt标签库简单举个例子:

<body>
    <%
        pageContext.setAttribute("date", new Date());
    %>
    <fmt:formatDate value="${date}" pattern="yyyy-MM-dd hh:mm:ss:SSS"/><br>
    <fmt:formatNumber value="3.1415926"></fmt:formatNumber><br>
    <fmt:formatNumber value="3.1415926" pattern="#.##"></fmt:formatNumber><br>
    <fmt:formatNumber value="3" pattern="#.##"></fmt:formatNumber><br>
    <fmt:formatNumber value="3" pattern="0.00"></fmt:formatNumber><br>
</body>

页面效果:

2016-10-12 01:16:36:364
3.142
3.14
3
3.00

=================================================================>

  自定义标签的作用无非是为了减少jsp页面中冗余的脚本代码,对于高复用的脚本块来说,自定义标签可以代替脚本块。但目前的通用做法是要将展示与逻辑进行分离,逻辑的部分会放到servlet中进行更灵活的处理,所以这里简要介绍思路,具体要用时可以查阅资料。

开发步骤
1.编写实现类
2.编写配置文件,确定使用时那个实现类
3.在jsp中引用配置文件,使用标签
实现类
要求:实现接口 SimpleTag,继承类 SimpleTagSupport

传统标签:实现接口Tag,继承类TagSupport,功能更强大,但实现繁琐。
简单标签:接口SimpleTag,继承SimpleTagSupport ,在jsp2.0之后提供
提供标记接口父类:JspTag
配置文件
tld文件 tld是taglib description 的缩写 , 标签类库的描述文件,是jsp解析程序可以通过配置文件获得相应的实现类
tld文件基于xml文件,扩展名为tld,内容xml
tld位置:
1.WEB-INF目录,及子目录,但 classes、lib目录除外
2.WEB-INF/lib/*.jar/META-INF/目录下,jar文件内
简单标签生命周期:
1. 创建标签实例
2. 设置PageContext,执行setJspContext()
3. 每一个属性setter方法,执行 setPattern()
4. 如果有标签体,执行setJspBody()
5. 执行doTag()
执行标签体
this.getJspBody().invoke(null) ; 输出到浏览器。
在doTag()方法体中,throw SkipPageException() 异常 可以阻止当前标签之后内容的输出。

转载于:https://www.cnblogs.com/bruceChan0018/p/5951453.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: jakarta.servlet.jsp.jstl-2.. 是一个 Java Web 开发中常用的 JSTLJSP Standard Tag Library)库,它提供了一系列的标签和函数,可以简化 JSP 页面的开发,提高开发效率。该库是由 Jakarta EE(原名 Java EE)社区维护的。 ### 回答2: Jakarta Servlet JSP JSTL-2.0.0 是一个 Java Web 开发中常用的工具,它提供了一系列的标签库和函数,用于简化 JSP 页面中的操作和开发过程。JSTLJavaServer Pages 标准标记库的缩写,是一个由 Sun 公司推出的标准规范。 JSTL 是通过标签库来实现的,括核心标签库和 XML 标签库。核心标签库含了基本的编程逻辑标签,如条件判断、循环控制、变量赋值等。XML 标签库则是对 XML 文档进行操作的标签,例如解析 XML、输出 XML 等。 使用 JSTL 可以帮助开发者快速、高效地构建 Web 应用程序,并且能够减少代码量和提高程序的可维护性。JSTL 还支持国际化和本地化,可以轻松地实现不同语言和不同地区的 Web 应用程序。 Jakarta Servlet JSP JSTL-2.0.0 是一个很成熟的工具,得到了广泛的应用和认可。它通过提供一系列的标签库和函数,为开发者提供了一个非常强大、易用、高效的工具,帮助开发者很好地解决了许多常见的问题和挑战。因此,对于 Java Web 开发者来说,学习和掌握 JSTL 是至关重要的。 ### 回答3: Jakarta.servlet.jsp.jstl-2.0.0是一个JavaServer Pages标准标记库,它提供了一组JSP标签,用于获取、设置和操作服务器端的数据,使得JSP页面的开发更加简单和高效。 这个标记库含了一些核心的标签,比如<c:forEach>用于循环遍历集合数据,<c:if>用于条件判断,<c:set>用于设置属性值等等。除此之外,它还含了许多其他有用的标签,如<fmt:formatDate>用于格式化日期,<sql:setDataSource>用于设置数据库连接等。 Jakarta.servlet.jsp.jstl-2.0.0的使用需要在JSP页面中导入相应的标记库名称空间,比如xmlns:c="http://java.sun.com/jsp/jstl/core"表示导入了核心标签库。然后就可以使用相关标签了。 通过使用Jakarta.servlet.jsp.jstl-2.0.0标记库,JSP页面的开发变得更加简单、快速和易于维护,同时也更加符合MVC架构的原则,提升了应用程序的设计质量和开发效率,因此在Java Web应用程序开发中被广泛使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值