javaweb之自定义标签库——转义标签

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/example" prefix="c" %>



  
    开发转义标签(修改标签体案例)
    <%-- 转义技术用在:论坛 --%>
  
  
  
  	
  		超链接
  	
  

package cn.itcast.web.tag.example;

import java.io.IOException;
import java.io.StringWriter;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.JspFragment;
import javax.servlet.jsp.tagext.SimpleTagSupport;
//开发转义标签
//输出到一个缓冲区将数据转义
public class HtmlFilterTag extends SimpleTagSupport {

	@Override
	public void doTag() throws JspException, IOException {
		StringWriter sw = new StringWriter();
		JspFragment jf = this.getJspBody();
		jf.invoke(sw);
		
		String count = sw.getBuffer().toString();	//<是<  >是>
		
		//apache中有转义代码apache-tomcat-7.0.41\\webapps\\examples\\WEB-INF\\classes\\util\\HTMLFilter.java的filter方法,
		//将static修饰符去掉,做工具类不用去掉static修饰
		count = filter(count);
		this.getJspContext().getOut().write(count);
	}
	
	 public  String filter(String message) {

	        if (message == null)
	            return (null);

	        char content[] = new char[message.length()];
	        message.getChars(0, message.length(), content, 0);
	        StringBuilder result = new StringBuilder(content.length + 50);
	        for (int i = 0; i < content.length; i++) {
	            switch (content[i]) {
	            case '<':
	                result.append("<");
	                break;
	            case '>':
	                result.append(">");
	                break;
	            case '&':
	                result.append("&");
	                break;
	            case '"':
	                result.append(""");
	                break;
	            default:
	                result.append(content[i]);
	            }
	        }
	        return (result.toString());

	    }

}




    A tag library exercising SimpleTag handlers.
    1.0
    example
    /example
    
    
    
        referer
        cn.itcast.web.tag.example.RefererTag
        empty
        
        	site
        	true
        	true
        
        
        
        	page
        	true
        	true
        
    
    
    
        if
        cn.itcast.web.tag.example.IfTag
        scriptless
        
        	test
        	true
        	true
        
    
    
    
        choose
        cn.itcast.web.tag.example.ChooseTag
        scriptless
    
    
    
        when
        cn.itcast.web.tag.example.WhenTag
        scriptless
        
        	test
        	true
        	true
        
    
    
     
        otherwise
        cn.itcast.web.tag.example.OtherWiseTag
        scriptless
    
    
    
        foreach
        cn.itcast.web.tag.example.ForeachTag
        scriptless
        
        	items
        	true
        	true
        
        
         
        	var
        	true
        	false
        
    
    
     
        foreach2
        cn.itcast.web.tag.example.ForeachTag2
        scriptless
        
        	items
        	true
        	true
        
        
         
        	var
        	true
        	false
        
    
    
    
        htmlfilter
        cn.itcast.web.tag.example.HtmlFilterTag
        scriptless
    
   


你可能感兴趣的:(自己用)