request.getParameter()返回损坏的数据 - Java

时间:2016-05-25 10:26:18

标签: java encoding

在我的项目中,从UI我使用HTTP post方法将字符串传递给服务器,如account<s。使用HTTPServlet的request.getParameter()方法在后端获取此值。 getParameter()返回一个编码的字符串。 account<s值被提取为account& lt;s

现在在UI中,我需要显示account<s。如果该值编码为account&lt;s,那么我可以在UI部分中使用html解码。但编码的字符串有一个额外的空间。我没有&lt;,而是& lt;

jQuery代码:

var params = {};
params.passVal = "account<s";
//ajax call
$.ajax({
    type:"POST",
    url:url,
    data:params,
    datatype:"json",
    async:false
}).success(function(json){
    //success notification
});

Java代码:

String receivedVal = request.getParameter("passVal");  //account& lt;s

我正在使用Apache Tomcat 7和jquery v2.1.3

对于所有编码字符,在第1个和第2个字符之间添加一个空格。它为什么会这样?我怎样才能用Java获取原始数据?

2 个答案:

答案 0 :(得分:2)

出现此问题的原因是servlet过滤器类,其中定义了编码过程。它不是&lt;,而是编码为& lt。非常感谢@ tak3shi指出根本原因。

答案 1 :(得分:1)

HTML实体(&LT;)不是URL编码;您需要将<编码为%3c