封装EL函数:

第一步,做一个类,静态方法

public class Html {
    public static String transfer(String txt, String cssClass){
        //把输入的\,&,<>,都给替换后显示出来
        txt = txt.replaceAll("\"", "&quote;" ).replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;"); 
        //\n换为p标签,cssclass添加的样式表
        txt = txt.replaceAll("\n", "</p><p class'"+cssClass+"'>");
        txt = "<p class'"+cssClass+"'>"+txt+"</p>";
        
        return txt;
    }
}

第二步,配置,手动写一个标签描述文件。

在WEB-INF文件夹中新建一个XML.File文件,扩展名更改为tld,选择XML template,完成创建。

 

taglib是根元素,内容写在<taglib>。。。。</taglib>中间

<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>自定义函数</description>     描述
<display-name>my el function</display-name>     显示
<tlib-version>1.0</tlib-version>    版本
<short-name>fn</short-name>        约定fn就可以
<uri>http://itnba.com/maya/myel</uri>     只是一个唯一标识,引用
  <description>自定义函数</description>               
  <display-name>my el function</display-name>       
  <tlib-version>1.0</tlib-version>            
  <short-name>fn</short-name>                       
  <uri>http://itnba.com/maya/myel</uri>         

后面写对html的配置<function>。

<description>把文本的显示内容改成网页的显示内容</description>     内容描述
<name>transfer</name>     在html中使用的名
<function-class>com.itnba.maya.myel.Html</function-class>     com.itnba.maya.myel是第一步做的类的包名,Html是类名 
<function-signature>string transfer(java.lang.String, java.lang.String)</function-signature>   代表函数是一个什么样的函数,string是返回类型,transfer是函数名,()中是参数
<example></example>例如可以省略
  <function>
    <description>
          把文本的显示内容改成网页的显示内容
    </description>                      
    <name>transfer</name>     
    <function-class>com.itnba.maya.myel.Html</function-class>                                              
    <function-signature>string transfer(java.lang.String, java.lang.String)</function-signature> 
    <example>
      //例如能省略
    </example>
  </function>
  
</taglib> 

第三步,现在就可以引用自己封装好的el函数了。

先导一下写好的el函数,

prefix是在${}中用的名,uri是第二步配置中的那个唯一标识

<%@ taglib prefix="html" uri="http://itnba.com/maya/myel"%>  

然后写两行同样的代码作为比较,

<h1>haha</h1>
${html:transfer("<h1>haha</h1>","aaa") }

 第一行应该显示为一号标题的haha,第二行加入自己写的el函数,应该把<>进行替换,把“”中的内容全部显示出来,如下图;