分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

jsp自定义标签处理转义字符

发布时间:2023-09-06 01:33责任编辑:熊小新关键词:jsjsp

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(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("&lt;"); ???????????????break; ???????????case ‘>‘: ???????????????result.append("&gt;"); ???????????????break; ???????????case ‘&‘: ???????????????result.append("&amp;"); ???????????????break; ???????????case ‘"‘: ???????????????result.append("&quot;"); ???????????????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访问结果展示,通过自定义标签做到了特殊字符的转义

jsp自定义标签处理转义字符

原文地址:https://www.cnblogs.com/weishao-lsv/p/8146571.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved