Java Servlet(サーブレット)の実装手順

2009/01/22 18:47Update
TAGS: Java | Servlet | サーブレット

Java Servlet(サーブレット)の実装手順について解説します。

Java Servletの動作環境


1)Java環境(JDKやJRE)
2)サーブレット・コンテナー(TomcatやJBoss、WeblogicなどのWebサーバ)

Java環境の構築について、次の記事をご参照ください
Java開発及び実行環境の構築 | Linux篇
Java開発及び実行環境の構築 | Windows篇

TomcatやJBossサーバのインストールや環境設定について、ここでは省きます。

実装手順


以下、Java Servletの実装手順について解説します。

1)HttpServletから継承したクラスの作成
Servletを実装するのに、javax.servlet.http.HttpServletを継承したクラスを実装する必要があります。

例:
MyServlet.java
package mypackage;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class MyServlet extends HttpServlet {    //HttpServletから継承するよ

    //より高レベルのdoGetメソッドやdoPostなどのメソッドをoverride
    protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        String paramUserId = req.getParameter("userId");
        //...
        String attrUserName = req.getParameter("userName");
        //...

        //... do some process here

        //res.sendRedirect("/somepage")
        req.getRequestDispatcher("/login.jsp").forward(req, res);
    }


    protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
        doGet(req, res);
    }
}


上の例はただのサンプルなので、何の処理コードも書かれていません。実際の処理時、ロジックに応じてそのコードを書く必要があります。

2)web.xmlに登録
ただのServletクラスを定義するだけで、そのクラスがサーブレットとして認識されません。

Javaサーブレット仕様では、HttpServletから継承したクラスをサーブレットコンテナーに認識させるために、web.xmlというファイルにサーブレットの登録及びマッピングを行う必要があります。

例えば、Apache Tomcatサーバで、myservletというwebアプリケーションの場合
[Tomcatのインストール先フォルダ]\webapps\myservlet\WEB-INF\web.xml

例:
<?xml version="1.0" encoding="UTF-8"?>
<!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>MyServlet</servlet-name>        <!-- ①サーブレット名だよ -->
 <servlet-class>mypackage.MyServlet</servlet-class>        <!-- ②サーブレットのクラス指定 -->
 <load-on-startup>1</load-on-startup>
</servlet>

<!-- ... -->

<!-- サーブレット・マッピング定義 -->
<servlet-mapping>
 <servlet-name>MyServlet</servlet-name>        <!-- ③上に記述したサーブレット名と一致にしてください -->
 <url-pattern>/someUrl</url-pattern>        <!-- ④URLパタン -->
</servlet-mapping>

</web-app>


解説:
①サーブレット名を記述します。これはサーブレットの標識になります。
②サーブレットのクラス(どこにあるか)指定をします。
③サーブレットのマッピングを行います。マッピング先のサーブレット名で指定します。
④URLパタンを記述します。
 例1:http://www.syboos.jp/someUrl?id=1
 この場合、/someUrlはURLパタンになります。

 例2:http://localhost:8080/myproject/someUrl?id=1
 コンテキスト名はmyprojectである場合、/someUrlはURLパタンになります。

 URLパタンにマッチするURLのリクエストは、マッピングされたサーブレットクラスに委譲されます。

 例えば、http://www.syboos.jp/someUrl?id=1のリクエストの処理は、mypackage.MyServletに委譲されます。

これで、Servletの実装は完了です。

3)コンパイル

コンパイルについて、次の記事をご参照ください。
Java言語の基礎 - javacコマンドによるコンパイル
まだ、Eclipseなどの開発IDEを使う場合、より簡単にコンパイルできます。

4)デプロィ
サーブレットはWARやEARなどに含まれる形でTomcat、JBossなどサーバにデプロィすれば、使えるようになります。
今回は、最も簡単な形でTomcatにデプロィします。

フォルダに階層こうなります。

[Tomcatのインストール先フォルダ]\webapps\myservlet\WEB-INF\
    web.xml
[Tomcatのインストール先フォルダ]\webapps\myservlet\WEB-INF\classes
    \mypackage\MyServlet.class

Tomcatサーバを起動し、ブラウザーのアドレスに

http://localhost:8080/myservlet/someUrl

また、
http://www.yourdomain.com/myservlet/someUrl

をアクセスすれば、MyServletが動作していることを確認できます。

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments

用户名 (required)

Email (will not be published) (required)

URL

Evaluation