javaweb之自定义标签库——转义标签
来源:互联网 发布:淘宝儿童摇摆车扭扭车 编辑:程序博客网 时间:2024/06/05 07:54
<%@ page language="java" import="java.util.*" pageEncoding="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>
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 {@Overridepublic 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()); }}
<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" version="2.0"> <description>A tag library exercising SimpleTag handlers.</description> <tlib-version>1.0</tlib-version> <short-name>example</short-name><!-- 描述文件的名称 --> <uri>/example</uri><!-- 描述文件的uri --> <tag> <name>referer</name> <tag-class>cn.itcast.web.tag.example.RefererTag</tag-class> <body-content>empty</body-content> <attribute> <name>site</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>page</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>if</name> <tag-class>cn.itcast.web.tag.example.IfTag</tag-class> <body-content>scriptless</body-content> <attribute> <name>test</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>choose</name> <tag-class>cn.itcast.web.tag.example.ChooseTag</tag-class> <body-content>scriptless</body-content> </tag> <tag> <name>when</name> <tag-class>cn.itcast.web.tag.example.WhenTag</tag-class> <body-content>scriptless</body-content> <attribute> <name>test</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> <tag> <name>otherwise</name> <tag-class>cn.itcast.web.tag.example.OtherWiseTag</tag-class> <body-content>scriptless</body-content> </tag> <tag> <name>foreach</name> <tag-class>cn.itcast.web.tag.example.ForeachTag</tag-class> <body-content>scriptless</body-content> <attribute> <name>items</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>var</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>foreach2</name> <tag-class>cn.itcast.web.tag.example.ForeachTag2</tag-class> <body-content>scriptless</body-content> <attribute> <name>items</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>var</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> </tag> <tag> <name>htmlfilter</name> <tag-class>cn.itcast.web.tag.example.HtmlFilterTag</tag-class> <body-content>scriptless</body-content> </tag> </taglib>
0 0
- javaweb之自定义标签库——转义标签
- javaweb之自定义标签——传统标签库
- javaweb之自定义标签——简单标签库
- javaweb之自定义标签库——防盗链标签
- javaweb之自定义标签库——if标签
- javaweb之自定义标签库——if else标签
- javaweb之自定义标签——带属性的标签
- javaWeb之自定义标签
- javaweb之自定义标签库——简单的foreach标签(对List迭代)
- JavaWeb学习篇之----自定义标签&&JSTL标签库详解
- JavaWeb学习篇之----自定义标签&&JSTL标签库详解
- JavaWeb学习篇之----自定义标签&&JSTL标签库详解
- JavaWeb学习篇之----自定义标签&&JSTL标签库详解
- JavaWeb学习篇之----自定义标签&&JSTL标签库详解
- JavaWeb之JSP自定义标签
- JavaWeb之 JSP:自定义标签
- JavaWeb——自定义标签与JSTL
- javaweb之自定义标签库——迭代标签(foreach)(可迭代Map、List、Set、任意数组)
- 把网站由.net4.0降级为.net3.5遇到的500.19错误
- NYOJ--关于521
- 两个链表的合并问题
- 在Linux环境下找到最占用CPU的Java线程
- 理解C语言-06-逻
- javaweb之自定义标签库——转义标签
- 关于java的序列化
- select、poll、epoll之间的区别总结[整理]
- 盖茨奖200万美元资助6项卫生间创新技术
- JAVA反射机制
- 设备管理常见知识点
- javascript之namespace模式
- STM32 Arm-Cortex bootloader
- 【OpenCV入门教程之七】 玩转OpenCV源代码:生成OpenCV工程解决方案与OpenCV源码编译