字符过滤util类java
- 格式:docx
- 大小:14.25 KB
- 文档页数:2
java.util包详解介绍的实⽤⼯具类库java.util包。
在这个包中,Java提供了⼀些实⽤的⽅法和。
本章介绍Java的实⽤⼯具类库java.util包。
在这个包中,Java 提供了⼀些实⽤的⽅法和数据结构。
例如,Java提供⽇期(Data)类、⽇历(Calendar)类来产⽣和获取⽇期及时间,提供随机数(Random)类产⽣各种类型的随机数,还提供了堆栈(Stack)、向量(Vector) 、位集合(Bitset)以及哈希表(Hashtable)等类来表⽰相应的数据结构。
图8.1给出了java.util包的基本层次结构图。
下⾯我们将具体介绍其中⼏个重要的类。
┌java.util.BitSet │java.util.Calendar │ └java.util.GregorianCalendar │java.util.Date │java.util.Dictionary │ └java.util.Hashtable │ └java.util.Properties │java.util.EventObject │java.util.ResourceBundle ┌普通类┤ ├java.util.ListResourceBundle │ │ └java.util.PropertyResourceBundle │ │java.util.Local │ │java.util.Observable │ │java.util.Random │ │java.util.StringTokenizer │ │java.util.Vector │ │ └java.util.Stack Java.util┤ └java.util.TimeZone │ └java.util.SimpleTimeZone │ ┌java.util.Enumeration ├接 ⼝┤java.util.EventListener │ └java.util.Observer │ ┌java.util.EmptyStackException └异常类┤java.util.MissingResourceException │java.util.NoSuchElementException └java.util.TooManyListenersException 图8.1 java.util包的基本层次结构8.2 ⽇期类Date Java在⽇期类中封装了有关⽇期和时间的信息,⽤户可以通过调⽤相应的⽅法来获取系统时间或设置⽇期和时间。
java filter匹配通配符实现原理-回复Java中的filter匹配通配符是通过使用通配符表达式来实现。
通配符表达式是一种用于匹配字符串的模式,可以用于查找和过滤符合特定模式的字符串。
在Java中,常用的通配符有星号(*)和问号(?)。
首先,我们来看通配符表达式中的星号(*)。
星号代表任意数量的字符,包括零个字符。
这意味着,如果我们在通配符表达式中使用星号,它将匹配任何长度的字符串或空字符串。
例如,表达式"abc*"将匹配以"abc"开头的任何字符串,包括"abc"、"abcd"、"abc123"等等。
其次,问号(?)是另一种常用的通配符。
问号代表一个字符的位置,它可以匹配任何字符,但只能匹配一个字符。
例如,表达式"ab?"将匹配类似于"aba"、"abb"、"abc"等长度为3的字符串,但不会匹配任何其他长度的字符串。
Java中的filter匹配通配符是通过使用正则表达式实现的。
正则表达式是一种通用的模式匹配语言,可以用于查找和操作符合特定模式的字符串。
在Java中,我们可以使用Pattern和Matcher类来实现正则表达式的匹配。
演示代码如下所示:import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;public class FilterDemo {public static List<String> filterList(List<String> list, String pattern) {List<String> filteredList = new ArrayList<>();Pattern p = Patternpile(pattern);for (String item : list) {Matcher m = p.matcher(item);if (m.matches()) {filteredList.add(item);}}return filteredList;}public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("abc");list.add("abcd");list.add("abc123");list.add("efg");list.add("xyz");String pattern = "abc.*";List<String> filteredList = filterList(list, pattern);for (String item : filteredList) {System.out.println(item);}}}运行以上代码,输出结果将是:abcabcdabc123在上述示例中,我们定义了一个名为`filterList`的方法,它接受一个字符串列表和一个通配符表达式作为参数,返回一个符合通配符表达式的字符串列表。
一、概述在Java编程中,我们经常会遇到需要去除字符串中的空格和特殊字符的情况。
这些空格和特殊字符可能会影响我们对字符串的处理和比较,因此需要进行清理和处理。
本文将介绍在Java中去除空格和特殊字符的方法,帮助读者更好地进行字符串处理。
二、去除空格的方法1. 使用String的trim()方法String类中提供了一个trim()方法,该方法可以去除字符串的首尾空格。
例如:```javaString str = " Hello, World! ";String trimmedStr = str.trim(); // 去除空格后的字符串为"Hello, World!"```2. 使用正则表达式如果需要去除字符串中间的空格,可以使用正则表达式来替换空格。
例如:```javaString str = "Hello, World!";String trimmedStr = str.replaceAll("\\s+", ""); // 去除空格后的字符串为"Hello,World!"```三、去除特殊字符的方法1. 使用正则表达式如果需要去除字符串中的特殊字符,也可以使用正则表达式来替换特殊字符。
下面的代码可以去除字符串中的所有非数字和字母字符:```javaString str = "Hello, 123!";String cleanedStr = str.replaceAll("[^a-zA-Z0-9]", ""); // 去除特殊字符后的字符串为"Hello123"```2. 使用Apache Commons Lang库Apache Commons Lang是一个开源的Java库,其中提供了StringUtils类,该类中有一些方便去除特殊字符的方法。
富文本标签过滤是指在用户输入的富文本内容中过滤掉一些危险的标签,比如<script>、<iframe>等,以防止XSS攻击等安全漏洞。
在Java中,我们可以使用正则表达式来实现富文本标签过滤,下面是一些关于这个话题的讨论和总结。
1. 富文本标签过滤的作用富文本标签过滤是为了防止用户输入的富文本内容中包含一些恶意的标签,比如<script>、<iframe>等,以及一些不安全的属性,比如onload、onclick等。
这些恶意标签和属性可能会导致XSS攻击(跨站脚本攻击),或者其他安全漏洞,因此需要对用户输入的富文本内容进行过滤,只允许一些安全的标签和属性出现在页面上。
2. Java中的正则表达式Java中的正则表达式是用来匹配和处理字符串的强大工具,可以实现对富文本内容中的标签进行过滤。
正则表达式是一种特殊的语法,用来描述字符串的模式,可以在字符串中进行搜索、替换、匹配等操作。
使用正则表达式,我们可以轻松地实现对富文本内容进行标签过滤。
3. 富文本标签过滤的实现在Java中,我们可以使用正则表达式来实现富文本标签过滤。
我们需要编写一个正则表达式,用来匹配富文本内容中的标签和属性。
我们可以使用Java中的正则表达式相关的类和方法,比如Pattern、Matcher等,来对富文本内容进行匹配和过滤。
4. 富文本标签过滤的建议在实现富文本标签过滤的过程中,我们需要注意一些细节和问题。
过滤的正则表达式需要足够严谨和全面,以确保能够过滤掉所有不安全的标签和属性;同时也需要注意不要过度过滤,不要误伤一些安全的标签和属性。
另外,我们还需要考虑一些特殊情况,比如一些富文本编辑器自带的样式标签和属性等。
5. 结语在实际的项目开发中,富文本标签过滤是非常重要的一环,能够有效提高全球信息湾的安全性,防止一些潜在的安全隐患。
通过使用Java 中的正则表达式,我们可以很方便地实现对富文本内容的标签过滤,确保用户输入的内容是安全可靠的。
java过滤特殊字符操作(xss攻击解决⽅案)XSS ,全名:cross-site scripting(跨站点脚本),是当前 web 应⽤中最危险和最普遍的漏洞之⼀。
攻击者尝试注⼊恶意脚本代码(常js脚本)到受信任的⽹站上执⾏恶意操作,⽤户使⽤浏览器浏览含有恶意脚本页⾯时,会执⾏该段恶意脚本,进⽽影响⽤户(⽐如关不完的⽹站、盗取⽤户的 cookie 信息从⽽伪装成⽤户去操作)等等。
它与 SQL 注⼊很类似,同样是通过注⼊恶意指令来进⾏攻击。
但 SQL 注⼊是在服务器端上执⾏的,⽽ XSS 攻击是在客户端上执⾏的,这点是他们本质区别。
其实,个⼈感觉对于xss攻击不必区分究竟是反射型XSS、存储型XSS还是DOM Based XSS,只需要知道如何去防护。
⽽防护的最有效的措施就是过滤,对前端页⾯提交到后台的内容进⾏过滤。
具体如下:1.解决⽅法⼀拦截所有的请求参数,对请求参数中包含特殊字符'<‘或'>'进⾏过滤。
package com.haier.openplatform.srm.base.filter;import java.io.IOException;import java.util.Iterator;import java.util.Map;import java.util.Set;import javax.servlet.FilterChain;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRequestWrapper;import javax.servlet.http.HttpServletResponse;import org.springframework.web.filter.OncePerRequestFilter;public class StringFilter extends OncePerRequestFilter{@Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain)throws ServletException, IOException {chain.doFilter(new StringFilterRequest((HttpServletRequest)request), response);}}class StringFilterRequest extends HttpServletRequestWrapper {public StringFilterRequest(HttpServletRequest request) {super(request);}@Overridepublic String getParameter(String name) {// 返回值之前先进⾏过滤return filterDangerString(super.getParameter(name));}@Overridepublic String[] getParameterValues(String name) {// 返回值之前先进⾏过滤String[] values = super.getParameterValues(name);if(values==null){return null;}for (int i = 0; i < values.length; i++) {values[i] = filterDangerString(values[i]);}return values;}@Overridepublic Map getParameterMap() {Map keys = super.getParameterMap();Set set = keys.entrySet();Iterator iters = set.iterator();while (iters.hasNext()) {Object key = iters.next();Object value = keys.get(key);keys.put(key, filterDangerString((String[]) value));}return keys;}/*@Overridepublic Object getAttribute(String name) {// TODO Auto-generated method stubObject object = super.getAttribute(name);if (object instanceof String) {return filterDangerString((String) super.getAttribute(name));} elsereturn object;}*/public String filterDangerString(String value) {if (value == null) {return null;}// value = value.replaceAll("\\{", "{");value = value.replaceAll("<", "<");value = value.replaceAll(">", ">");// value = value.replaceAll("\t", " ");// value = value.replaceAll("\r\n", "\n");// value = value.replaceAll("\n", "<br/>");// value = value.replaceAll("'", "'");// value = value.replaceAll("\\\\", "\");// value = value.replaceAll("\"", """);// value = value.replaceAll("\\}", "﹜").trim();return value;}public String[] filterDangerString(String[] value) {if (value == null) {return null;}for (int i = 0; i < value.length; i++) {String val = filterDangerString(value[i]);value[i] = val;}return value;}}web.xm中的过滤器配置:<filter><filter-name>StringFilter</filter-name><filter-class>com.xxx.base.filter.StringFilter</filter-class></filter><filter-mapping><filter-name>StringFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>2.解决⽅法⼆(转,未验证)2.1前端过滤2.1.1 javascript 原⽣⽅法//转义元素的innerHTML内容即为转义后的字符function htmlEncode ( str ) {var ele = document.createElement('span');ele.appendChild( document.createTextNode( str ) );return ele.innerHTML;}//解析function htmlDecode ( str ) {var ele = document.createElement('span');ele.innerHTML = str;return ele.textContent;}2.1.2 JQuery ⽅法function htmlEncodeJQ ( str ) {return $('<span/>').text( str ).html();}function htmlDecodeJQ ( str ) {return $('<span/>').html( str ).text();}2.1.3 调⽤⽅法var msg1= htmlEncodeJQ('<script>alert('test');</script>');var msg1= htmlEncode('<script>alert('test');</script>');//结果变成:<script>alert('test');</script>2.2 后端过滤2.2.1 java ⼀些框架⾃动⼯具类,⽐如:org.springframework.web.util.HtmlUtilspublic static void main(String[] args) {String content = "<script>alert('test');</script>";System.out.println("content="+content);content = HtmlUtils.htmlEscape(content);System.out.println("content="+content);content = HtmlUtils.htmlUnescape(content);System.out.println("content="+content);}但这样有个问题,就是它全部的html标签都不解析了。
Java正则表达式过滤出字母、数字和中⽂1、Java中过滤出字母、数字和中⽂的正则表达式(1)过滤出字母的正则表达式[^(A-Za-z)](2)过滤出数字的正则表达式[^(0-9)](3)过滤出中⽂的正则表达式[^(\\u4e00-\\u9fa5)](4)过滤出字母、数字和中⽂的正则表达式[^(a-zA-Z0-9\\u4e00-\\u9fa5)]2、实例源码*** @Title:FilterStr.java* @Package:com.you.dao* @Description:Java中过滤数字、字母和中⽂* @Author: 游海东* @date: 2014年3⽉12⽇下午7:18:20* @Version V1.2.3*/package com.you.dao;/*** @类名:FilterStr* @描述:正则表达式过滤数字、字母和中⽂* @Author:游海东* @date: 2014年3⽉12⽇下午7:18:20*/public class FilterStr{/**** @Title : filterNumber* @Type : FilterStr* @date : 2014年3⽉12⽇下午7:23:03* @Description : 过滤出数字* @param str* @return*/public static String filterNumber(String number){number = number.replaceAll("[^(0-9)]", "");return number;}/**** @Title : filterAlphabet* @Type : FilterStr* @date : 2014年3⽉12⽇下午7:28:54* @Description : 过滤出字母* @param alph* @return*/public static String filterAlphabet(String alph){alph = alph.replaceAll("[^(A-Za-z)]", "");return alph;}/**** @Title : filterChinese* @Type : FilterStr* @date : 2014年3⽉12⽇下午9:12:37* @Description : 过滤出中⽂* @param chin* @return*/public static String filterChinese(String chin){chin = chin.replaceAll("[^(\\u4e00-\\u9fa5)]", "");return chin;}/**** @Title : filter* @Type : FilterStr* @date : 2014年3⽉12⽇下午9:17:22* @Description : 过滤出字母、数字和中⽂* @param character* @return*/public static String filter(String character){character = character.replaceAll("[^(a-zA-Z0-9\\u4e00-\\u9fa5)]", ""); return character;}/*** @Title : main* @Type : FilterStr* @date : 2014年3⽉12⽇下午7:18:22* @Description :* @param args*/public static void main(String[] args){/*** 声明字符串you*/String you = "^&^&^you123$%$%你好";/*** 调⽤过滤出数字的⽅法*/you = filterNumber(you);/*** 打印结果*/System.out.println("过滤出数字:" + you);/*** 声明字符串hai*/String hai = "¥%……4556ahihdjsadhj$%$%你好吗wewewe";/*** 调⽤过滤出字母的⽅法*/hai = filterAlphabet(hai);/*** 打印结果*/System.out.println("过滤出字母:" + hai);/*** 声明字符串dong*/String dong = "$%$%$张三34584yuojk李四@#¥#%%¥……%&"; /*** 调⽤过滤出中⽂的⽅法*/dong = filterChinese(dong);/*** 打印结果*/System.out.println("过滤出中⽂:" + dong);/*** 声明字符串str*/String str = "$%$%$张三34584yuojk李四@#¥#%%¥……%&"; /*** 调⽤过滤出字母、数字和中⽂的⽅法*/str = filter(str);/*** 打印结果*/System.out.println("过滤出字母、数字和中⽂:" + str);}}3、实例运⾏结果过滤出数字:123过滤出字母:ahihdjsadhjwewewe过滤出中⽂:张三李四过滤出字母、数字和中⽂:张三34584yuojk李四ps:Java正则表达式过滤汉字String str = "hello你好吗,我很好 thank you";String reg = "[\u2E80-\u9FFF]";Pattern pat = pile(reg);Matcher mat = pat.matcher(str);String repickStr = mat.replaceAll("");System.out.println("过滤中⽂后: "+repickStr);Demo:import java.util.regex.Matcher;import java.util.regex.Pattern;public class T {/*** 过滤字母* @param alphabet* @return*/public static String filterAlphabet(String alphabet){return alphabet.replaceAll("[A-Za-z]", "");}/*** 过滤数字* @param digital* @return*/public static String filterDigital(String digital){return digital.replaceAll("[0-9]", "");}/*** 过滤汉字* @param chin* @return*/public static String filterChinese(String chin){return chin.replaceAll("[\\u4e00-\\u9fa5]", "");}/*** 过滤字母、数字、汉字* @param character* @return*/public static String filterAll(String character){return character.replaceAll("[a-zA-Z0-9\\u4e00-\\u9fa5]", ""); }/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubString str = "hello你好吗,我很好 thank you";String reg = "[\u2E80-\u9FFF]";Pattern pat = pile(reg);Matcher mat = pat.matcher(str);String repickStr = mat.replaceAll("");System.out.println("过滤中⽂后: "+repickStr);System.out.println("-----------------");System.out.println(filterAlphabet("123abc你好"));System.out.println(filterDigital("123abc你好"));System.out.println(filterChinese("123abc你好"));System.out.println(filterAll("123abc你好"));}}以上内容是关于java正则表达式过滤中⽂、字母、数字的全部叙述,希望⼤家喜欢。
stringescapeutils方法StringEscapeUtils 是 Apache Commons Lang 库中的一个工具类,用于处理字符串的转义和反转义操作。
该类提供了一些方法,可用于将字符串中的特殊字符进行转义,以便安全地在不同上下文中使用。
以下是 StringEscapeUtils 中一些常用的方法:escapeJava(String input):将 Java 字符串中的特殊字符进行转义,例如将双引号、换行符等转义为相应的转义序列。
String escapedString = StringEscapeUtils.escapeJava("This is a \"quoted\" string.\nNew line.");System.out.println(escapedString);unescapeJava(String input):对通过 escapeJava 转义的字符串进行反转义。
String originalString = StringEscapeUtils.unescapeJava("This is a \\\"quoted\\\" string.\\nNew line.");System.out.println(originalString);escapeHtml4(String input):将 HTML 中的特殊字符进行转义,防止 XSS 攻击。
String escapedHtml = StringEscapeUtils.escapeHtml4("<script>alert('XSS');</scrip t>");System.out.println(escapedHtml);unescapeHtml4(String input):对通过 escapeHtml4 转义的 HTML 字符串进行反转义。
java案例escapeutil工具的使用摘要:1.引言2.Java 案例背景3.EscapeUtil 工具介绍4.EscapeUtil 工具的使用方法5.EscapeUtil 工具的应用场景6.总结正文:引言在Java 编程中,我们经常需要对字符串进行处理,尤其是在与其他系统进行数据交互时,可能会遇到特殊字符的处理问题。
为了解决这些问题,本文将介绍一个Java 案例——EscapeUtil 工具的使用。
Java 案例背景在Java 编程中,我们经常需要对字符串进行处理,尤其是在与其他系统进行数据交互时,可能会遇到特殊字符的处理问题。
为了解决这些问题,本文将介绍一个Java 案例——EscapeUtil 工具的使用。
EscapeUtil 工具介绍EscapeUtil 是一个简单易用的Java 工具类,主要用于对字符串中的特殊字符进行编码和解码。
通过使用EscapeUtil 工具,可以轻松地处理字符串中的特殊字符,从而避免在与其他系统进行数据交互时出现问题。
EscapeUtil 工具的使用方法EscapeUtil 工具的使用非常简单,主要包括以下几个步骤:1.导入EscapeUtil 类:```javaimport com.alibaba.fastjson.util.EscapeUtil;```2.使用encode 方法进行编码:```javaString originalString = "特殊字符串";String encodedString = EscapeUtil.encode(originalString);```3.使用decode 方法进行解码:```javaString decodedString = EscapeUtil.decode(encodedString);```EscapeUtil 工具的应用场景EscapeUtil 工具广泛应用于Java 编程中,尤其是在与其他系统进行数据交互时,可以有效地处理特殊字符的问题。
java.util包下的类及常⽤⽅法1、⽇期类 Date类
常⽤⽅法
创建⽇期对象:Date date = new Date ( ) ;
获取当前时间以标准格式:date
获取当前时间的毫秒数:date.getTIme ( )
获取纪元时间:date。
toGMTString ( )
时间转成字符串:date.toString ( )
这个类的⼀些⽅法已经过时了、被⽇历类取代!
2、⽇历类 Calender类
常⽤⽅法
getlnstance():获取⽇历对象
get():获取指定的单位的⽇历数值(年,⽉,⽇等等)
set():设置指定单位的⽇历数值
add():添加指定单位的⽇历数值
getTimelnMills():获取⽇历的毫秒数
3、SCanner类
常⽤⽅法
扫描控制台:Scanner sc = new Scanner(System.in)
扫描字符串,遇到空格就返回给程序:sc.next()
扫描⼀个整数:sc.nextInt()
扫描⼀个⼩数:sc.nextDouble()
扫描⼀⾏:sc.nextLine()
4、定时器类 Timer类
常⽤⽅法
创建TImer对象:
Timer timer = new Timer();
Timer timer = new Timer(name);
timer.schedule(TimerTask,2000); 2秒后执⾏⼀次任务
t imer.schedule(TimerTask,2000,1000); 2秒后开始执⾏任务,每1s执⾏⼀次。
package com.harmantech.util;
/**
*系统框架工具类,用于字符串处理。
*
*@author Lu liru
*@version 1.0,07/14/12
*@since v1.0
*/
public class StringUtil {
/**
*过滤非法字符
*@param src
*@return
*/
public static String filterIllegalCharacter(String src) { if (src == null)
return null;
final StringBuilder result = new StringBuilder("");
final char[] chararray = src.toCharArray();
for (char c : chararray) {
if (c == '\r')
continue;
if (c == '&')
result.append("&");
else if (c == '#')
result.append("#");
else if (c == '*')
result.append("*");
else if (c == ':')
result.append(":");
else if (c == ';')
result.append(";");
else if (c == '<')
result.append("<");
else if (c == '>')
result.append(">");
else if (c == ' ')
result.append(" ");
else if (c == '\n')
result.append("<br />");
else if (c == '"')
result.append(""");
else if (c == '\'')
result.append("'");
else if (c == '/')
result.append("/");
else if (c == '$')
result.append("$");
else if (c == '(')
result.append("(");
else if (c == ')')
result.append(")");
else if (c == '{')
result.append("{");
else if (c == '}')
result.append("}");
else if (c == '*')
result.append("*");
else if (c == '%')
result.append("%");
else if (c == '+')
result.append("+");
else if (c == '-')
result.append("-");
else if (c == '~')
result.append("~");
else if (c == '\t')
result.append(" ");
else
result.append(c);
}
return result.toString();
}
}。