编写EL函数
1.建立java类的静态函数
package chapter4; public class ELFun { public static String processStr(String s){ s = s.replaceAll("<", "<"); s = s.replaceAll(">", ">"); s = s.replaceAll(" ", " "); return s; } }
在WEB-INF目录中建立一个tld目录,然后再目录中建立一个elfun.tld文件
<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <tlib-version>1.0</tlib-version> <jsp-version>2.1</jsp-version> <description>用于转换特殊字符</description> <uri>myelfun</uri> <!-- 定义URI --> <function> <name>ps</name> <function-class>chapter4.ELFun</function-class> <function-signature> java.lang.String processStr(java.lang.String) </function-signature> </function> </taglib>
修改web.xml文件,添加如下代码
<jsp-config> <taglib> <taglib-uri>/WEB-INF/tld/elfun.tld</taglib-uri> <taglib-location>/WEB-INF/tld/elfun.tld</taglib-location> </taglib> </jsp-config>
建立一个elfun.jsp文件,需要在声明中导入tld文件
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="/WEB-INF/tld/elfun.tld" prefix="elfun" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <input type='text' name='text'/> ${elfun:ps("<input type='text' name='text'/>") } </body> </html>
除了使用tld文件的路径引用tld文件外,还可以使用在tld文件中定义的url引用tld文件
例如:<%@ taglib uri="elfun" prefix="elfun" %>
但为了避免冲突,url在外发布时最好带上域名,例如http://www.sun.com/myelfun
如果使用路径引用tld文件,tld文件可以放到web工程中的任何目录下,并且无需重新服务器即可生效。
如果使用url来引用tld文件,tld文件必须放到web-inf目录中或web-inf目录的子文件中,包括lib和classes目录,且必须重新服务器或重新发布web工程。