您的位置:首页 > Web前端 > JavaScript

JSP开发转义自定义标签

2012-01-28 14:23 387 查看
转义标签非常常用,这个东西是在论坛里面经常会被使用的东西,比如对方想问一个问题,这个超链接怎么写,然后你写出来href肯定会被浏览器以正常的方式显示而不能达到需求,所以需要转义标签的支持。下面来具体说一下转义标签到底该怎么进行写。

首先还是代码

package com.bird.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 content = sw.getBuffer().toString();
		content = filter(content);
		this.getJspContext().getOut().write(content);
	}
	
	 public String filter(String message) {

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

	        char content[] = new char[message.length()];
	        message.getChars(0, message.length(), content, 0);
	        StringBuffer result = new StringBuffer(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());

	    }
}


然后描述完毕就可以使用了

<tag>
        <name>htmlFilter</name>
		<tag-class>com.bird.web.tag.example.HtmlFilterTag</tag-class>
		<body-content>scriptless</body-content>	
		
		
    </tag>


<%@ page language="java" import="java.util.*" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
<%@taglib uri="/example" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>开发转义标签</title>
    
  </head>
  
  <body>
  <c:htmlFilter>
  		<a href="">点点</a>
  </c:htmlFilter>
  </body>
</html>


效果如下

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: