JSP开发转义自定义标签

转义标签非常常用,这个东西是在论坛里面经常会被使用的东西,比如对方想问一个问题,这个超链接怎么写,然后你写出来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>

效果如下


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值