2016-08-02 54 views
1

我發送了一個請求作爲帶有數據的URL到servlet,但默認情況下,servlet正在修改數據並作爲請求發送。您能否建議如何維護請求URL與我傳遞給servlet的數據應保持相同?在我的servlet中修改了請求參數

實施例: - 當我傳遞數據使用時上述URL中的servelt作爲請求,像字符串ABC =的request.getParameter到的servlet

http://localhost/helloservlet/servlet/ppd.abcd.build.coupons.CouponValueFormatterServlet?dsn=frd_abc_abcde&lang=ENG&val=PRCTXT|12345 & ABCDEFG

(」 val「)時,val屬性會自動修剪並指定爲」val = PRCTXT | 12345「,但它應該類似於」val = PRCTXT | 12345 & ABCDEFG「。請幫助我。

+3

'&'需要進行網址編碼。目前你有一個名爲'ABCDEFG'的變量沒有值。 –

回答

0

該servlet將URL中的每個&解釋爲新參數的開始。所以當它看到 ABCDEFG時,它認爲你正在發送一個名爲ABCDEFG的新參數沒有值(儘管這在技術上根據規範是一個「無鑰匙值」)。

有兩件事要解決這個問題,首先是當你想實際發送一個&時,用%26代替。這將被分開參數的代碼跳過,但轉換爲參數值中的實際&。

二是用+替換空格。 URL中的空間有時可能會起作用,但可能會造成問題。

因此您的實際請求的URL應該是這樣的:

http://localhost/helloservlet/servlet/ppd.abcd.build.coupons.CouponValueFormatterServlet?dsn=frd_abc_abcde&lang=ENG&val=PRCTXT|12345+%26ABCDEFG 

如果你正在構建在JavaScript這些參數,你可以使用encodeURIComponent方法()來解決所有問題的字符爲您服務。所以你可以這樣做:

var userInput = *get some input here* 
var addr = 'http://www.example.com?param1=' + encodeURIComponent(userInput); 
+0

基本上傳遞URL以從柔性的servlet這樣的:coupValImg.source = 「/」 + Model.site.siteInfo.webContext + \t \t \t \t \t 「/servlet/cpd.campaign.build.coupons.CouponValueFormatterServlet?lang=」 + cmpnLanguage + 「&VAL =」 + variable.value + 「&寬度=」 + variable.width + 「&高度=」 + variable.height + \t \t \t \t \t 「&zoomFactor =」 + zoomFactor.toString()+ 「&BGCOLOR =」 + variable.bgColor +「&fgcolor =」+ variable.fontColor; – Ravikanth

+0

在URL中,我將value作爲variable.value =「ABCDEF&12345」傳遞,並且URL完全傳遞給servlet。但是,當servlet通過request.getAttribute(「val」)使用該值時,僅顯示「ABCDEF」,不顯示我作爲值傳遞的全長字符串。請讓我知道,即使嘗試encodeURLComponent(val)也無法正常工作,如何實現此目的。 – Ravikanth

+0

我打錯了方法名稱,它應該是'encodeURIComponent()'。以上更正。我對Flex一無所知,但嘗試將構造的URL發送到瀏覽器控制檯並查看它是否正在修復'val'值。 '的console.log(coupValImg.source)' –