html标签的转义:就是将用户在页面写的一些标签直接作为文本显示,而不会作为html显示
1.标签处理器类
package com.jstl.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 HtmlFilter extends SimpleTagSupport {
@Override
public void doTag() throws JspException, IOException {
JspFragment jf = this.getJspBody();
StringWriter string = new StringWriter();
jf.invoke(string);
String content = string.getBuffer().toString();
content = this.filter(content);
this.getJspContext().getOut().write(content);
// this.getJspBody().invoke(null);
}
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]);
break;
}
}
return result.toString();
}
}
2.在tld文件中进行描述
<tag>
<description>html标签的转义</description>
<name>htmlfilter</name>
<tag-class> com.jstl.tag.example.HtmlFilter</tag-class>
<body-content>scriptless</body-content>
</tag>
3.在jsp页面使用
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.jstl.tag.example" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>My JSP 'htmlfilter.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<c:htmlfilter>
<a href="">点点</a>
</c:htmlfilter>
</body>
</html>