jsp mysql 转义字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsp mysql 转义字符相关的知识,希望对你有一定的参考价值。

参考技术A 终于解决了~呵呵呵(我是aries_sun即c-aries)
想了三天,每天都搞到我早上两三点才睡,废寝忘食没洗澡^-^
public
String
dohtml(String
str)

if(str==null)
return
donull(str);
else
int
len=str.length();
StringBuffer
sb=new
StringBuffer();
char
ch;
for(int
i=0;i

ch=str.charAt(i);
switch(ch)

case
'&':
sb.append("&");break;
case
'<':
sb.append("<");break;
case
'>':
sb.append(">");break;
case
'\n':
sb.append("
");break;
case
'\t':
sb.append("        ");break;
case
'
':
sb.append(" ");break;
default:
sb.append(ch);


return
sb.toString();


//刚处理完中文后,存储入数据库的必要操作
public
String
doSql(String
str)
if(str==null)
return
donull(str);
else
int
len=str.length();
StringBuffer
sb=new
StringBuffer();
char
ch;
for(int
i=0;i
ch=str.charAt(i);
switch(ch)
case
'\'':
sb.append("''");break;
case
'\\':
sb.append("\\\\");break;
default:sb.append(ch);


return
sb.toString();

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

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 mysql 转义字符的主要内容,如果未能解决你的问题,请参考以下文章

转义 JSP/Spring MVC 中的所有字符串

带有 JSP 的 JDBC 连接字符串 SQL Server 导致“非法转义字符”错误

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

转义字符_MySQL识别下面的转义序列

Mysql like语句转义字符

js,如何防止特殊字符被转义