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 开发中常用的 JSTL(JSP Standard Tag Library)库,它提供了一系列的标签和函数,可以简化 JSP 页面的开发,提高开发效率。该库是由 Jakarta EE(原名 Java EE)社区维护的。 ### 回答2: Jakarta Servlet JSP JSTL-2.0.0 是一个 Java Web 开发中常用的工具,它提供了一系列的标签库和函数,用于简化 JSP 页面中的操作和开发过程。JSTL 是 JavaServer 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、付费专栏及课程。

余额充值