ASH | サーバ | セキュリティ | Linux | FreeBSD | DB | Web | CGI | Perl | Java | XML | プログラム | ネットワーク | 標準 | Tips集

Webアプリケーションで「Hello World!」

 サーブレット+JSP+データクラス/Beanを使った、最も簡単なプログラムの作成方法について解説します。

画面イメージ

「Hello World!」表示画面(Hello.jsp)

 最も簡単なプログラムのサンプルとして、「Hello World!」を表示します。

Hello Webアプリケーション×
Hello Webアプリケーション

Hello World!


サーブレット、JSP、データクラス/Beanの関係

MVCモデル

 サーブレット、JSP、データクラス/Beanの関係は、オブジェクト指向のMVCモデルで表されます。 データクラス/Beanは、モデル(M)に相当し、データへのアクセスを行います。 データクラス/Beanは、getXXX、setXXXのメソッドを使ってアクセスしたり、フィールド(プロパティ)の参照などができます。 JSPは、ビュー(V)に相当し、データの表示方法を記述します。 JSPは、HTMLの中に変数などを記述することができます。 サーブレットは、コントローラ(C)に相当し、データクラス/BeanやJSPの制御を行います。
 データクラス/Beanのスコープには、application、session、requestなどがありますが、ここでは、requestを使っています。

サーブレット、JSP、データクラス/Beanの関係

ファイル構成

 パッケージ名と、ソースファイルの格納ディレクトリは、以下のようにします。

パッケージ名jp.ash.webapp
JSPディレクトリ名/home/WebApp/src/
Javaソースディレクトリ名/home/WebApp/src/jp/ash/webapp/

 サンプルプログラムの主なファイル構成です。

ファイル名ファイルの内容
Hello.jsp「Hello World!」表示画面
HelloData.javaユーザ情報オブジェクト
HelloServlet.java制御用サーブレットソース
build.xml生成方法を定義した、Ant用ビルドファイル

画面定義JSPソースプログラムの作成

 以下のJSPファイルで画面イメージを定義します。 JSPファイルは基本的にHTMLで記述し、<%= 変数名 %>で、変数の参照を行います。 参照する変数の値は、HelloData.javaに定義されています。

Hello.jsp
<%@ page contentType="text/html; charset=Shift_JIS" %>
<jsp:useBean id="hello" class="jp.ash.webapp.HelloData" scope="request" />

<html>
<head>
<title>Hello Webアプリケーション</title>
</head>
<body>

<h1>Hello Webアプリケーション</h1>

<p><%=hello.getMsg()%></p>

</body>
</html>

データ定義JavaBeanソースプログラムの作成

 サーブレットとJSP間のデータは、データBeanとして作成します。 JSPで、scope="request"を指定することで、同一リクエスト内で有効な変数となるため、サーブレットからJSPへデータを渡すことができます。 HelloDataでは、msgに格納した「HelloWorld!」データにgetMsg、setMsgのメソッドを使ってアクセスすることができます。

HelloData.java
package jp.ash.webapp;

/** Helloデータ **/
public class HelloData {
  private String msg;

  /** HelloWorldの設定 **/
  HelloData () {
    msg = "Hello World!";
  }
  /** メッセージの取得 **/
  public String getMsg () {
    return msg;
  }
  /** メッセージの設定 **/
  public void setMsg (String msg) {
    this.msg = msg;
  }
}

制御用サーブレットのJavaソースプログラムの作成

 画面定義用のJSPファイルと、データ設定用、制御用のJavaソースファイルは分けて作成します。
 HelloServletでは、HelloDataを作成し、forwardによって、画面定義用のJSPファイル(Hello.jsp)を呼び出しています。 Hello.jspでは。getMsgメソッドを使って「HelloWorld!」を表示しています。

HelloServlet.java
package jp.ash.webapp;

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

/** Helloサーブレット **/
public class HelloServlet extends HttpServlet {
  public void service (HttpServletRequest req, HttpServletResponse res)
      throws ServletException, IOException {
    req.setCharacterEncoding("Shift_JIS");

    // Helloオブジェクトの作成
    HelloData hello = new HelloData(); }
    req.setAttribute("hello", hello);

    // Hello画面の表示
    req.getRequestDispatcher("Hello.jsp").forward(req, res);
  }
}

サーブレットの登録方法

 WEB-INF/web.xmlファイルに、サーブレットの登録を行います

web.xml
<?xml version="1.0" ?>
<!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>
  <display-name>ASH Sample Web Application</display-name>

  <servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>jp.ash.webapp.HelloServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/HelloServlet/*</url-pattern>
  </servlet-mapping>

</web-app>


Copyright (C)1995-2002 ASH multimedia lab.
mail : info@ash.jp