[
トップ
] [
新規
|
一覧
|
最終更新
|
ヘルプ
]
AND
OR
開始行:
*[[WebApp]]/Tomcat [#o5f9b960]
-[[実行環境の整備>#g4dd3618]]
-[[構成ディレクトリ>#xaaf435e]]
-[[設定ファイル>#l8ef7daf]]
-[[Webアプリケーションの標準構成>#cb647c17]]
-[[Webアプリケーション(サーブレット)の作成>#ja5db5fc]]
-[[管理画面へのアクセス>#r40956c8]]
-[[Apacheと連携させる>#t57bc2aa]]
-[[アクセスログ>#db748234]]
-[[JSP(JavaServer Pages)>#ef25037a]]
-[[サーバー変数>#y930faf5]]
-[[JSPサンプル>#r60f258c]]
**実行環境の整備 [#g4dd3618]
***tomcatを実行するユーザーを作成 [#kabccec9]
# useradd tomcat
***jdkをインストールする [#z6610ecb]
OracleのページからRPMパッケージをダウンロードし、そのまま...
# ./jdk-6u29-linux-i586-rpm.bin
***tomcatをインストール [#cd3a4ad9]
apache-tomcat-x.x.x.tar.gz を解凍して作成されたディレクト...
バージョンに依存させない為、シンボリックリンクを作成する~
# mv apache-tomcat-x.x.x ~tomcat
# cd ~tomcat
# pwd
/home/tomcat
# chown -R apache-tomcat-x.x.x
# ln -s apache-tomcat-x.x.x tomcat
# ls -l
drwxr-xr-x. 9 tomcat tomcat 4096 3月 12 15:23 2012 ap...
lrwxrwxrwx. 1 root root 20 3月 1 17:05 2012 to...
***tomcatユーザーの.bash_profileに環境変数を追加 [#y33288...
JDKや、tomcatのパスはインストール環境に合わせて変更するこ...
export JRE_HOME=/usr/java/jdk1.6.0_29
export CATALINA_HOME=/home/tomcat/tomcat
export CLASSPATH=.:$JRE_HOME/jre/lib:$JRE_HOME/lib:$JRE_...
***tomcatの実行または停止 [#v18e09cc]
$CATALINA_HOME/bin/startup.sh
$CATALINA_HOME/bin/shutdown.sh
***スタートアップスクリプトに登録する [#se735391]
/etc/rc.d/init.d/ に tomcat ファイルを作成、以下の内容を...
chkconfig: 345 80 15 は任意で書き換えること(onにするRUNL...
#!/bin/bash
#
# Startup script for the tomcat
# chkconfig: 345 80 15
# description: Tomcat is a Servlet+JSP Engine.
# Source function library.
. /etc/rc.d/init.d/functions
source /etc/profile
TOMCAT_USER=tomcat
source ~tomcat/.bash_profile
start(){
if [ -z $(/sbin/pidof java) ]; then
echo "Starting tomcat"
su - $TOMCAT_USER -c "$CATALINA_HOME/bin/startup...
touch /tmp/tomcat
else
echo "tomcat allready running"
fi
}
stop(){
if [ ! -z $(/sbin/pidof java) ]; then
echo "Shutting down tomcat"
su - $TOMCAT_USER -c "$CATALINA_HOME/bin/shutdow...
until [ -z $(/sbin/pidof java) ]; do :; done
\rm -f /tmp/tomcat
else
echo "tomcat not running"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
su -s /bin/bash - $TOMCAT_USER -c "$CATALINA_HOM...
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
esac
exit 0
サービス登録を行う
# chkconfig --add tomcat
~
***Windowsでコンパイル環境を整えるには以下の環境変数を定...
|BGCOLOR(#f0f8ff):CENTER:環境変数|BGCOLOR(#f0f8ff):CENTER...
|PATH|.;%JAVA_HOME%\bin|
|JAVA_HOME|C:\j2sdk1.6_37|
|CATALINA_HOME|C:\Program Files\Apache Software Foundatio...
|CLASSPATH|.;%CATALINA_HOME%\common\lib\servlet-api.jar;%...
~
**構成ディレクトリ($CATALINA_HOME) [#xaaf435e]
***bin [#w001b568]
Tomcatの起動や停止に使うスクリプトを格納~
***common [#o15283c2]
Webアプリケーションからアクセス可能なクラスを格納~
サブディレクトリのclassesには展開済みのクラスが、libディ...
servlet-api.jarやjsp-api.jarもここに入ってる~
***conf [#wf51930b]
各種設定ファイル(サーバ設定ファイル、ユーザリストなど)...
***logs [#t4e31cf3]
サーバに対して出されたリクエストのログ、標準出力、標準エ...
***server [#ked42f16]
Catalina(サーブレットAPIの実装エンジン)だけが使用できるク...
これにはCGIや正規表現をサポートするためのライブラリや、We...
***shared [#had2639f]
Webアプリケーションからアクセスできるクラスが入る。common...
***temp [#z08faf80]
一時的なファイルの保存先~
***webapps [#s4a46d38]
Webアプリケーションを配置するディレクトリ~
server.xmlの<Host name="localhost" appBase="webapps">で...
http://<IPアドレス>:8080/ と指定した場合 webapp/ROOT の...
ROOT以外のフォルダ(webapp/docs)などは、http://<IPアドレ...
ROOTにdocsがある場合もwebapp/docsが優先される~
***work [#vbedbe81]
一時ファイル、プリコンパイルされたJSPページ、その他の中間...
~
**設定ファイル [#l8ef7daf]
***server.xml [#x3e49b4a]
Tomcatのメインの設定ファイル。Tomcatの使用ポートやWebアプ...
***server-minimal.xml [#gdd8f4d6]
独自のserver.xmlを作成するためのテンプレート~
コメントなどが削除されており、必要最小限の情報しか記載さ...
サーバの設定をカスタマイズする場合は、このファイルを編集...
***tomcat-users.xml [#gc43003a]
ユーザとパスワード、およびその権限情報を記述~
***web.xml [#b8cc4c32]
デフォルトの配備記述子(deployment descriptor)ファイル~
Tomcatで実行されているすべてのアプリケーションから参照さ...
すべてのアプリケーションに適用できるサーブレットの基本定...
独自のweb.xmlを持っていないWebアプリケーションのための配...
~
**Webアプリケーションの標準構成 [#cb647c17]
Webアプリケーションのルートディレクトリ($CATALINA_HOME/w...
ルート以下の階層は $CATALINA_HOME/webapps/ で定義する(we...
ROOT/docs/ もある場合は、webapps/docs が優先される~
***/WEB-INF [#g2a695cf]
パブリックにアクセスできないファイルが置かれる(web.xmlな...
各ディレクトリ毎に作成可能~
***/WEB-INF/classes [#fd7fea35]
Webアプリケーションのクラスファイルがすべて個々に置かれる~
***WEB-INF/lib [#ka8d8491]
クラスファイルをJAR形式でアーカイブしたファイルを置くこと...
~
**Webアプリケーション(サーブレット)の作成 [#ja5db5fc]
***HelloWorld.java [#if828d06]
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 HelloWorld extends HttpServlet{
public void service(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello World</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World</h1>");
out.println("</body>");
out.println("</html>");
out.close();
}
}
***Classファイルの配置 [#x6e1f9b8]
$ javac HelloWorld.java
$ mkdir -p $CATALINA_HOME/webapps/helloworld/WEB-INF/lib...
$ mv -i HelloWorld.class $CATALINA_HOME/webapps/hellowor...
***Hello Worldアプリケーションのweb.xml [#yd31d075]
WEB-INFディレクトリにweb.xmlファイルを作成し、サーブレッ...
サーブレットマッピングにより、特定のURLとサーブレットクラ...
サーブレットマッピングはweb.xmlの&color(#0000FF){<web-app...
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee ...
version="2.4">
<servlet>
<servlet-name>
hello
</servlet-name>
<servlet-class>
HelloWorld
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>
hello
</servlet-name>
<url-pattern>
/hello
</url-pattern>
</servlet-mapping>
</web-app>
|BGCOLOR(#f0f8ff):CENTER:要素|BGCOLOR(#f0f8ff):CENTER:説明|
|servlet-name|任意の名称、 <servlet>と<servlet-mapping>で...
|servlet-class|実行したいJavaのClassファイル名|
|url-pattern|ここに記述した文字列に一致した場合、<servlet...
~
|BGCOLOR(#f0f8ff):''url-pattern''|BGCOLOR(#f0f8ff):''説明...
|/ から始まる|/login の場合、/login/ や、/login などにマ...
|/ から始まり、* で終わる|/login/* の場合、/login/abc や...
|*.拡張子|*.do の場合、URLの末尾が.doの場合にマッチ|
***ブラウザからアクセス [#w072cd55]
http://localhost:8080/helloworld/hello~
$CATALINA_HOME/webapps/helloworld/ が http://localhost:80...
&color(#0000FF){/hello}; が サーブレット名 &color(#0000FF...
~
#br
**管理画面へのアクセス [#r40956c8]
tomcatのトップページから、管理画面(http://<IPアドレス>:8...
***管理ユーザーの作成 [#f56fdda5]
$CATALINA_HOME/conf/tomcat-users.xml に 以下の2行を追加...
<role rolename="manager"/>
<user username="admin" password="admin" roles="manager"/>
tomcatのVersionが7以上の場合はロール名が変更されているの...
<role rolename="manager-gui"/>
<user username="admin" password="admin" roles="manager-g...
アクセスした際のUIDとPASSに、adminを入力すればログインで...
~
**Apacheと連携させる [#t57bc2aa]
Apache 2.2系にはAJPプロトコル通信を可能にするmod_proxy_aj...
これにより相互通信が可能になります(Apache2.0以前はmod_jk...
rpmなどでインストールするとデフォルトで使用可能~
~
ソースからビルドする場合は、~
./configure --enable-proxy --enable-proxy-ajp のようにオ...
***AJP用の設定ファイル作成 [#gae94f8a]
/etc/httpd/conf/extra ディレクトリ以下に httpd-helloworld...
<Location /helloworld/>
ProxyPass ajp://localhost:8009/helloworld/
</Location>
8009は、Tomcat側の連携コネクタのポート番号~
http://ドメイン/helloworld/ 以下にアクセス(Locationで指...
Tomcatのhelloworld(ProxyPassで指定した)ディレクトリへ転...
***httpd.conf修正 [#q48fbfdc]
以下の3行を追加する(記述されている可能性あり)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
Include conf/extra/*.conf
***server.xml修正 [#k767621c]
以下の行が記述されていること(デフォルトで記述されている)
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="...
***Tomcatの直接アクセス(8080ポート)を禁止する [#kd43a5d8]
$CATALINA_HOME/conf/server.xml
以下の行をコメントアウトする
<!--
<Connector
port="8080"
redirectPort="8443"
minSpareThreads="25"
connectionTimeout="20000"
maxThreads="150"
maxSpareThreads="75">
</Connector>
-->
***連携確認 [#v365b721]
tomcat 及び apacheを再起動~
http://localhost/helloworld/hello/~
でサーブレットが表示されること~
~
**アクセスログ [#db748234]
コンテキストに設置されたJSP、サーブレット、HTML、GIFファ...
server.xml の <Valve>タグ にて指定する。Tomcat動作ログは ...
Valveタグは以下の子要素として指定可能~
-<Engine> すべてのアクセスログ~
-<Host> 仮想ホスト単位でのアクセスログ~
-<Context> コンテキスト内でのアクセスログ~
|BGCOLOR(#f0f8ff):CENTER:Value属性|BGCOLOR(#f0f8ff):CENTE...
|className|ログを生成するJavaクラスを指定。値はorg.apache...
|directory|ログ出力先のディレクトリ指定。$CATALINA_HOMEか...
|pattern|ログフォーマット指定。%a、%qなど。標準で用意され...
|prefix|ログ名の前に付与する文字列を指定。0指定でprefixな...
|resolveHosts|IPアドレスをDNSによりホスト名変換を行うか|
|suffix|ログ名の後に付与する文字列を指定|
|rotatable|ログファイルのローテートを行うかどうか|
|condition|ServletRequest.getAttribute("指定した値") == n...
|fileDateFormat|ログローテートの際、ファイル名に付与され...
~
**JSP(JavaServer Pages) [#ef25037a]
HTMLの中にタグを埋め込みJavaを実行することで動的なページ...
***<%@ %> ディレクティブ [#z703bd26]
ページを処理する方法についてさまざまな指定を行うために使用~
<%@ page import="java.util.*" %> ←im...
<%@ page contentType="text/html; charset=euc-jp" %> ←文...
***<% %> スクリプトレット [#o7c015ea]
実際の処理の内容を指定のスクリプト言語(デフォルトでJava...
テストを10回出力する
<% for(int i = 0; i < 10; i++) { %>
テスト<br>
<% } %>
***<%= %> 式 [#u4641930]
出力文を生成するのに使用~
<%= テスト %> は <% out.println(テスト); %> と同じ
***<%! %> 宣言 [#gc2eef0b]
JSPページに固有の変数とメソッドを定義するのに使用
<% String blueText = getColoredHTML("青いテキスト", "blu...
<%!
/**
* フォントカラーの指定を行ったHTML文を作成する
* @param str 色を付けて表示する文字列
* @param color 色を指定する文字列
* @return フォントカラーの指定を行ったHTML文
*/
public String getColoredHTML(String str, String color) {
return "<font color=\"" + color + "\">" + str + "</f...
}
%>
<html><body>
<%= redText %><br>
</body></html>
~
**サーバー変数 [#y930faf5]
|BGCOLOR(#f0f8ff):CENTER:変数名|BGCOLOR(#f0f8ff):CENTER:...
|REMOTE_HOST|getRemoteHost()|ページを要求してきたクライア...
|REMOTE_ADDR|getRemoteAddr()|ページを要求してきたクライア...
|SERVER_NAME|getServerName()|サーバ側のホスト名|
|PATH_INFO|getPathInfo()|要求されたURLのパス部分|
|PATH_TRANSLATED|getPathTranslated()|要求されたパスをサー...
~
**JSPサンプル [#r60f258c]
***名前と、誕生日をフォームから入力し、action.jspで、入力...
&color(#0000FF){index.jsp};
<%@ page contentType="text/html; charset=utf-8" %>
<%
// 現在の時刻を取得
java.util.Date nowTime = new java.util.Date();
%>
<html>
<head><title>入力ページ</title></head>
<body>
<p>-- 入力ページ --</p>
<p><form action="action.jsp" method="POST">
お名前: <input type="text" name="name" size=32><br>
生年月日: <input type="text" name="birthday" size=20...
<input type="submit" value="OK">
</form></p>
</body>
</html>
&color(#0000FF){action.jsp};
<%@ page contentType="text/html; charset=utf-8" %>
<%
// パラメータを取得
String name = request.getParameter("name");
String birthday = request.getParameter("birthday");
// 文字コードの変換を行う
name = new String(name.getBytes("8859_1"), "EUC_JP");
birthday = new String(birthday.getBytes("8859_1"), "...
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitiona...
<html>
<head><title>ユーザーからの入力を出力する</title></head>
<body>
<p>-- ユーザーからの入力を出力する --</p>
<p><ul>
<li>お名前 : <%= name %>
<li>生年月日: <%= birthday %>
</ul></p>
</body>
</html>
~
終了行:
*[[WebApp]]/Tomcat [#o5f9b960]
-[[実行環境の整備>#g4dd3618]]
-[[構成ディレクトリ>#xaaf435e]]
-[[設定ファイル>#l8ef7daf]]
-[[Webアプリケーションの標準構成>#cb647c17]]
-[[Webアプリケーション(サーブレット)の作成>#ja5db5fc]]
-[[管理画面へのアクセス>#r40956c8]]
-[[Apacheと連携させる>#t57bc2aa]]
-[[アクセスログ>#db748234]]
-[[JSP(JavaServer Pages)>#ef25037a]]
-[[サーバー変数>#y930faf5]]
-[[JSPサンプル>#r60f258c]]
**実行環境の整備 [#g4dd3618]
***tomcatを実行するユーザーを作成 [#kabccec9]
# useradd tomcat
***jdkをインストールする [#z6610ecb]
OracleのページからRPMパッケージをダウンロードし、そのまま...
# ./jdk-6u29-linux-i586-rpm.bin
***tomcatをインストール [#cd3a4ad9]
apache-tomcat-x.x.x.tar.gz を解凍して作成されたディレクト...
バージョンに依存させない為、シンボリックリンクを作成する~
# mv apache-tomcat-x.x.x ~tomcat
# cd ~tomcat
# pwd
/home/tomcat
# chown -R apache-tomcat-x.x.x
# ln -s apache-tomcat-x.x.x tomcat
# ls -l
drwxr-xr-x. 9 tomcat tomcat 4096 3月 12 15:23 2012 ap...
lrwxrwxrwx. 1 root root 20 3月 1 17:05 2012 to...
***tomcatユーザーの.bash_profileに環境変数を追加 [#y33288...
JDKや、tomcatのパスはインストール環境に合わせて変更するこ...
export JRE_HOME=/usr/java/jdk1.6.0_29
export CATALINA_HOME=/home/tomcat/tomcat
export CLASSPATH=.:$JRE_HOME/jre/lib:$JRE_HOME/lib:$JRE_...
***tomcatの実行または停止 [#v18e09cc]
$CATALINA_HOME/bin/startup.sh
$CATALINA_HOME/bin/shutdown.sh
***スタートアップスクリプトに登録する [#se735391]
/etc/rc.d/init.d/ に tomcat ファイルを作成、以下の内容を...
chkconfig: 345 80 15 は任意で書き換えること(onにするRUNL...
#!/bin/bash
#
# Startup script for the tomcat
# chkconfig: 345 80 15
# description: Tomcat is a Servlet+JSP Engine.
# Source function library.
. /etc/rc.d/init.d/functions
source /etc/profile
TOMCAT_USER=tomcat
source ~tomcat/.bash_profile
start(){
if [ -z $(/sbin/pidof java) ]; then
echo "Starting tomcat"
su - $TOMCAT_USER -c "$CATALINA_HOME/bin/startup...
touch /tmp/tomcat
else
echo "tomcat allready running"
fi
}
stop(){
if [ ! -z $(/sbin/pidof java) ]; then
echo "Shutting down tomcat"
su - $TOMCAT_USER -c "$CATALINA_HOME/bin/shutdow...
until [ -z $(/sbin/pidof java) ]; do :; done
\rm -f /tmp/tomcat
else
echo "tomcat not running"
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
su -s /bin/bash - $TOMCAT_USER -c "$CATALINA_HOM...
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
esac
exit 0
サービス登録を行う
# chkconfig --add tomcat
~
***Windowsでコンパイル環境を整えるには以下の環境変数を定...
|BGCOLOR(#f0f8ff):CENTER:環境変数|BGCOLOR(#f0f8ff):CENTER...
|PATH|.;%JAVA_HOME%\bin|
|JAVA_HOME|C:\j2sdk1.6_37|
|CATALINA_HOME|C:\Program Files\Apache Software Foundatio...
|CLASSPATH|.;%CATALINA_HOME%\common\lib\servlet-api.jar;%...
~
**構成ディレクトリ($CATALINA_HOME) [#xaaf435e]
***bin [#w001b568]
Tomcatの起動や停止に使うスクリプトを格納~
***common [#o15283c2]
Webアプリケーションからアクセス可能なクラスを格納~
サブディレクトリのclassesには展開済みのクラスが、libディ...
servlet-api.jarやjsp-api.jarもここに入ってる~
***conf [#wf51930b]
各種設定ファイル(サーバ設定ファイル、ユーザリストなど)...
***logs [#t4e31cf3]
サーバに対して出されたリクエストのログ、標準出力、標準エ...
***server [#ked42f16]
Catalina(サーブレットAPIの実装エンジン)だけが使用できるク...
これにはCGIや正規表現をサポートするためのライブラリや、We...
***shared [#had2639f]
Webアプリケーションからアクセスできるクラスが入る。common...
***temp [#z08faf80]
一時的なファイルの保存先~
***webapps [#s4a46d38]
Webアプリケーションを配置するディレクトリ~
server.xmlの<Host name="localhost" appBase="webapps">で...
http://<IPアドレス>:8080/ と指定した場合 webapp/ROOT の...
ROOT以外のフォルダ(webapp/docs)などは、http://<IPアドレ...
ROOTにdocsがある場合もwebapp/docsが優先される~
***work [#vbedbe81]
一時ファイル、プリコンパイルされたJSPページ、その他の中間...
~
**設定ファイル [#l8ef7daf]
***server.xml [#x3e49b4a]
Tomcatのメインの設定ファイル。Tomcatの使用ポートやWebアプ...
***server-minimal.xml [#gdd8f4d6]
独自のserver.xmlを作成するためのテンプレート~
コメントなどが削除されており、必要最小限の情報しか記載さ...
サーバの設定をカスタマイズする場合は、このファイルを編集...
***tomcat-users.xml [#gc43003a]
ユーザとパスワード、およびその権限情報を記述~
***web.xml [#b8cc4c32]
デフォルトの配備記述子(deployment descriptor)ファイル~
Tomcatで実行されているすべてのアプリケーションから参照さ...
すべてのアプリケーションに適用できるサーブレットの基本定...
独自のweb.xmlを持っていないWebアプリケーションのための配...
~
**Webアプリケーションの標準構成 [#cb647c17]
Webアプリケーションのルートディレクトリ($CATALINA_HOME/w...
ルート以下の階層は $CATALINA_HOME/webapps/ で定義する(we...
ROOT/docs/ もある場合は、webapps/docs が優先される~
***/WEB-INF [#g2a695cf]
パブリックにアクセスできないファイルが置かれる(web.xmlな...
各ディレクトリ毎に作成可能~
***/WEB-INF/classes [#fd7fea35]
Webアプリケーションのクラスファイルがすべて個々に置かれる~
***WEB-INF/lib [#ka8d8491]
クラスファイルをJAR形式でアーカイブしたファイルを置くこと...
~
**Webアプリケーション(サーブレット)の作成 [#ja5db5fc]
***HelloWorld.java [#if828d06]
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 HelloWorld extends HttpServlet{
public void service(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello World</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World</h1>");
out.println("</body>");
out.println("</html>");
out.close();
}
}
***Classファイルの配置 [#x6e1f9b8]
$ javac HelloWorld.java
$ mkdir -p $CATALINA_HOME/webapps/helloworld/WEB-INF/lib...
$ mv -i HelloWorld.class $CATALINA_HOME/webapps/hellowor...
***Hello Worldアプリケーションのweb.xml [#yd31d075]
WEB-INFディレクトリにweb.xmlファイルを作成し、サーブレッ...
サーブレットマッピングにより、特定のURLとサーブレットクラ...
サーブレットマッピングはweb.xmlの&color(#0000FF){<web-app...
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee ...
version="2.4">
<servlet>
<servlet-name>
hello
</servlet-name>
<servlet-class>
HelloWorld
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>
hello
</servlet-name>
<url-pattern>
/hello
</url-pattern>
</servlet-mapping>
</web-app>
|BGCOLOR(#f0f8ff):CENTER:要素|BGCOLOR(#f0f8ff):CENTER:説明|
|servlet-name|任意の名称、 <servlet>と<servlet-mapping>で...
|servlet-class|実行したいJavaのClassファイル名|
|url-pattern|ここに記述した文字列に一致した場合、<servlet...
~
|BGCOLOR(#f0f8ff):''url-pattern''|BGCOLOR(#f0f8ff):''説明...
|/ から始まる|/login の場合、/login/ や、/login などにマ...
|/ から始まり、* で終わる|/login/* の場合、/login/abc や...
|*.拡張子|*.do の場合、URLの末尾が.doの場合にマッチ|
***ブラウザからアクセス [#w072cd55]
http://localhost:8080/helloworld/hello~
$CATALINA_HOME/webapps/helloworld/ が http://localhost:80...
&color(#0000FF){/hello}; が サーブレット名 &color(#0000FF...
~
#br
**管理画面へのアクセス [#r40956c8]
tomcatのトップページから、管理画面(http://<IPアドレス>:8...
***管理ユーザーの作成 [#f56fdda5]
$CATALINA_HOME/conf/tomcat-users.xml に 以下の2行を追加...
<role rolename="manager"/>
<user username="admin" password="admin" roles="manager"/>
tomcatのVersionが7以上の場合はロール名が変更されているの...
<role rolename="manager-gui"/>
<user username="admin" password="admin" roles="manager-g...
アクセスした際のUIDとPASSに、adminを入力すればログインで...
~
**Apacheと連携させる [#t57bc2aa]
Apache 2.2系にはAJPプロトコル通信を可能にするmod_proxy_aj...
これにより相互通信が可能になります(Apache2.0以前はmod_jk...
rpmなどでインストールするとデフォルトで使用可能~
~
ソースからビルドする場合は、~
./configure --enable-proxy --enable-proxy-ajp のようにオ...
***AJP用の設定ファイル作成 [#gae94f8a]
/etc/httpd/conf/extra ディレクトリ以下に httpd-helloworld...
<Location /helloworld/>
ProxyPass ajp://localhost:8009/helloworld/
</Location>
8009は、Tomcat側の連携コネクタのポート番号~
http://ドメイン/helloworld/ 以下にアクセス(Locationで指...
Tomcatのhelloworld(ProxyPassで指定した)ディレクトリへ転...
***httpd.conf修正 [#q48fbfdc]
以下の3行を追加する(記述されている可能性あり)
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
Include conf/extra/*.conf
***server.xml修正 [#k767621c]
以下の行が記述されていること(デフォルトで記述されている)
<!-- Define an AJP 1.3 Connector on port 8009 -->
<Connector port="8009" protocol="AJP/1.3" redirectPort="...
***Tomcatの直接アクセス(8080ポート)を禁止する [#kd43a5d8]
$CATALINA_HOME/conf/server.xml
以下の行をコメントアウトする
<!--
<Connector
port="8080"
redirectPort="8443"
minSpareThreads="25"
connectionTimeout="20000"
maxThreads="150"
maxSpareThreads="75">
</Connector>
-->
***連携確認 [#v365b721]
tomcat 及び apacheを再起動~
http://localhost/helloworld/hello/~
でサーブレットが表示されること~
~
**アクセスログ [#db748234]
コンテキストに設置されたJSP、サーブレット、HTML、GIFファ...
server.xml の <Valve>タグ にて指定する。Tomcat動作ログは ...
Valveタグは以下の子要素として指定可能~
-<Engine> すべてのアクセスログ~
-<Host> 仮想ホスト単位でのアクセスログ~
-<Context> コンテキスト内でのアクセスログ~
|BGCOLOR(#f0f8ff):CENTER:Value属性|BGCOLOR(#f0f8ff):CENTE...
|className|ログを生成するJavaクラスを指定。値はorg.apache...
|directory|ログ出力先のディレクトリ指定。$CATALINA_HOMEか...
|pattern|ログフォーマット指定。%a、%qなど。標準で用意され...
|prefix|ログ名の前に付与する文字列を指定。0指定でprefixな...
|resolveHosts|IPアドレスをDNSによりホスト名変換を行うか|
|suffix|ログ名の後に付与する文字列を指定|
|rotatable|ログファイルのローテートを行うかどうか|
|condition|ServletRequest.getAttribute("指定した値") == n...
|fileDateFormat|ログローテートの際、ファイル名に付与され...
~
**JSP(JavaServer Pages) [#ef25037a]
HTMLの中にタグを埋め込みJavaを実行することで動的なページ...
***<%@ %> ディレクティブ [#z703bd26]
ページを処理する方法についてさまざまな指定を行うために使用~
<%@ page import="java.util.*" %> ←im...
<%@ page contentType="text/html; charset=euc-jp" %> ←文...
***<% %> スクリプトレット [#o7c015ea]
実際の処理の内容を指定のスクリプト言語(デフォルトでJava...
テストを10回出力する
<% for(int i = 0; i < 10; i++) { %>
テスト<br>
<% } %>
***<%= %> 式 [#u4641930]
出力文を生成するのに使用~
<%= テスト %> は <% out.println(テスト); %> と同じ
***<%! %> 宣言 [#gc2eef0b]
JSPページに固有の変数とメソッドを定義するのに使用
<% String blueText = getColoredHTML("青いテキスト", "blu...
<%!
/**
* フォントカラーの指定を行ったHTML文を作成する
* @param str 色を付けて表示する文字列
* @param color 色を指定する文字列
* @return フォントカラーの指定を行ったHTML文
*/
public String getColoredHTML(String str, String color) {
return "<font color=\"" + color + "\">" + str + "</f...
}
%>
<html><body>
<%= redText %><br>
</body></html>
~
**サーバー変数 [#y930faf5]
|BGCOLOR(#f0f8ff):CENTER:変数名|BGCOLOR(#f0f8ff):CENTER:...
|REMOTE_HOST|getRemoteHost()|ページを要求してきたクライア...
|REMOTE_ADDR|getRemoteAddr()|ページを要求してきたクライア...
|SERVER_NAME|getServerName()|サーバ側のホスト名|
|PATH_INFO|getPathInfo()|要求されたURLのパス部分|
|PATH_TRANSLATED|getPathTranslated()|要求されたパスをサー...
~
**JSPサンプル [#r60f258c]
***名前と、誕生日をフォームから入力し、action.jspで、入力...
&color(#0000FF){index.jsp};
<%@ page contentType="text/html; charset=utf-8" %>
<%
// 現在の時刻を取得
java.util.Date nowTime = new java.util.Date();
%>
<html>
<head><title>入力ページ</title></head>
<body>
<p>-- 入力ページ --</p>
<p><form action="action.jsp" method="POST">
お名前: <input type="text" name="name" size=32><br>
生年月日: <input type="text" name="birthday" size=20...
<input type="submit" value="OK">
</form></p>
</body>
</html>
&color(#0000FF){action.jsp};
<%@ page contentType="text/html; charset=utf-8" %>
<%
// パラメータを取得
String name = request.getParameter("name");
String birthday = request.getParameter("birthday");
// 文字コードの変換を行う
name = new String(name.getBytes("8859_1"), "EUC_JP");
birthday = new String(birthday.getBytes("8859_1"), "...
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitiona...
<html>
<head><title>ユーザーからの入力を出力する</title></head>
<body>
<p>-- ユーザーからの入力を出力する --</p>
<p><ul>
<li>お名前 : <%= name %>
<li>生年月日: <%= birthday %>
</ul></p>
</body>
</html>
~
ページ名: