我有一个简单的测试客户端 - 服务器应用程序。客户端是html / javascript,服务器 - Java Servlet
首先,我想测试请求/响应机制。因此我使用了一个简单的cliet代码(jQuery):
$.get ("http://localhost:8081/TestProject/BasicServlet",
function(data) {
alert('Data:' +data);
}
);
在服务器端:
protected void doGet(HttpServletRequest req, HttpServletResponse res) ... {
String callBack = "TestCallback";
res.setContentType("text/html");
ServletOutputStream out = res.getOutputStream();
out.write(callBack.getBytes("UTF-8"));
out.flush();
}
所以,Servlet捕获来自客户端的请求,但我有响应问题,响应头看起来不错,有字符属性,但我没有收到callBack数据
作为Firebug中的响应,我有3个标签,标题,答案,HTML。答案和HTML都是空的
修改 我发现了一个问题:它是Access-Control-Allow-Origin违规。 谢谢你的帮助!
答案 0 :(得分:1)
根据此处的文档
http://download.oracle.com/javaee/6/api/javax/servlet/ServletResponse.html#getOutputStream
用于发送二进制数据。所以我的猜测是Content-Type
标头被设置为jQuery无法识别的某种MIME类型。我建议您使用FireBug检查响应中的Content-Type标头是否仍为“text / html”,或者使用
PrintWriter writer = res.getWriter();
writer.write(callBack);
writer.flush();
顺便说一句,使用PrintWriter
发送文本数据是推荐的方法。
答案 1 :(得分:0)
尝试 out.print()而不是 out .write(),您将在ajax调用中获得响应。