Servlets和AJAX通信

时间:2009-06-26 07:26:21

标签: java javascript ajax servlets communication

我的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);
}

}

1 个答案:

答案 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形式。