2014-07-23 103 views
0

我對JSP/Servlet來說很新,我一直在做一些工作,並且工作了一段時間。我有一個名爲「telGir.jsp」 jsp和我通過一個URL參數,從這個JSP到一個名爲「telKayit」的servlet將URL參數從JSP傳遞給Servlet,參數更改

一個例子URL JSP頁面,當我在本地主機上運行:

http://localhost:9081/Pol/telGir.jsp?token=3403123412340000 

這是我的JSP代碼:

<%@ page language="java" contentType="text/html; charset=UTF-8" 
pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Title</title> 

</head> 
<body 

<p align="center"><font size="14"><b>TEXT</b></font></p> 
<p align="center"><font size="14">MORE TEXT</font></p> 
<table align="center" size="800"> 
<form name="Police" id="Police" action="telKayit?token=${param.token}" method="post"> 

</table> 
<table align="center" size="800"> 
<tr><td align="center"><input type="submit" value="Tamam" style="height:2.5em; width:7.5em;font-size: 51px "></td></tr> 

</table></form> 

</body> 
</html> 

當按鈕被按下的形式帶我到這個網址:

http://localhost:9081/Pol/telKayit?token=3403123412340000 

最後在我的servlet我用這行代碼從上面的鏈接獲得令牌:

String token = request.getParameter("token"); 

這爲我工作,到目前爲止,因爲令牌由數字。最近,我被要求把編碼的文本進行標記,所以對於JSP新的URL會是這樣的:

http://localhost:9081/Pol/telGir.jsp?token=6amyutm%2F%2BhZeXxJonjEBqduaQVlXuO3%2FUAffs2MSyBs%3D 

這裏的問題是:當令牌參數正在從JSP傳遞到Servlet的出於某種原因'%'會導致它改變。當我按下按鈕時,會出現下面的鏈接,它具有不同的「標記」值。

http://localhost:9081/Pol/telKayit?token=6amyutm/+hZeXxJonjEBqduaQVlXuO3/UAffs2MSyBs= 

由於參數在servlet中接收到它時發生變化,我無法正確解碼並得到我的結果。從我研究的內容中我已經意識到'%'符號使得我的代碼將以下兩個字符解釋爲ASCII。所以:2F變成'/',2B變成'+'等。我怎樣才能阻止它,讓它只是作爲一個常規的字符串變量傳遞'token'而不改變它?

回答

0

而不是把參數在操作URL,你應該把它作爲隱藏的輸入形式,這樣的:

<form name="Police" id="Police" action="telKayit" method="post"> 
<input type="hidden" name="token" value="${param.token}" 
... 
</form>