整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          「Java工具類」Apache的StringEscapeUtils轉義工具類

          紹語

          本號主要是Java常用關鍵技術點,通用工具類的分享;以及springboot+springcloud+Mybatisplus+druid+mysql+redis+swagger+maven+docker等集成框架的技術分享;datax、kafka、flink等大數據處理框架的技術分享。文章會不斷更新,歡迎碼友關注點贊收藏轉發!

          望各位碼友點擊關注,沖1000粉。后面會錄制一些視頻教程,圖文和視頻結合,比如:圖書介紹網站系統、搶購系統、大數據中臺系統等。技術才是程序猿的最愛,碼友們沖啊

          如果碼友覺得代碼太長,可以從頭到尾快速掃射一遍,了解大概即可。覺得有用后再轉發收藏,以備不時之需。

          正文:

          Apache的StringEscapeUtils轉義工具類,主要是針對html、json、xml、js等的轉義。具體使用場景在項目中并不是很多,所以可能了解的人也比較少。

          StringEscapeUtils轉義例子

           import org.apache.commons.text.StringEscapeUtils;
           import org.junit.Test;
           
           public class StringEscapeUtilsTest {
           
               @Test
               public void test() {
                   // 轉義html腳本和反轉義html腳本
                   String inputText = "<input type=\"button\" value=\"點我\"/>";
                   String s1 = StringEscapeUtils.escapeHtml4(inputText);
                   System.out.println(s1);
                   String s2 = StringEscapeUtils.unescapeHtml4(s1);
                   System.out.println(s2);
           
                   // 轉義js腳本和反轉義js腳本
                   String s3 = StringEscapeUtils.escapeEcmaScript("<script>alert('點我')<script>");
                   System.out.println(s3);
                   String s4 = StringEscapeUtils.unescapeEcmaScript(s3);
                   System.out.println(s4);
           
                   // 把字符串轉義為unicode編碼和從把unicode編碼轉義為字符串
                   String s5 = StringEscapeUtils.escapeJava("abc不要點我了");
                   System.out.println(s5);
                   String s6 = StringEscapeUtils.unescapeJava(s5);
                   System.out.println(s6);
           
                   // 轉義XML和反轉義XML
                   String s7 = StringEscapeUtils.escapeXml11("<name>張三</name>");
                   System.out.println(s7);
                   String s8 = StringEscapeUtils.unescapeXml(s7);
                   System.out.println(s8);
               }
           }

          其他方法:


          工具類源碼:

          直接引入工具類的jar包即可

           <dependency>
             <groupId>org.apache.commons</groupId>
             <artifactId>commons-text</artifactId>
             <version>1.1</version>
           </dependency>

          和本文使用的相同功能的工具類:

          • org.apache.commons.lang.StringEscapeUtils,與org.apache.commons.text.StringEscapeUtils工具類一樣,但是apache把它注解為過時了,它還有個牛逼的方法就是轉義sql【escapeSql】,但是建議使用本文使用的包;
          <dependency>
              <groupId>commons-lang</groupId>
              <artifactId>commons-lang</artifactId>
              <version>2.6</version>
          </dependency>
          • org.springframework.web.util.HtmlUtils,spring的一個工具類,主要針對html,可以了解下;
          <dependency>
              <groupId>org.springframework</groupId>
              <artifactId>spring-web</artifactId>
              <version>5.3.6</version>
          </dependency>
          • groovy.json.StringEscapeUtils,和org.apache.commons.text.StringEscapeUtils一樣的功能,項目一般不用這個包,但是可以了解下;如果會groovy腳本的話應該用的就多,groovy-xxx有很多工具類的,但是我也沒用過,感興趣的可以探索下。
          <dependency>
            <groupId>org.codehaus.groovy</groupId>
            <artifactId>groovy-all</artifactId>
            <version>3.0.9</version>
            <type>pom</type>
          </dependency>

          鄙人編碼十年多,在項目中也積累了一些工具類,很多工具類在每個項目都有在用,很實用。大部分是鄙人封裝的,有些工具類是同事封裝的,有些工具類已經不記得是ctrl+c的還是自己封裝的了,現在有空就會總結項目中大部分的工具類,分享給各位碼友。如果文章中涉及的代碼有侵權行為請通知鄙人處理。

          計劃是先把工具類整理出來,正所謂工欲善其事,必先利其器。項目中不管是普通單體項目還是多模塊maven項目或是分布式微服務,一部分功能模塊都是可以重用的,工具類模塊就是其中之一。

          文主要講述:文件名工具類Apache之org.apache.commons.lang.StringEscapeUtils。

          java中轉義是指:將某些特殊字符轉換為它在特定場景中原來的意義。

          轉義字符是指無法直接顯示的字符。

          常見的場景是:

          1、同一字符在不同編碼中表達形式不一樣。

          2、某些特定的字符在不同環境、不同語言中表達形式不一樣。

          下面演示StringEscapeUtils的用法:

          一、轉義Unicode編碼

          //轉義為Unicode編碼
          String escape = StringEscapeUtils.escapeJava("古德貓寧");
          輸出:\u53E4\u5FB7\u732B\u5B81
          //反轉義Unicode編碼
          String unescape = StringEscapeUtils.unescapeJava("\u53E4\u5FB7\u732B\u5B81");
          輸出:古德貓寧

          二、轉義SQL

          sql注入是網絡攻擊方式之一,而防止SQL注入的唯一方法是SQL參數化。

          escapeSql就提供了sql轉義功能,從而實現防止sql注入。

          String userId = "000001";
          String sql = "select user_name from tab_emp where user_id = " + StringEscapeUtils.escapeSql("'" + userId + "'");
          輸出:select user_name from tab_emp where user_id = ''000001''

          三、轉義html腳本

          //轉義為html腳本
          String escapeHtml = StringEscapeUtils.escapeHtml("<div>Hello World!</div>");
          輸出:<div>Hello World!</div>
          //反轉義html腳本
          String unescapeHtml = StringEscapeUtils.unescapeHtml("<div>Hello World!</div>");
          輸出:<div>Hello World!</div>

          四、轉義JS腳本

          //轉義為JS腳本
          String escapeJS = StringEscapeUtils.escapeJavaScript("<script type=\"text/javascript\">alert('哈哈')<script>");
          輸出:<script type=\"text\/javascript\">alert(\'\u54C8\u54C8\')<script>
          //反轉義JS腳本
          String unescapeJS = StringEscapeUtils.unescapeJavaScript("<script>alert(\'哈哈\')<script>");
          輸出:<script>alert('哈哈')<script>

          五、轉義CSV

          String escapeCsv = StringEscapeUtils.escapeCsv("He said \"'I love you'\"");
          輸出:"He said ""'I love you'"""
          String unescapeCsv = StringEscapeUtils.unescapeCsv("\"He said \"\"'I love you'\"\"\"");
          輸出:He said "'I love you'"

          六、轉義XML

          注于Java領域優質技術,歡迎關注

          作者:alterem

          在Java中,工具類定義了一組公共方法,這篇文章將介紹Java中使用最頻繁及最通用的Java工具類。以下工具類、方法按使用流行度排名,參考數據來源于Github上隨機選取的5萬個開源項目源碼。

          一. org.apache.commons.io.IOUtils

          closeQuietly:關閉一個IO流、socket、或者selector且不拋出異常,通常放在finally

          toString:轉換IO流、 Uri、 byte[]為String

          copy:IO流數據復制,從輸入流寫到輸出流中,最大支持2GB

          toByteArray:從輸入流、URI獲取byte[]

          write:把字節. 字符等寫入輸出流

          toInputStream:把字符轉換為輸入流

          readLines:從輸入流中讀取多行數據,返回List<String>

          copyLarge:同copy,支持2GB以上數據的復制

          lineIterator:從輸入流返回一個迭代器,根據參數要求讀取的數據量,全部讀取,如果數據不夠,則失敗

          二. org.apache.commons.io.FileUtils

          deleteDirectory:刪除文件夾

          readFileToString:以字符形式讀取文件內容

          deleteQueitly:刪除文件或文件夾且不會拋出異常

          copyFile:復制文件

          writeStringToFile:把字符寫到目標文件,如果文件不存在,則創建

          forceMkdir:強制創建文件夾,如果該文件夾父級目錄不存在,則創建父級

          write:把字符寫到指定文件中

          listFiles:列舉某個目錄下的文件(根據過濾器)

          copyDirectory:復制文件夾

          forceDelete:強制刪除文件

          三. org.apache.commons.lang.StringUtils

          isBlank:字符串是否為空 (trim后判斷)

          isEmpty:字符串是否為空 (不trim并判斷)

          equals:字符串是否相等

          join:合并數組為單一字符串,可傳分隔符

          split:分割字符串

          EMPTY:返回空字符串

          trimToNull:trim后為空字符串則轉換為null

          replace:替換字符串

          四. org.apache.http.util.EntityUtils

          toString:把Entity轉換為字符串

          consume:確保Entity中的內容全部被消費。可以看到源碼里又一次消費了Entity的內容,假如用戶沒有消費,那調用Entity時候將會把它消費掉

          toByteArray:把Entity轉換為字節流

          consumeQuietly:和consume一樣,但不拋異常

          getContentCharset:獲取內容的編碼

          五. org.apache.commons.lang3.StringUtils

          isBlank:字符串是否為空 (trim后判斷)

          isEmpty:字符串是否為空 (不trim并判斷)

          equals:字符串是否相等

          join:合并數組為單一字符串,可傳分隔符

          split:分割字符串

          EMPTY:返回空字符串

          replace:替換字符串

          capitalize:首字符大寫

          六. org.apache.commons.io.FilenameUtils

          getExtension:返回文件后綴名

          getBaseName:返回文件名,不包含后綴名

          getName:返回文件全名

          concat:按命令行風格組合文件路徑(詳見方法注釋)

          removeExtension:刪除后綴名

          normalize:使路徑正常化

          wildcardMatch:匹配通配符

          seperatorToUnix:路徑分隔符改成unix系統格式的,即/

          getFullPath:獲取文件路徑,不包括文件名

          isExtension:檢查文件后綴名是不是傳入參數(List<String>)中的一個

          七. org.springframework.util.StringUtils

          hasText:檢查字符串中是否包含文本

          hasLength:檢測字符串是否長度大于0

          isEmpty:檢測字符串是否為空(若傳入為對象,則判斷對象是否為null)

          commaDelimitedStringToArray:逗號分隔的String轉換為數組

          collectionToDelimitedString:把集合轉為CSV格式字符串

          replace 替換字符串

          7. delimitedListToStringArray:相當于split

          uncapitalize:首字母小寫

          collectionToDelimitedCommaString:把集合轉為CSV格式字符串

          tokenizeToStringArray:和split基本一樣,但能自動去掉空白的單詞

          八. org.apache.commons.lang.ArrayUtils

          contains:是否包含某字符串

          addAll:添加整個數組

          clone:克隆一個數組

          isEmpty:是否空數組

          add:向數組添加元素

          subarray:截取數組

          indexOf:查找某個元素的下標

          isEquals:比較數組是否相等

          toObject:基礎類型數據數組轉換為對應的Object數組

          九. org.apache.commons.lang.StringEscapeUtils

          參考十五:org.apache.commons.lang3.StringEscapeUtils

          十. org.apache.http.client.utils.URLEncodedUtils

          format:格式化參數,返回一個HTTP POST或者HTTP PUT可用application/x-www-form-urlencoded字符串

          parse:把String或者URI等轉換為List<NameValuePair>

          十一. org.apache.commons.codec.digest.DigestUtils

          md5Hex:MD5加密,返回32位字符串

          sha1Hex:SHA-1加密

          sha256Hex:SHA-256加密

          sha512Hex:SHA-512加密

          md5:MD5加密,返回16位字符串

          十二. org.apache.commons.collections.CollectionUtils

          isEmpty:是否為空

          select:根據條件篩選集合元素

          transform:根據指定方法處理集合元素,類似Listmap()

          filter:過濾元素,雷瑟List的filter()

          find:基本和select一樣

          collect:和transform 差不多一樣,但是返回新數組

          forAllDo:調用每個元素的指定方法

          isEqualCollection:判斷兩個集合是否一致

          十三. org.apache.commons.lang3.ArrayUtils

          contains:是否包含某個字符串

          addAll:添加整個數組

          clone:克隆一個數組

          isEmpty:是否空數組

          add:向數組添加元素

          subarray:截取數組

          indexOf:查找某個元素的下標

          isEquals:比較數組是否相等

          toObject:基礎類型數據數組轉換為對應的Object數組

          十四. org.apache.commons.beanutils.PropertyUtils

          getProperty:獲取對象屬性值

          setProperty:設置對象屬性值

          getPropertyDiscriptor:獲取屬性描述器

          isReadable:檢查屬性是否可訪問

          copyProperties:復制屬性值,從一個對象到另一個對象

          getPropertyDiscriptors:獲取所有屬性描述器

          isWriteable:檢查屬性是否可寫

          getPropertyType:獲取對象屬性類型

          十五. org.apache.commons.lang3.StringEscapeUtils

          unescapeHtml4:轉義html

          escapeHtml4:反轉義html

          escapeXml:轉義xml

          unescapeXml:反轉義xml

          escapeJava:轉義unicode編碼

          escapeEcmaScript:轉義EcmaScript字符

          unescapeJava:反轉義unicode編碼

          escapeJson:轉義json字符

          escapeXml10:轉義Xml10

          這個現在已經廢棄了,建議使用commons-text包里面的方法。

          十六. org.apache.commons.beanutils.BeanUtils

          copyPeoperties:復制屬性值,從一個對象到另一個對象

          getProperty:獲取對象屬性值

          setProperty:設置對象屬性值

          populate:根據Map給屬性復制

          copyPeoperty:復制單個值,從一個對象到另一個對象

          cloneBean:克隆bean實例

          現在你只要了解了以上16種最流行的工具類方法,你就不必要再自己寫工具類了,不必重復造輪子。大部分工具類方法通過其名字就能明白其用途,如果不清楚的,可以看下別人是怎么用的,或者去網上查詢其用法。

          另外,工具類,根據阿里開發手冊,包名如果要使用util不能帶s,工具類命名為 XxxUtils

          來自:https://juejin.im/entry/5d4a25b451882505c2100241


          現在人工智能非常火爆,很多朋友都想學,但是一般的教程都是為博碩生準備的,太難看懂了。最近發現了一個非常適合小白入門的教程,不僅通俗易懂而且還很風趣幽默。所以忍不住分享一下給大家。點這里可以跳轉到教程。

          https://www.captainbed.net/suga


          主站蜘蛛池模板: 一区二区在线电影| AV怡红院一区二区三区| 少妇一夜三次一区二区| 中文字幕在线观看一区| 国产一区韩国女主播| 亚洲福利一区二区| 国精产品一区一区三区| 亚洲国产成人久久一区久久| 精品国产免费一区二区| 亚洲美女一区二区三区| 色一乱一伦一图一区二区精品| 三上悠亚精品一区二区久久| 日韩美女在线观看一区| 成人区人妻精品一区二区三区| 精品乱码一区二区三区四区| 无码人妻AV免费一区二区三区| 国产亚洲综合一区柠檬导航| 亚洲熟妇av一区二区三区漫画| 亚洲人成网站18禁止一区 | 久久久不卡国产精品一区二区| 国产精品视频无圣光一区| 亚洲AV无码一区二区三区牲色| 无码国产精品一区二区免费虚拟VR| 无码人妻精品一区二区三18禁| 精品永久久福利一区二区| 亚洲一区中文字幕久久| 日本午夜精品一区二区三区电影 | 无码视频一区二区三区| 亚洲日韩一区二区三区| 在线观看一区二区三区视频 | 国产另类TS人妖一区二区| 亚洲av成人一区二区三区在线观看 | 国产精品久久久久久麻豆一区| 亚洲一区二区三区四区在线观看 | 国产成人精品无人区一区| 一区二区三区免费视频观看| 久久婷婷色综合一区二区| 国产精品伦一区二区三级视频 | 天美传媒一区二区三区| 波多野结衣一区二区三区高清av | 亚洲一区二区三区无码国产|