【发布时间】:2014-07-09 07:23:30
【问题描述】:
我正在从 Javascript 向 servlet 发送一些参数。有时,servlet 会接收一组空参数(通过 servlet 代码开头的System.out.println() 进行检查)。
然而,在调用 XHR.send 之前,这些参数在 Javascript 中正确生成(通过 console.log() 检查)
其他背景:
servlet 从一些数据文件生成电子表格,因此有时会有点密集。
示例代码
web.xml:
<servlet>
<description>Export Servlet</description>
<display-name>ExportServlet</display-name>
<servlet-name>ExportServlet</servlet-name>
<servlet-class>testpkg.ExportServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ExportServlet</servlet-name>
<url-pattern>/ExportServlet</url-pattern>
</servlet-mapping>
JAVASCRIPT:common.js: 函数 sendDataToServer(args...) {
// ... Some Code...
var params = "param1=" + value1 + "¶m2=" + value2;
console.log(params); // This works perfectly!
// AJAX Code
var xmlhttp;
// Handling browsers
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
// MARKER 1.0
alert("Success");
}
};
xmlhttp.open('POST', 'ExportServlet', false);
xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded;charset=UTF-8');
console.log(params); // This works perfectly!
// Sending data...
xmlhttp.send(params);
}
SERVLET:ExportServlet.java
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
// Init Code...
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
request.setCharacterEncoding("UTF-8");
try
{
// Get paramaters
String sParam1 = request.getParameter("param1");
String sParam2 = request.getParameter("param2");
// Test print params...
System.out.println("Param1 Value = " + sParam1); // Occasionally NULL
System.out.println("Param2 Value = " + sParam2); // Occasionally NULL
// More Code...
}
catch (Exception ex)
{
throw ex;
}
}
注意空参数不是由于数据问题,因为我在几分钟前工作的完全相同的数据用例中遇到了这个错误。通常这是在重复执行相同步骤时随机发生的。
知道为什么会发生这种情况吗?
【问题讨论】:
标签: java javascript ajax servlets