1. 程式人生 > >URL的引數中有加號傳值的問題(URL特殊字元)

URL的引數中有加號傳值的問題(URL特殊字元)

  1. URL特殊字元需轉義 
  2. 空格換成加號(+)   
  3. 正斜槓(/)分隔目錄和子目錄   
  4. 問號(?)分隔URL和查詢   
  5. 百分號(%)制定特殊字元   
  6. #號指定書籤   
  7. &號分隔引數  

    轉義字元的原因: 
    如果你的表單使用get方法提交,並且提交的引數中有“&”等特殊符的話,如果不做處理,在service端就會將&後面的作為另外一個引數來看待。例如 
    表單的action為list.jsf?act=go&state=5 
    則提交時通過request.getParameter可以分別取得act和state的值。 
    如果你的本意是act='go&state=5'這個字串,那麼為了在服務端拿到act的準確值,你必須對&進行轉義 
    url轉義字元原理: 
    將這些特殊的字元轉換成ASCII碼,格式為:%加字元的ASCII碼,即一個百分號%,後面跟對應字元的ASCII(16進位制)碼值。例如 空格的編碼值是"%20"。 
     

    1. URL特殊符號及對應的十六進位制值編碼:   
    2. +  URL 中+號表示空格 %2B   
    3. 空格 URL中的空格可以用+號或者編碼 %20   
    4. / 分隔目錄和子目錄 %2F    
    5. ? 分隔實際的 URL 和引數 %3F    
    6. % 指定特殊字元 %25    
    7. # 表示書籤 %23    
    8. & URL 中指定的引數間的分隔符 %26    
    9. = URL 中指定引數的值 %3D  

    解決方法如下(以+號為例):

    方法一、修改客戶端,將客戶端帶“+”的引數中的“+”全部替換為?“%2B”,這樣引數傳到伺服器端時就能得到“+”了。

    方法二、修改伺服器端,將空格替換為“+”,這種方式只適用於引數中有?“+”沒有空格的情況。

    例子:

    String a = reuqest.getParameter("clientStr").replace(' ','+');

    如果客戶端為clientStr=test+OK,那麼a的值為test+OK;

    方法三、修改伺服器端,將獲取引數的方法由?reuqest.getParameter改為?request.getQueryString().substring(0),然後對得到的字串進行解析。

    例子:

    String a =request.getQueryString().substring(0); 

    如果客戶端為clientStr=test+OK,那麼a的值為?clientStr=test+OK,需要再解析一下,

    a=a.?substring(10);得到a的值為?test+OK。

    附:一個JS,用來轉義URL中特殊字元的。

    function URLencode(sStr)   {          
    return escape(sStr).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g,'%2F');  
     } 
    如果你是用replace()時,使用name.replaceAll("\\ ","%20");
    st_fname=name.replaceAll("\\ ","%20");  st_fname=dst_fname.replaceAll("\\+","%2B");




相關推薦

URL引數加號的問題URL特殊字元

URL特殊字元需轉義 空格換成加號(+)   正斜槓(/)分隔目錄和子目錄   問號(?)分隔URL和查詢   百分號(%)制定特殊字元   #號指定書籤   &號分隔引數   轉義字元的原因:  如果你的表單使用get方法提交,並且提交的引數中有“&”等特殊符的話,如果不做處理,在serv

前端傳遞url引數中文,後端過來的亂碼,解決方案

一、問題重現: 原始碼:用get方式傳遞 @ResponseBody @RequestMapping(value = {"/findGroupByGroupName/{batchNo

web 專案a標籤中文到後臺的亂碼問題

      當點選下一頁出現亂碼問題: 因為title向Servlet傳輸的是中文,所以點選下一頁會出現亂碼問題解決方法: JSP:  <script type="text/javascript">    var href=$("#redirect

url引數+、空格、=、%、&、#等特殊符號的問題解決

url出現了有+,空格,/,?,%,#,&,=等特殊符號的時候,可能在伺服器端無法獲得正確的引數值,如何是好? 解決辦法 將這些字元轉化成伺服器可以識別的字元,對應關係如下: URL字元轉義 用其它字元替代吧,或用全形的。 +    URL 中+號表示空格    

url引數+、空格、=、%、&、#等特殊符號的處理

url引數中有+、空格、=、%、&、#等特殊符號的問題解決? 解決辦法: 將這些字元轉化成伺服器可以識別的字元,對應關係如下: URL字元轉義 + URL 中+號表示空格 %2B 空格 URL中的空格可以用+號

SQL交換一列數據的如男女性別

have set iat table p s 題目 highlight running 女性 在刷LeetCode的時候遇到的SQL題目 627. Swap Salary Given a table salary, such as the one below, tha

MVC Controller向ViewViewData與ViewBag

擴展方法 time gre 動態 操作 要求 name 由於 讀取 近在開發項目中,使用的是ASP.NET MVC由於之前並沒有接觸,對於它的傳值方式有些陌生,在這裏進行初步總結積累學習! 一:使用 ViewData使用: 在使用上,我們可以很明顯的看出這兩種方式的

向Spring-MVC WEB進行頁面繼續上章

8.使用RedirectView重定向 //8.使用RedirectView重定向 @RequestMapping("/test10.do") public ModelAndView test10(User user) { if(user.getUserName().equ

vue 元件間個人精編

1.父元件向子元件傳值 1⃣️.子元件標籤繫結需要傳遞的引數名 2⃣️.子元件頁面使用props 接收引數 2.子元件向父元件傳值    1⃣️.子元件使用$emit來觸發一個自定義事件,並傳遞一個引數  2⃣️.父元件中的子標籤中監聽該自定義事件並

模糊查詢支援引數*和?這樣的sql萬用字元

if(val.getPlateNo()!=null && !"".equals(val.getPlateNo())) {             String plateNo = val.getPlateNo();             if(plateNo

SpringMVC繫結引數的亂碼解決方法Post與Get

post解決方法: 在web.xml中配置如下引數,由於在javaweb中執行順序是listen——>filter——>servlet,在將請求傳遞給springmvc的前端控制器的時候,filter會先處理,其中下面的處理就是處理請求過來post的引數的亂碼問

隨筆-尋找旋轉排序陣列的最小無重複數字

題目: 假設按照升序排序的陣列在預先未知的某個點上進行了旋轉。 ( 例如,陣列 [0,1,2,4,5,6,7] 可能變為 [4,5,6,7,0,1,2] )。 請找出其中最小的元素。 你可以假設陣列中不存在重複元素。 示例 1: 輸入: [3,4,5,1,2] 輸

獲取包下所有類的註解的 java工具類

作用:這個工具類主要的作用就是獲取類中的註解的值。 應用場景:做許可權的時候獲取@RequestMapping();的值,自動新增到資料庫中。 /** * getRequestMappingValue方法描述: * 作者:thh

四位元組字元特殊字元入庫報錯解決方案

錯誤資訊: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect string value: '\xF0\x9F\x99\x8F" 解決辦法:       1. 將表字段字符集設定成utf8mb4 ,並執行插入前執行:SE

JS防止指令碼注入替換特殊字元

htmlEncode: (function() { var entities = { '&': '&', '>': '>', '<': '<',

URL引數如果+加號要對引數進行編碼,後臺取到的加號才不會變為空格。

後臺對引數進行編碼的方法:URLEncoder.encode(str); 後臺取引數值時直接寫:String strFileCode = request.getParameter("filecode");即可取得編碼後的值。 附: java沒有方法對應javascript

使用springmvc從頁面獲取資料,然後根據獲得的引數資訊進行修改,如果修改的資料含有不是基本資料型別的引數。比如引數Date型別的資料時,需要我們進行引數型別轉換。

1.1 需求   在商品修改頁面可以修改商品的生產日期,並且根據業務需求自定義日期格式。 1.2 需求分析   由於日期資料有很多格式,所以springmvc沒辦法把字串轉換成日期型別。所以需要自定義引數繫結。前端控制器接收到請求後,找到註解形式的處理器介面卡,對RequestMapping標記的方法進

隨筆-尋找旋轉排序陣列的最小重複元素

題目: 假設按照升序排序的陣列在預先未知的某個點上進行了旋轉。 ( 例如,陣列 [0,1,2,4,5,6,7] 可能變為 [4,5,6,7,0,1,2] )。 請找出其中最小的元素。 注意陣列中可能存在重複的元素。 示例 1: 輸入: [1,3,5] 輸出: 1

js的頁面和中文顯示亂碼問題innerHTML在頁面上顯示亂碼focusdroid

js中的頁面傳值和中文顯示亂碼問題(innerHTML在頁面上顯示亂碼) 0.需求 a頁面的值傳到B頁面上(數字,字母或者中文),需要顯示在頁面上,頁面上顯示的是亂碼(或者在控制檯打印出來是中文,放在頁面上就是亂碼) 本身就需要傳遞中文的值,單傳過去就是

Mybatis框架Mapper檔案引數獲取。【Mybatis】

Mybatis框架中,Mapper檔案引數獲取一般有以下幾種: 1、引數個數為1個(string或者int) dao層方法為以下兩種: /** * 單個int型 */ public Lis