Going my way

いいなと思ったことをメモしていきます。

tomcatの設定と、jsp/サーブレットの基礎知識まとめ


Advertisements


tomcatのHTTP受信ポートの設定は以下のファイルの設定をいじる。
C:\Program Files (x86)\Apache Software Foundation\apache-tomcat-6.0.35\conf\server.xml

    <Connector port="8082" protocol="HTTP/1.1" 
               useBodyEncodingForURI="true"
               URIEncoding="UTF-8"
               connectionTimeout="20000" 
               redirectPort="8443" />

デフォルト8080で何かのポートと競合したため、ポート番号を8082変更した。

サーブレット/JSPAPIはJavaSEに含まれていない。
そんため、サーブレット/JSPのJARファイルをクラスパスに設定する必要がある。

ユーザー環境変数CLASSPATHという変数を新規に作成。
CLASSPATHに下記のjarのパスを記載
C:\Program Files (x86)\Apache Software Foundation\apache-tomcat-6.0.35\lib\servlet-api.jar;
C:\Program Files (x86)\Apache Software Foundation\apache-tomcat-6.0.35\lib\jsp-api.jar

システムの環境変数
pathに%CLASSPATH%;を追加する。

コマンドプロンプトを再起動する。

Tomcatの起動
C:\Program Files (x86)\Apache Software Foundation\apache-tomcat-6.0.35\bin>startup.bat

Server startup in 1680 ms

などのメッセージが出たら起動完了

tomcatの停止はshutdown.bat

tomcat以下のディレクトリ構成

├─webapps
│  ├─Chap1_1
│  │  └─WEB-INF
│  │      ├─classes
│  │      │  └─chap1
│  │      └─src
│  │          └─chap1

webapps
コンテキストルート。この下にwebアプリケーションに必要なディレクトリ、ファイルを格納する。

WEB-INF
コンテキストルート直下に必ず置かなければならないディレクトリ。大文字半角で記述すること。

WEB-INFの直下にはweb.xmlを置く必要がある。
tomcatは起動時にweb.xmlをパース(解析)する。

web.xmlサーブレットとURLの関連付けを行うXML文書である。

package chap1;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Sample1_1 extends HttpServlet {
	
	public void doGet(HttpServletRequest request,
						HttpServletResponse response)
	throws ServletException,IOException {
		
		PrintWriter out = response.getWriter();
		out.println("<html>");
		out.println("<body>");
		out.println("<<h1> hello! </h1>");
		out.println("<br>");
		out.println("</body>");
		out.println("</html>");
	}
}

web.xmlの記述

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com./xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
	<servlet>
	  <servlet-name>Sample1_1</servlet-name>
	  <servlet-class>chap1.Sample1_1</servlet-class>
	</servlet>
	<servlet-mapping>
	  <servlet-name>Sample1_1</servlet-name>
	  <url-pattern>/1_1</url-pattern>
	</servlet-mapping>
</web-app>

タグ内のものと、内のものを同じ名前にすること は完全修飾名(パッケージ名+クラス名)で書くこと は「コンテキストルート/○○」の○○の部分に対応する。 ブラウザで下記のようにリクエストを送ると、画面が表示される。 http://localhost:8082/Chap1_1/1_1 Chap1_1がコンテキストルート(web-appの直下)で、「/1_1」はSample1_1という名前のservletと対応した場所を示す。 つまりサーブレットの本体と、URLをマッピングしているのである。