環境
OS: Windows 2000
開発ソフトをインストール
- JDK 5.0 をインストール
- Apache Tomcat 4.1 をインストール
- Eclipse SDK 3.2.0 をインストール
- Eclipse から J2EE Standard Tools (JST) や Web Standard Tools (WST) をインストール
主な Eclipse 設定
Eclipse のメニューから [Window] -> [Preferences] でいろいろ設定しておく。
主な設定項目:
- [Java] -> [Installed JREs] にて JDK (JSPのコンパイルのためにJREじゃなくてJDK) を追加。
- [Server] -> [Installed Runtimes] にて Apache Tomcat v4.1 を追加。
プロジェクトの作成
プロジェクトを作成するウィザードから "Dynamic Web Project" を選択。
Target Runtime の項目に Apache Tomcat v4.1 を指定。
[Project Facets] のページでは Dynamic Web Module と Java のバージョンを指定。(Tomcat 4.1 の場合は Dynamic Web Module に 2.3 を指定(Servlet Specification のバージョン?), Java は 1.4 以降かな?)
プロジェクト名を hoge にして Context Root も hoge にした。
JSPファイルを作成する
WEB-INF 以下にデータファイルを置いて、サーブレットやJSPから利用したい。
ということで、WEB-INF 以下のファイルにアクセスしやすい方法を模索中。
J2EE のドキュメントを読んでもよくわからない部分があったので、実験的なJSPファイルを作って試す。
Eclipse 上から JSP ファイルを新規作成して、編集できるのが便利 (一度作成したファイルについて、Eclipse 上では文字コードが変更できないっぽいので、外部のテキストエディタで変更する必要があるかも)。
html とか xhtml とか選択して作成できる。
とりあえず、使えそうな API を実験的に試してみる。
まずは JSP ファイルを作成。
hoge\WebContent に filepath.jsp を作成。
<?xml version="1.0" encoding="windows-31j" ?>
<%@ page language="java" contentType="text/html; charset=windows-31j"
pageEncoding="windows-31j"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j" />
<title>Insert title here</title>
</head>
<body>
<%= new java.io.File(".").getAbsolutePath() %><br />
<%= System.getProperty("user.dir") %><br />
<%= application.getRealPath(".") %><br />
<%= application.getRealPath("WEB-INF/web.xml") %><br />
<%= application.getResourcePaths("/WEB-INF/") %><br />
<%= application.getResource("/WEB-INF/") %><br />
<%= request.getParameterMap() %><br />
</body>
</html>
web.xml の編集
WEB-INF/web.xml を編集する。これも Eclipse 上でできる。
しかも、XMLを直接編集せずに、GUIな設定ツールで編集もできる。便利。
で、WEB-INF/web.xml の中身。
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>filepath</servlet-name>
<jsp-file>/filepath.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>filepath</servlet-name>
<url-pattern>/fp</url-pattern>
</servlet-mapping>
</web-app>
<jsp-file> っていう要素があるんだ。知らなかった。JSPもサーブレットのように扱える。けっこう昔の本にも載ってた。Tomcat 3 時代から?
Webページとしてアクセス
http://localhost/hoge/fp?a=b
こんな感じのURLにアクセスして、と
表示してみると、おもしろい。
C:\eclipse32\.
C:\eclipse32
C:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\webapps\hoge\.
C:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\webapps\hoge\WEB-INF\web.xml
[/WEB-INF/web.xml.org, /WEB-INF/web.xml, /WEB-INF/classes/, /WEB-INF/lib/]
jndi:/localhost/hoge/WEB-INF/
{a=[Ljava.lang.String;@4bfe6b}
Eclipse 上のウェブアプリケーションは .plugins\org.eclipse.wst.server.core 以下に設置される模様。てんぽらり♪てんぽらり♪
WEB-INF 以下へのアクセス
WEB-INF のアクセスは
javax.servlet.ServletContext#getRealPath("WEB-INF")
を使って、パスを取得すれば良さそう。
WEB-INF 以下に置くことが前提のデータファイル読み込むをときは、このAPIを使えば環境に依存しない、と。
Ref.
tags: zlashdot Java Eclipse Java Tomcat
Posted by NI-Lab. (@nilab)