jsp自定义标签处理转义字符
2024-10-07 10:32:42
sun公司提供的jstl虽然比较强大,但是开发中很难满足我们所有的需求,并且开发也禁止在jsp中写很多java代码,因此很多场景需要自己定义标签进行项目开发
sun提供的标签库引用方式:<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
以下案例为自定义标签开发
自定义标签开发流程:
1.需要标签处理器类,用来替换jsp中的Java代码,也就是我们的功能代码类
2.标签处理器类需要描述到一个tld的文件中( tld直接放在WEB-INF下即可)
3.jsp应用 <%@taglib uri="xxx" prefix="xxx"%>
注意: prefix尽量和描述的tld文件名一致,便于开发查找
标签处理器类
public class Escape extends SimpleTagSupport{ public void doTag() throws JspException, IOException { JspFragment js=this.getJspBody(); StringWriter sw=new StringWriter(); js.invoke(sw); String content=sw.getBuffer().toString(); content=filter(content); this.getJspContext().getOut().write(content); } private String filter(String message) { if(message==null){ return null; } char content[]=new char[message.length()]; message.getChars(,message.length(),content,); StringBuffer result=); ;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(); } }
simple.tld
<?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>JSTL 1.1 core library</description> <tlib-version>1.0</tlib-version> <short-name>simple</short-name> <uri>http://simple.tag</uri> <tag> <name>escape</name> <tag-class>tag.Escape</tag-class> <body-content>scriptless</body-content> </tag> </taglib>
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@taglib uri="http://simple.tag" prefix="simple" %> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>转义标签</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> </head> <body> <simple:escape> <a href="http://www.baidu.com">百度</a> </simple:escape> <a href="http://www.baidu.com">百度</a> </body> </html>
启动tomcat访问结果展示,通过自定义标签做到了特殊字符的转义
最新文章
- MySql无限分类数据结构--预排序遍历树算法
- 前端Html和Css面试题
- android的多渠道打包
- MMO之禅(二)职业精神
- Bootstrap 2.3.2学习
- 不错的jQuery图表插件 .
- IIS发布站点错误
- 自定义JQuery插件之 beforeFocus
- C#中调用Windows API时的数据类型对应关系
- 模态Model视图Push下一个视图(混合跳转)
- HDU 6033 Add More Zero (数学)
- c++中的类之构造函数
- Java作业:第一次过程性考核 ——长春职业技术学院 16级网络工程
- 《算法导论》——计数排序Counting Sort
- 廖雪峰Java1-1Java入门-java简介
- Enterprise Library 6.0 参考源码索引
- devise修改密码
- CSS元素、边框、背景、列表样式
- SQL中的CONVERT();cast()函数
- lable标签的妙用
热门文章
- 浅析拯救小矮人的 nlogn 算法及其证明
- Maven Pom文件标签详解
- 【Luogu4221】[WC2018] 州区划分
- 【leetcode】All Paths From Source to Target
- synchronized 与 lock 的区别
- POJ 1743 Musical Theme ( 后缀数组 &;&; 最长不重叠相似子串 )
- layer.confirm
- Jquery TextBox进入focus的时候 改变background-color
- Qmake: Q_OBJECT
- 获取浏览区变化的方法resize() 方法