サーブレットを動かしてみる。
サーブレットコンテナとは、サーブレットエンジンのことで、Webアプリケーションサーバとも呼ばれます。
サーブレットコンテナの上で動くプログラムをサーブレットアプリと呼びます。
Java EE準拠の代表的なWebアプリケーションサーバとしては、Tomcat, Jetty, GlassFish, JBoss, WebSphereなどがあります。
最も簡単なサーブレットを動かしてみます。
ディレクトリ構成はJava EEのルールで決められており、コンテキストルートの直下にWEB-INFを置きます。
ここの下にweb.xmlを置きます。
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <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 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <servlet> <servlet-name>example</servlet-name> <servlet-class>sample.ExampleServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>example</servlet-name> <url-pattern>/example</url-pattern> </servlet-mapping> </web-app>
servlet-nameは適当な名前をつけます。
これでweb.xml上でサーブレットを識別します。
servlet-classはJavaのファイルがある名前空間とクラスの名前を指定します。
完全修飾名で記述します。
で、url-patternっていうのは、servlet-nameで指定したクラスとURLのマッピングを行います。
マッチングのパターンは、
■完全一致
/example
■前方一致
/example/*
■拡張子の一致
/example/*.jsp
■デフォルト
/
などがあります。
ExampleServlet.java
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 ExampleServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { PrintWriter out = res.getWriter(); out.print("<html><head><title>Sample Servlet</title></head>"); out.print("<body><p>Example</p></body></html>"); } }
これをtomcatで動かすと、以下のように表示されます。