IT兄弟连 JavaWeb教程 使用JSTL函数

在JSTL Functions标签库中提供了一组常用的EL函数,主要用于处理字符串,在JSP中可以直接使用这些函数。

在JSP中使用Functions标签库,需要通过taglib指令引入该标签库:

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

使用JSTL函数

1.fn:contains函数

fn:contains函数用于判断在源字符串中是否包含目标字符串,其语法为:

fn:contains(String source,String target)

以上source参数指定源字符串,target参数指定目标字符串,返回类型为boolean。例如对于以下EL表达式:

${fn:contains("Tomcat,"cat"}}

${fn:contains("Tomcat","CAT")}

第一个EL表达式的值为true,第二个EL表达式的值为false。


2.fn:toUpperCase函数

fn:toUpperCase函数用于将源字符串中的所有字符改为大写,其语法为:

fn:toUpperCase(String source)

以上source参数指定原字符串,返回类型为String。

例如对于以下EL表达式:

${fn:toUpperCase("TomCat")}

其输出结果为:

TOMCAT


3.fn:length函数

fn:length函数用于返回字符串中的字符的个数,或者集合和数组中的元素的个数,其语法为:

fn:length(source)

以上source参数可以为字符串、集合或者数组,返回类型为int。


2  实现自定义函数标签

函数的定义和使用分为以下3个步骤:

●  编写一个Java类,并在该类中编写公用的静态方法,用于实现自定义EL函数的具体功能。

●  编写标签库描述文件,对函数进行声明。该文件的扩展名为.tld,被保存到Web应用的WEB-INF文件夹下。

●  在JSP页面中引用标签库,并调用定义的EL函数,实现相应的功能。

例:定义EL函数处理字符串中的回车换行符和空格符。

●  编写一个Java类,名称为StringDeal,将其保存在com.xdl.el包中,在该类中添加一个公有的静态方法shiftEnter(),在该方法中替换输入字符串中的回车换行符为<br>,空格符为"&nbsp;",最后返回新替换后的字符串。StringDeal类的完成代码如下:

    package com.xdl.el;

    public class StringDeal{

         public static String shiftEnter(String str){

              String newStr = str.replaceAll("\r\n","<br>");

              newStr = newStr.replaceAll(" ","&nbsp;");

              return newStr;

         }

    }

●  编写标签库描述文件,名称为stringDeal.tld,并将其保存到WEB-INF文件夹下。关键代码如下:

    <?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" xsi:schemaLocation="http:/        /java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd" version="2.      0" >

    <tlib-version>1.0</tlib-version>

    <uri>/stringDeal</uri>

    <function>

         <name>shiftEnter</name>

         <function-class>com.xdl.el.StringDeal</function-class>

         <function-signature>java.lang.String shiftEnter(java.lang.Str               ing)</function-signature>

    </function>

    </taglib>

参数说明:

uri标记:用于指定tld文件的映射路径。在应用EL函数时,需要使用该标记指定的内容。

name标记:用于指定EL函数所对应的方法名,通常与java文件中的方法名相同。

function-class标记:用于指定EL函数所对应的Java文件,这里需要包括包名和类名,例如,在上面的代码中,报名为com.xdl.el,类名为StringDeal。

function-signature标记:用于指定EL函数所对应的静态方法,这里包括返回值的类型和入口参数的类型。在指定这些类型时,需要使用完整的类型名,例如,在上面的代码中,不能指定该标记的内容为"String.shiftEnter(String)"。

●  编写index.jsp文件,在该文件中添加一个表单及表单元素,用于收集内容信息。关键代码如下:

    <%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    <html>

    <head>

    <meta charset="UTF-8">

    <title>兄弟连IT教育</title>

    </head>

    <body>

         <form name="form1" method="post" action="deal.jsp">

              <textarea name="content" cols="30" rows="5"></textarea>

              <br>

         <input type="submit" name="Button" value="提交">

    </form>

</body>

</html>

●  编写表单的处理页deal.jsp文件,在该文件中应用上面定义的EL函数,对获取到的内容信息进行处理(主要是替换字符串中的回车换行符和空格符)后显示到页面中。deal.jsp文件的具体代码如下:

    <%@ page language="java" contentType="text/html;charset=UTF-8" pa       geEncoding="UTF-8"%>

    <%@ taglib uri="/stringDeal" prefix="xdlfn" %>

    <%request.setCharacterEncoding("UTF-8"); %>

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8        ">

    <title>显示结果</title>

    </head>

    <body>

         内容为:<br>

         ${xdlfn:shiftEnter(param.content)}

    </body>

    </html>

运行本实例,在页面中将显示一个内容编辑框和一个提交按钮,在内容编辑框中输入内容,然后单击提交按钮,观察新页面的变化。

42b1d12ec07f402cb739673ced8b9c2c.png


在定义和使用EL函数时,可能出现以下3种错误。

●  由于没有指定完整的类型名而产生的异常信息。

在编写EL函数时,如果出现如下图所示的异常信息,则是由于在标签库描述文件中没有指定完整的类型名而产生的。

2f4cfae8164d457881dce93f9b2326c3.png


解决的方法:在扩展名为.tld的文件中指定完整的类型名即可。例如,在上面的这个一场中,就可以将完整的类型名设置java.lang.String。

●  由于在标签库的描述文件中输入了错误的标记名产生的异常信息。

●  由于定义的方法不是静态方法所产生的异常。


猜你喜欢

转载自blog.51cto.com/14311187/2394185