Tomcat:Java Servlet在从JavaScript调用时响应奇怪的字符

时间:2012-11-20 08:52:26

标签: tomcat servlets

在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>

症状:

执行showHelloWorld()时,警告框显示:

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”,响应中不应该有所有这些掷骰子。

我已经检查了一百万次代码和部署,仍然没有发现任何线索。

请详细说明这个问题,我非常感激!

1 个答案:

答案 0 :(得分:0)

您正在尝试加载已编译的Java类客户端,这是正常的,您会遇到奇怪的characeters。你可能想要的是调用servlet路径:

xhr.open('GET', '<%=request.getContextPath()%>/servlet/TestAjax', true);

记住<url-pattern>/servlet/TestAjax</url-pattern>,这是您的Servlet类的外部映射。 Application容器通过此路径转发请求。