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

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

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

JavaScriptでヘッダーを設定して、サーブレットにリクエスト。

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

EclipseTomcatの連携

1.tomcatPluginV321.zipをダウンロードする。
http://www.eclipsetotale.com/tomcatPlugin.html#A3

2.eclipseのdropinsの下に展開する。

3.ウィンドウ→設定→Tomcattomcatほーむの設定と、コンテキスト・ファイルを選択する
コンテキスト・ファイルを選択すると、
\apache-tomcat-6.0.37\conf\Catalina\localhost
ディレクトリにプロジェクト名.xmlという名前のコンテキストファイルが作成される。

4.パッケージ・エクスプローラで「新規」→「その他」→「Java」→「Tomcatプロジェクト」を選択する

ここで問題が発生した。
パースペクティブのカスタマイズを行い、アイコンをクリックしてTomcatを起動すると・・・
eclipseをインストールしたときにデフォルトで設定されていたTomcatが起動して、
動かしたい新しくインストールしたTomcatが起動できないという問題が発生した。

・設定→Tomcat→拡張→Tomcatベース
にもちゃんと動かしたいTomcatを設定する。

すると、ちゃんと狙ったTomcatが動いた。
ちなみにTomcatの起動ポートは
\apache-tomcat-6.0.37\conf\server.xml
で指定する。
今回は適当に8888に設定した。

なんか作ってみる

Tomcatを動かしたついでになんか作ってみよう。
JavaScriptでヘッダーを設定して、そのヘッダーの内容をJavaで調べてみる。

なんのリファクタリングもしていないサンプルのままだけど、今日は他の勉強したいのでメモ代わりに。
JavaScript

var req;

function addHeaderRequest() {

	var headerName = document.getElementById("addHeaderName").value;
	var headerValue = document.getElementById("addHeaderValue").value;

	var url = "http://localhost:8888/fund-sample/sample/HeaderResponseServlet";
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
	}
	req.open("Get", url, true);
	req.setRequestHeader("X-Forwarded-For","192.172.0.1");
	//alert(requestHeader.toString());
	//req.setRequestHeader(headerName.toString() + "," + headerValue.toString());
	req.onreadystatechange = callback;
	req.send(null);
}

function callback() {
	if (req.readyState == 4) {
		if (req.status == 200) {
			var myHeader = document.getElementById('myHeader');
			myHeader.value = req.responseText;
			var tNode = document.createTextNode(req.responseText);
			myHeader.appendChild(tNode);
		}
	}
}

HTML

<html>
<head>
<link rel="stylesheet" type="text/css" hfef="style.css">
<script langage="JavaScript" src="js/ajax.js"></script>
<title> Header改変ログテスト </title>
</head>
<body>
<h2>設定したヘッダーをリクエストに加えます</h2>
フィールド名<input type="text" value="X-Forwarded-For" id="addHeaderName" name="addHeaderName">
フィールド値<input type="text" value="192.172.0.1" id="addHeaderValue" name="addHeaderValue">
<input type="button" value="送信" id="runAjax" name="runAjax" onclick="addHeaderRequest();">
<br>


<!--
<input type="text" readonly id="myHeader" size="50">
-->
リクエストしたヘッダー:
<span id="myHeader">

</span>
</body>
</html>

で、サーブレットがこちら

package sample;

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 HeaderResponseServlet extends HttpServlet {
	public void doGet(HttpServletRequest req, HttpServletResponse res)
				throws ServletException, IOException {
		String header = req.getHeader("X-Forwarded-For");
		//To Do調べたいヘッダーをDIする。
		res.setContentType("text/plain");
		res.setHeader("Cache-Control", "no-chache");
		PrintWriter out = res.getWriter();
		out.write(header);

	}

}

リクエストをブラウザで入力した値に設定するところはまだできていない。あとでやる。

とりあえず、リクエストを投げるとIPアドレスが返ってくる。

感謝のプログラミング

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

前回のブログから5時間。
(この雑なサンプルに時間がかかったわけではないw)
しかし、昨日は「朝起きてやろう」と思って寝たら、そのまま寝過ごして出社時間になってしまった。
そういうヘマはしないように、
「朝起きてやろう」
という悪魔の囁きには耳を貸さないようにしたい。