我的java servlet和ajax请求之间确实存在通信问题。更多关于它:
index.html的绝对路径(包括javascript / ajax请求): http://localhost:9080/chat/index.html
在同一文件夹中的servlet: MyChat.class
请求的工作方式如下:
var url =“http://localhost:9080/chat”;
var name = document.getElementById(“username”)。getAttribute(“value”); var message = document.getElementById(“message”)。getAttribute(“value”);
var tosend = name +“,”+ message;
request.open('GET',url,true); request.send(tosend); request.onreadystatechange = interpretRequest;
我有一个公式,用户只需键入名称和消息,“用户名”和“消息”是我的html文件中的标签。 ajax请求有效,这是肯定的,但它不与servlet通信。我也不知道System.out.println()的输出在哪里。没有填充日志文件......并且servlet看起来像这样:
公共类MyChat扩展了HttpServlet { private static final long serialVersionUID = 1L;
private ArrayList<String> myMessages = new ArrayList<String>();
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
BufferedReader r = request.getReader();
while(r.readLine() != null)
{
// split the words at the ','
String[] tmp = r.readLine().split(".\\s");
myMessages.add(tmp[0]+" "+tmp[1]);
}
//response.setContentType("text/html");
PrintWriter out = response.getWriter();
Iterator<String> it = myMessages.iterator();
while(it.hasNext())
{
out.println(it.next());
System.out.println(it.next());
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
doGet(request, response);
}
}
答案 0 :(得分:2)
您指定的URL不是您的servlet。
就像索引页面的URL是http://<server>:<port>/<webapp name>/<resource>
一样,servlet的URL需要web.xml
文件中的映射,该映射对应于url的<resource>
部分。
例如,如果您有一个控制器servlet,那么您需要在web.xml中使用以下内容:
<servlet>
<servlet-name>controller</servlet-name>
<servlet-class>ControllerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>controller</servlet-name>
<url-pattern>/*.do</url-pattern>
</servlet-mapping>
将调用“控制器”servlet的URL将遵循http://<server>:<port>/<webapp name>/<anything>.do
形式。