在TestAjax.java中(位置:webapps / servlets /,已编译):
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
String data = "Hello World";
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(data);
}
在HTML(JavaScript)中:
function showHelloWorld(inputForm) {
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
var data = xhr.responseText;
alert(data);
}
}
xhr.open('GET', '../../examples/servlets/TestAjax.class', true);
xhr.send(null);
}
在web.xml中:
<servlet>
<servlet-name>TestAjax</servlet-name>
<display-name>TestAjax</display-name>
<servlet-class>TestAjax</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestAjax</servlet-name>
<url-pattern>/servlet/TestAjax</url-pattern>
</servlet-mapping>
症状:
2,
()VCodeLineNumberTabledoGetR(Ljavax / servlet的/ HTTP / HttpServletRequest的; Ljavax / servlet的/ HTTP / HttpServletResponse的;)!V 异常“# 源文件 TestAjax.java * Hello World * 纯文本/ $%&安培; UTF-8' 及()* +&安培; TestAjaxjavax / servlet的/ HTTP / HttpServletjava / IO / IOExceptionjavax / servlet的/的ServletException&安培;使用javax / servlet的/ HTTP / HttpServletResponsesetContentType(Ljava /郎/字符串;) VsetCharacterEncoding getWriter()Ljava / io / PrintWriter; java / io / PrintWriterwrite!
* FN ,,, - ?@ ABC
注意其中有“Hello World”,但正确的响应应该只有“Hello World”,响应中不应该有所有这些掷骰子。
我已经检查了一百万次代码和部署,仍然没有发现任何线索。
请详细说明这个问题,我非常感激!
答案 0 :(得分:0)
您正在尝试加载已编译的Java类客户端,这是正常的,您会遇到奇怪的characeters。你可能想要的是调用servlet路径:
xhr.open('GET', '<%=request.getContextPath()%>/servlet/TestAjax', true);
记住<url-pattern>/servlet/TestAjax</url-pattern>
,这是您的Servlet类的外部映射。 Application容器通过此路径转发请求。