gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 23:46:33 25 4
gpt4 key购买 nike

在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异常(exception)”#源文件TestAjax.java* Hello World *文本/纯$%&UTF-8'&()*+&TestAjaxjavax/servlet/http/HttpServletjava/io/IOExceptionjavax/servlet/ServletException&javax/servlet/http/HttpServletResponsesetContentType(Ljava/lang/String;)VsetCharacterEncoding getWriter()Ljava/io/PrintWriter;java/io/PrintWriterwrite!

*�� FN,��,��,��-��?@ABC


注意里面有“Hello World”,但正确的响应应该只有“Hello World”,响应中不应该有这些废话。

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

请阐明这个问题,我将不胜感激!

最佳答案

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

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

记住 <url-pattern>/servlet/TestAjax</url-pattern> ,这是到您的 Servlet 类的外部映射。应用程序容器通过此路径将请求转发给它。

关于Tomcat:从 JavaScript 调用时,Java Servlet 会响应奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13469512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com