Servlet过滤字符串的HTML特殊字符

(1)在一些情况下我们在用户输入数据的时候我们要判断一下是否合法,就是要过滤一下用户输入的信息是否含有特殊字符;

(2)直接上代码,以供大家参考学习:

ServletUtilities类:

package com.lc.ch04Biaodanshuju;

import javax.servlet.http.HttpServletRequest;

public class ServletUtilities {

  public static String filter(String input) {
    if (!hasSpecialChars(input)) {
      return(input);
    }
    StringBuffer filtered = new StringBuffer(input.length());
    char c;
    for(int i=0; i<input.length(); i++) {
      c = input.charAt(i);
      switch(c) {
        case '<': filtered.append("<"); break;
        case '>': filtered.append(">"); break;
        case '"': filtered.append("""); break;
        case '&': filtered.append("&"); break;
        default: filtered.append(c);
      }
    }
    return(filtered.toString());
  }

  private static boolean hasSpecialChars(String input) {
    boolean flag = false;
    if ((input != null) && (input.length() > 0)) {
      char c;
      for(int i=0; i<input.length(); i++) {
        c = input.charAt(i);
        switch(c) {
          case '<': flag = true; break;
          case '>': flag = true; break;
          case '"': flag = true; break;
          case '&': flag = true; break;
        }
      }
    }
    return(flag);
  }
}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!--
Front end to BadCodeServlet.

Taken from Core Servlets and JavaServer Pages 2nd Edition
from Prentice Hall and Sun Microsystems Press,
http://www.coreservlets.com/.
(C) 2003 Marty Hall; may be freely used or adapted.
-->
<HTML><HEAD><TITLE>Submit Code Sample</TITLE></HEAD>
<BODY BGCOLOR="#FDF5E6">
<CENTER>
<H1 ALIGN="CENTER">Submit Code Sample</H1>
<FORM ACTION="/servlet/coreservlets.BadCodeServlet">
  Code:<BR>
  <TEXTAREA ROWS="6" COLS="40" NAME="code"></TEXTAREA><P>
  <INPUT TYPE="SUBMIT" VALUE="Submit Code">
</FORM>
</CENTER></BODY></HTML>
package com.lc.ch04Biaodanshuju;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class BadCodeServlet extends HttpServlet {
  public void doGet(HttpServletRequest request,
                    HttpServletResponse response)
      throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    String title = "Code Sample";
    String docType =
      "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 " +
      "Transitional//EN\">\n";
    out.println(docType +
                "<HTML>\n" +
                "<HEAD><TITLE>" + title + "</TITLE></HEAD>\n" +
                "<BODY BGCOLOR=\"#FDF5E6\">\n" +
                "<H1 ALIGN=\"CENTER\">" + title + "</H1>\n" +
                "<PRE>\n" +
                getCode(request) +
                "</PRE>\n" +
                "Now, wasn't that an interesting sample\n" +
                "of code?\n" +
                "</BODY></HTML>");
  }

  protected String getCode(HttpServletRequest request) {
    return(request.getParameter("code"));
  }
}
时间: 2024-08-06 07:54:41

Servlet过滤字符串的HTML特殊字符的相关文章

php过滤字符串

addslashes(); stripslashes(); //对数据库教程操作时,转义特殊字符 定义:addslashes() 函数在指定的预定义字符前添加反斜杠. 语法:addslashes(string)   chop(); //除去字符串右边空格  trim(); //除去字符串中所有空格  ltrim(); //除去字符串左边空格   htmlspecialchars(); //转换'$','"','<','>'为相应的html实体  htmlentities(); //转

c# 过滤字符串中的重复字符

有字符串"a,s,d,v,a,v",如果想去除其中重复的字符,怎么做? 下面是一个方法,用Hashtable来记录唯一字符,排除重复字符,仅供参考. 1.过滤方法: public class OperationString { /// <summary> /// 过滤字符串中的重复字符 /// </summary> /// <param name="str">要过滤的字符串</param> /// <return

Javascript转义字符串中的特殊字符处理

2014-08-08 Web应用系统中,客户端发送请求到服务器,请求中的字符串参数,在被序列化成json过程中有些特殊字符会被空格代, 导致传递到服务器端再解析的时候,原本的输入参数就会被改变. 目前遇到的特殊字符有加号(+)与连接号(&). 临时解决方案: 前端:定义一个函数,在函数中预先处理, 1 function EncodeURIFilter(str) { 2 if(str != null && str != "") { 3 str = str.repl

过滤字符串的Html标记 c#函数 .

1 01.public static string StripHTML(string strHtml) 2 02. { 3 03. string[] aryReg ={ 4 04. @"<script[^>]*?>.*?</script>", 5 05. 6 06. @"<(\/\s*)?!?((\w+:)?\w+)(\w+(\s*=?\s*(([""'])(\\[""'tbnr]|[^\7])*?\

去空格 whitespaceAndNewlineCharacterSet和过滤字符串

一.过滤字符串 可以使用stringByTrimmingCharactersInSet函数过滤字符串中的特殊符号 首先自己定义一个NSCharacterSet, 包含需要去除的特殊符号 NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@"@/::()¥「」".[]{}#%-*+=_//|~<>$€^?'@#$%^&*()_+'/"""]; 由于NSS

[.net]利用正则表达式过滤字符串中的HTML代码

01.<span style="white-space: pre;"> </span>/// <summary> 02. /// 过滤字符串中的html代码 03. /// </summary> 04. /// <param name="Str">传入字符串</param> 05. /// <returns>过滤后的字符串</returns> 06. public sta

《Python CookBook2》 第一章 文本 - 过滤字符串中不属于指定集合的字符 &amp;&amp; 检查一个字符串是文本还是二进制

过滤字符串中不属于指定集合的字符 任务: 给定一个需要保留的字符串的集合,构建一个过滤函数,并可将其应用于任何字符串s,函数返回一个s的拷贝,该拷贝只包含指定字符集合中的元素. 解决方案: import string allchars = string.maketrans('','') #all chars table def makefilter(keep): delchars = allchars.translate(allchars,keep) def thefilter(s): retu

oracle自定义函数:将字符串中的特殊字符转化为逗号

create or replace function F_SPLIT_CONDITION(START_STRING VARCHAR2, V_FLAG VARCHAR2)/***将给出的START_STRINGN字符串按V_FLAG替换为逗号分隔的字符串*例如:12-34-56 替换为'12','34','56'*使用loop循环实现*/RETURN VARCHAR2 IS L_STRING VARCHAR2(100);--输出字符串 L_INDX INTEGER; --特殊字符 V_STRING

显示行号的6种方法、chkconfig、tar、awk、cut过滤字符串、ps配合wc查看过滤进程

Day10 Georgekai-习惯:操作前备份,操作后检查 第1章 第二波剩余命令:显示行号的6种方法.chkconfig.tar.awk.cut过滤字符串.ps配合wc查看过滤进程 1.1 打印配置文件nginx.conf内容的行号及内容,该如何做? 1.1.1 花括号的作用 {} 注:生成序列,连续输入显示到屏幕,包括数字和字母 例1:[[email protected] ~]$ echo {1..10} 1 2 3 4 5 6 7 8 9 10 例二:[[email protected]