読者です 読者をやめる 読者になる 読者になる

感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

Ajaxで変なエラーが出てうまくいかない

JavaScript JavaEE
<スポンサーリンク>

web.xmlについて

XML宣言
version,eocoding,standaloneなどの属性がある。
スタンドアロン文章とは、外部ファイルの参照が必要かどうかを示す。

<?xml version="1.0" encoding="utf-8"?>

■きまりごと
・ルート要素は単位杖ある必要がある。
XMLでは大文字と小文字は区別される。
・開始タグに対して必ず閉じタグを設定する。
XMLのコメントは以下の書式

<!-- comment -->

スキーマとは、XMLの構造を定義したもの
・もっとも簡単なスキーマDTDがある。Document Type Definition.
・web.xmlのルート要素はweb-app

・web.xmlに登録を省略したい時は、invokerサーブレットの機能を使う。

\Apache Software Foundation\apache-tomcat-6.0.35\conf\以下にある、
web.xmlを編集する。
126行目付近の以下のあたりのコメントアウトを外す。

    <servlet>
        <servlet-name>invoker</servlet-name>
        <servlet-class>
          org.apache.catalina.servlets.InvokerServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>

さらに、376行目付近の以下のコメントアウトを外す。

    <servlet-mapping>
        <servlet-name>invoker</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>

次に、同じディレクトリにあるcontext.xmlの19行目付近に以下の記述を追加する。

<Context privileged="true">

\Apache Software Foundation\apache-tomcat-6.0.35\conf\以下の
context.xmlで指定した値は、個々のwebアプリケーションのcontext.xmlのデフォルト値として利用される。

入力パラメータをサーブレットに渡して表示するサンプル
まずは画面のJSP

<%@page contentType="text/html; charset=utf-8"%>
<html>
<body>
<h2>入力文字の表示</h2>
<form action="/ajax/servlet/echo.EchoServlet">
    <input type="text" name="message">
    <input type="submit">
</form>

</body>
</html>

で、受け取る側のサーブレットはこんな感じ。

package echo;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class EchoServlet extends HttpServlet {
	public void doGet(HttpServletRequest request,
					  HttpServletResponse response) 
						throws ServletException, IOException {
		String msg = request.getParameter("message");
		response.setContentType("text/plain; charset=utf-8");
		PrintWriter out = response.getWriter();
		out.println("message=" + msg);
	}
	
}

例えば、画面に[hello]と入れて「送信」ボタンを押すと、以下のように表示される。

message=hello

では、このサンプルをAjaxで作ってみる。
上のjspを改造して、画面遷移なしでレスポンスを受け取れるようにしたい。


今回で感謝のプログラミングは【247時間目】
10000時間まで、あと【9753時間】