2009-06-26 5 views
0

ここでは、私のJavaサーブレットとajaxリクエストの間に通信の問題があります。それについての詳細:(ジャバスクリプト/ AJAX要求を含む)のindex.htmlにサーブレットとAJAX通信

絶対パス:同じフォルダに http://localhost:9080/chat/index.html

サーブレット: 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;

私はユーザーが名前とメッセージだけを入力し、 "username"と "message"はHTMLファイルのタグである形式を持っています。 Ajaxリクエストは機能しますが、サーブレットと通信しません。私はまた、System.out.println()からの出力がどこにあるのか考えていません。ログファイルがいっぱいではありません。サーブレットは次のようになります。

パブリッククラスMyChat extends 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

アドレスバーからサーブレットを呼び出して、問題がJavaScriptかサーブレットにあるかどうかを確認してください。 (ローカルホスト:9080/chat/index.html?username = Lenniのようなもの) –

+0

は、入力タグからユーザー名を取得しているため動作しません。次のようになります。 Andre

+0

さて、ちょっとダブってHello Worldを返してみてください。 –

答えて

2

、指定したURLは、サーブレットにはありません。

インデックスページのURLがhttp://<server>:<port>/<webapp name>/<resource>の場合と同じように、サーブレットのURLには、URLの<resource>部分に対応するweb.xmlファイルのマッピングが必要です。 「コントローラのサーブレットを呼び出します。URLは、フォームhttp://<server>:<port>/<webapp name>/<anything>.doをたどる

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

:あなたはコントローラサーブレットを持っていた場合

たとえば、あなたはweb.xmlに以下のようなものを期待します。

+0

はweb.xmlを追加しました。 htmlファイルとmyクラスファイルのフォルダ内にあります。私は要求を開始するので、私は200ではない要求ステータスを取得しています...要求が失敗しました – Andre

+1

web.xmlファイルはWebアプリケーションのルートのWEB-INFディレクトリにある必要があります。 http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/WebComponents.html –

+0

ウェブアプリケーションのパッケージ化の詳細については、このチュートリアルをご覧ください。ここでクラスファイルを配置する必要があります? :-( – Andre

関連する問題