Servlet和AJAX通信
-
20-08-2019 - |
题
我在这里做有我的Java Servlet和Ajax请求之间的通信probleme。更多关于它:
到的index.html绝对路径(包括JavaScript / AJAX请求): HTTP://本地主机:9080 /聊天/ index.html中
在同一文件夹中的servlet: MyChat.class
和该请求是这样工作:
VAR URL = “ HTTP://本地主机:9080 /聊天”;
变种名称=的document.getElementById( “用户名”)的getAttribute( “值”)。 VAR =消息的document.getElementById( “消息”)的getAttribute( “值”);
变种tosend =名+ “” +消息;
request.open( 'GET',网址,TRUE); request.send(tosend); request.onreadystatechange = interpretRequest;
我有一个公式推,其中用户只是在名字和消息和“用户名”和“信息”类型在我的HTML文件标签。 Ajax请求的作品,这是肯定的,但它并没有与servlet的通信。我也没有一个想法,其中来自的System.out.println()的输出去。没有日志文件被填满......并且servlet是这样的:
公共类MyChat延伸的HttpServlet { 私有静态最后长的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);
}
}
解决方案
您所指定的网址是不是你的servlet。
就像URL到索引页http://<server>:<port>/<webapp name>/<resource>
的URL到您的servlet需要在与URL对应的web.xml
部分<resource>
文件的映射。
例如,如果你有你期望像在你的web.xml以下一个控制器servlet:
<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然后将遵循形式http://<server>:<port>/<webapp name>/<anything>.do
的网址。