请求参数在我的servlet中修改

时间:2016-08-02 21:39:41

标签: java servlets servlet-filters

我将一个请求作为带有数据的URL发送到servlet,但默认情况下,servlet正在修改数据并按请求发送。您能否建议如何使用我传递给servlet的数据保持请求URL保持不变?

示例: - 当我将数据传递给servlet

  

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

当它在servelt中使用上述url作为请求时,如字符串abc = request.getParameter(“val”),val属性会自动修剪并指定为“val = PRCTXT | 12345”,但它应该像“ val = PRCTXT | 12345& ABCDEFG“。请帮帮我。

1 个答案:

答案 0 :(得分:0)

servlet解释每个&在URL中作为新参数的开头。因此,当它看到& ABCDEFG时,它认为你发送了一个名为ABCDEFG的新参数,没有任何价值(虽然这在技术上是一个"无键值"根据规范)。

要解决此问题的两件事,首先是当您想要实际发送&时,请改用%26。这将被跳过参数的代码跳过,但转换为真实的&在参数的值中。

其次是用+替换空格。 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);