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

原文地址:https://www.cnblogs.com/zytcomeon/p/13344411.html