1. 程式人生 > 實用技巧 >URL 引數為sql 有空格 的解決辦法

URL 引數為sql 有空格 的解決辦法

			var strsql=" select e.* from es_doc_main e where 1=1"
  				+" and e.doccode='"+prtNo+"' and e.subtype <> '1022' and e.busstype='TB' order by subtype ";
			//strsql.replace(/\s+/g,"%20");
  	      	if(arrResult[0][0]=='01')
  	      	{
  	      	easyScanWin = window.open( "./ProposalEasyScan.jsp?LoadFlag=5&QueryType=4&prtNo="+prtNo+"&MissionID="+tMissionID
                  +"&SubMissionID="+tSubMissionID+"&ProposalType=01" + "&ManageCom="+tManageCom+"&SqlStr="+encodeURI(strsql), "", ""); }

  這裡 會顯示無法找到頁面404

開發web服務中,發現當url中含有空格時,會報 400 error: bad request sytanx,經分析,url中含有特殊字元時,服務端可能無法識別。

如+,空格,/,?,%,#,&,=等。該如何破呢?

應當使用字元轉義,將特殊字元進行編碼表示。編碼格式是:% + 對應字元的ascii碼。

+ URL 中+號表示空格 %2B
空格 URL中的空格可以用+號或者編碼 %20
/ 分隔目錄和子目錄 %2F
? 分隔實際的URL和引數 %3F
% 指定特殊字元 %25
# 表示書籤 %23
& URL 中指定的引數間的分隔符 %26
= URL 中指定引數的值 %3D

所以需要處理(sql)中的空格,在js中處理辦法

..."&ManageCom="+tManageCom+"&SqlStr="+encodeURI(strsql)

 在JSP中的處理辦法

<frame id="fraPic" name="fraPic" scrolling="auto"  src="../common/EasyScanQuery/EasyScanQuery.jsp?prtNo=<%=request.getParameter("prtNo")%>
&QueryType=<%=request.getParameter("QueryType")%>&SqlStr=<%=java.net.URLEncoder.encode(request.getParameter("SqlStr"))%>">

另外檢視定義

 

atzhang