2016-08-02 65 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)' –