自定义EL函数、自定义JSTL标签
自定义EL函数
1.做一个类(静态)
package com.maya.el; public class ELBiaoDaoShi { public static String TiHuan(String s){ String txt=s.replaceAll("\"", ""e;").replaceAll("&","&").replaceAll("<","<").replaceAll(">", ">"); return txt; } }
2.配置:
在WEB-INF文件夹下创建后缀名为 .tld 文件在jstl的jar文件fn中(复制粘贴)
<?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 http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <description>自定义EL函数</description> <display-name>自定义函数</display-name> <tlib-version>1.0</tlib-version> <short-name>fn</short-name> <uri>http://com.maya.el/myel</uri> <function> <description> 对于特殊字符的转化 </description> <name>zh</name> <function-class>com.maya.el.ELBiaoDaoShi</function-class> <function-signature>String ZhuanHuan(java.lang.String) </function-signature> <example> </example> </function> </taglib>
3、导包、调用
<%@page import="java.util.ArrayList"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="my" uri="http://com.maya.el/myel" %> <!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>Insert title here</title> </head> <body> ${ my:zh("<h1>hehe</h1>")} </body> </html>
输出结果如下
自定义JSTL标签
自定义jstl标签与自定义EL函数相似
做一个类,派生自SimpleTagSupport(继承)
重写doTag()方法 ( a/t + / )
package com.maya.jstl; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.*; public class MyJSTL extends SimpleTagSupport { private int s; public void setS(int s) { this.s = s; } @Override public void doTag() throws JspException, IOException { JspFragment frag=this.getJspBody(); //获取标签中的值 for(int i=0; i<s; i++){ frag.invoke(null); } } }
2、同样是在WEB-INF下建一个 .tid 配置文件
在WEB-INF文件夹下创建后缀名为 .tld 文件在jstl的jar文件c中(复制粘贴)
<?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 http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" version="2.1"> <description>自定义的一些jstl标签</description> <display-name>自定义jstl</display-name> <tlib-version>1.0</tlib-version> <short-name>myjstl</short-name> <uri>http://com.maya.jstl/myjstl</uri> <tag> <description> </description> <name>forxh</name> <tag-class>com.maya.jstl.MyJSTL</tag-class> <body-content>scriptless</body-content> <!--属性 --> <attribute> <description> </description> <name>s</name> <!--属性名称 --> <required>true</required> <!--是否为必须 true为必须 --> <rtexprvalue>false</rtexprvalue> <!--是否可以用EL表达式 --> </attribute> </tag> </taglib>
3、引用
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="my" uri="http://com.maya.jstl/myjstl" %>
<!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>Insert title here</title>
</head>
<body>
<my:forxh s="5">a</my:forxh>
</body>
</html>
显示结果如下
我们不是制造者,我们是代码搬运工