自定义jsp标签

以对字符串中特殊符号的过滤为例,说明自定义jsp的步骤:
1、创建自定义标签类,也就是标签实际执行的方法

Java代码 复制代码 收藏代码
  1. package myTags; 
  2.  
  3. import java.io.IOException; 
  4. import javax.servlet.jsp.JspException; 
  5. import javax.servlet.jsp.tagext.TagSupport; 
  6. import org.apache.taglibs.standard.lang.support.ExpressionEvaluatorManager; 
  7. public class JSFilterTag extends TagSupport{ 
  8.  
  9.     private static final long serialVersionUID = 641731803483920099L; 
  10.      
  11.     private Object property; 
  12.  
  13.     public int doStartTag() throws JspException { 
  14.          if(property != null){            
  15.              try
  16.                  //将特殊标签都替换成‘*’ 
  17.                  String str = ((String)property).replaceAll("[\"\'<>]", "*"); 
  18.                  pageContext.getOut().print(str); 
  19.              } catch (IOException ex) { 
  20.                  throw new JspException(ex.getMessage()); 
  21.              }            
  22.          } 
  23.          return SKIP_BODY; 
  24.      } 
  25.  
  26.     public Object getProperty() { 
  27.         return property; 
  28.     } 
  29.  
  30.     public void setProperty(Object property) { 
  31.         try
  32.             // 对EL表达式的支持   <xss:encode property="${变量}"></xss:encode> 
  33.             if(property != null
  34.             this.property = ExpressionEvaluatorManager.evaluate("title", property.toString(), Object.class, this, pageContext); 
  35.         } catch (JspException e) { 
  36.             System.out.println("过滤js自定义标签类set方法错误!"); 
  37.             e.printStackTrace(); 
  38.         }    
  39.     } 


2、创建tld文件
xss.tld如下
Java代码 复制代码 收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <taglib> 
  3.      <tlibversion>1.0</tlibversion> 
  4.      <jspversion>1.1</jspversion> 
  5.      <tag> 
  6.         <name>encode</name> 
  7.         <tagclass>myTags.JSFilterTag</tagclass> 
  8.         <bodycontent>jsp</bodycontent> 
  9.         <attribute> 
  10.             <name>property</name> 
  11.             <rtexprvalue>true</rtexprvalue>  
  12.         </attribute> 
  13.      </tag> 
  14. </taglib> 


3、引入与使用
index.jsp中的应用
Java代码 复制代码 收藏代码
  1. <%@ taglib uri="/WEB-INF/xss.tld" prefix="xss" %> 
  2. ... 
  3. <xss:encode property="<ssss>"></xss:encode>

你可能感兴趣的:(自定义jsp标签)