Jsp(五)

作者: FTOLsXD | 来源:发表于2017-02-13 16:55 被阅读20次

    XML 标签

    JSTL XML标签库提供了创建和操作XML文档的标签。引用XML标签库的语法如下:

    <%@ taglib prefix="x" 
               uri="http://java.sun.com/jsp/jstl/xml" %>
    

    在使用xml标签前,你必须将XML 和 XPath 的相关包拷贝至你的<Tomcat 安装目录>\lib下:
    XercesImpl.jar下载地址: http://www.apache.org/dist/xerces/j/
    xalan.jar下载地址: http://xml.apache.org/xalan-j/index.html

    |标签|描述|
    |---|---|
    |<x:out>|与<%= ... >,类似,不过只用于XPath表达式|
    |<x:parse>|解析 XML 数据|
    |<x:set>|设置XPath表达式|
    |<x:if>|判断XPath表达式,若为真,则执行本体中的内容,否则跳过本体|
    |<x:forEach>|迭代XML文档中的节点|
    |<x:choose>|<x:when>和<x:otherwise>的父标签|
    |<x:when>|<x:choose>的子标签,用来进行条件判断|
    |<x:otherwise>|<x:choose>的子标签,当<x:when>判断为false时被执行|
    |<x:transform>|将XSL转换应用在XML文档中|
    |<x:param>|与<x:transform>共同使用,用于设置XSL样式表|

    使用JSP格式化XML
    这个是XSLT样式表style.xsl文件:

    <?xml version="1.0"?>
    <xsl:stylesheet xmlns:xsl=
    "http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html" indent="yes"/>
    <xsl:template match="/">
      <html>
      <body>
       <xsl:apply-templates/>
      </body>
      </html>
    </xsl:template>
    <xsl:template match="books">
      <table border="1" width="100%">
        <xsl:for-each select="book">
          <tr>
            <td>
              <i><xsl:value-of select="name"/></i>
            </td>
            <td>
              <xsl:value-of select="author"/>
            </td>
            <td>
              <xsl:value-of select="price"/>
            </td>
          </tr>
        </xsl:for-each>
      </table>
    </xsl:template>
    </xsl:stylesheet>
    

    这个是main.jsp文件:

    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
    <html>
    <head>
      <title>JSTL x:transform Tags</title>
    </head>
    <body>
    <h3>Books Info:</h3>
    <c:set var="xmltext">
      <books>
        <book>
          <name>Padam History</name>
          <author>ZARA</author>
          <price>100</price>
        </book>
        <book>
          <name>Great Mistry</name>
          <author>NUHA</author>
          <price>2000</price>
        </book>
      </books>
    </c:set>
    <c:import url="http://localhost:8080/style.xsl" var="xslt"/>
    <x:transform xml="${xmltext}" xslt="${xslt}"/>
    </body>
    </html>
    

    运行结果如下:

    运行结果

    JSTL函数

    JSTL包含一系列标准函数,大部分是通用的字符串处理函数。引用JSTL函数库的语法如下:

    <%@ taglib prefix="fn" 
               uri="http://java.sun.com/jsp/jstl/functions" %>
    

    fn函数的语法如下:

    ${fn:XXX()}
    

    |标签|描述|
    |---|---|
    |fn:contains()|测试输入的字符串是否包含指定的子串|
    |fn:containsIngnoreCase()|测试输入的字符串是否包含指定的子串,大小写不敏感|
    |fn:endsWith()|测试输入的字符串是否以指定的后缀结尾|
    |fn:escapeXml()|跳过可以作为XML标记的字符|
    |fn:indexOf()|返回指定字符串在输入字符串中出现的位置|
    |fn:join()|将数组中的元素合成一个字符串然后输出|
    |fn:length()|返回字符串长度|
    |fn:replace()|将输入字符串中指定的位置替换为指定的字符串然后返回|
    |fn:split()|将字符串用指定的分隔符分隔然后组成一个子字符串数组并返回|
    |fn:startsWith()|测试输入字符串是否以指定的前缀开始|
    |fn:substring()|返回字符串的子集|
    |fn:substringAfter()|返回字符串在指定子串之后的子集|
    |fn:substringBefer()|返回字符串在指定子串之前的子集|
    |fn:toLowerCase()|将字符串中的字符转为小写|
    |fn:toUpperCase()|将字符串中的字符转为大写|
    |fn:trim()|移除首位的空白符|


    JSP 自定义标签

    自定义标签是用户定义的JSP语言元素。当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时Web container调用那些操作。
    JSP标签扩展可以让你创建新的标签并且可以直接插入到一个JSP页面。 JSP 2.0规范中引入Simple Tag Handlers来编写这些自定义标记。
    你可以继承SimpleTagSupport类并重写的doTag()方法来开发一个最简单的自定义标签。


    创建"Hello"标签

    接下来,我们想创建一个自定义标签叫作<ex:Hello>,标签格式为:

    <ex:Hello />
    

    要创建自定义的JSP标签,你首先必须创建处理标签的Java类。所以,让我们创建一个HelloTag类,如下所示:

    //该类需要继承SimpleTagSupport,并重写doTag方法
    public class HelloTag extends SimpleTagSupport{
        @Override
        public void doTag() throws JspException, IOException {
            JspWriter out = getJspContext().getOut();
            out.println("Hello Custom Tag!");
        }
    }
    

    创建如下标签库:WEB-INF\custom.tld。

    <?xml version="1.0" encoding="UTF-8"?>
    <taglib xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd">
        <display-name>myTag</display-name>
        <tlib-version>1.1</tlib-version>
        <short-name>mt</short-name>
        <!--该参数可以当作jsp页面标签引入时对应的uri参数,根据此参数找到该自定义标签.也可以是该文件的路径-->
        <uri>http://com.hb/tld/myTag</uri>
        <tag>
            <name>Hello</name>
            <tag-class>creatMyJspTag.HelloTag</tag-class>
            <body-content>empty</body-content>
        </tag>
    </taglib>
    

    接下来,我们就可以在JSP文件中使用Hello标签:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%-- <%@ taglib uri="http://com.hb/tld/myTag" prefix="m" %> --%>
    <%@ taglib uri="/WEB-INF/custom.tld" prefix="m" %> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>main</title>
    </head>
    <body>
    <m:Hello/>
    </body>
    </html>
    

    相关文章

      网友评论

          本文标题:Jsp(五)

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