[トライアル版連動企画]
Webアプリケーションの作成が一通り理解できる基礎講座
第2回 サーブレット、JSPの開発と実行
|
サーブレットを使った開発 |
はじめに、サーブレットでコードを書いてみよう。サーブレットは、Webサーバ上で動作するJavaプログラムである。JBuilderを用いてサーブレットによる開発ステップを理解しよう。
■サーブレットウィザードを使う
JBuilder 4でサーブレットを開発するには、サーブレットウィザードを用いる。[ファイル]→[新規作成]を実行し、オブジェクトギャラリーから[サーブレット]を選択する。
画面1 サーブレットウィザード (クリックすると拡大します) |
サーブレットは、クライアントからのHTTPリクエストに応答し、処理を実行する。GETリクエストに対してはdoGet()メソッドが、POSTリクエストに対しては、doPost()メソッドが呼び出される。ウィザードでは、これらのメソッドの実行をチェックする。
プロジェクトウィザードで、mywebappというプロジェクトを作成する。サーブレットウィザードの最初のステップでは、次のように指定する。
項目
|
値 |
パッケージ | mywebapp |
クラス | MyFirstServlet |
生成する内容の種類 | HTML |
ヘッダーコメントの生成 | (チェックしない) |
単一スレッドモデル | (チェックしない) |
メソッドの実装 |
(doGet、doPostをチェックする) |
次のステップでは、SHTMLファイルの生成を指定する。SHTMLを使うと、SSI(Server Side Include)という技術を使って、HTMLの一部をサーバ側で結合してクライアントに配信できる。SHTMLでは、<SERVLET>タグを使用できる。<SERVLET>タグは、サーバ側でサーブレットの実行結果に置き換えられる。
項目
|
値 |
SHTMLファイルの生成 | (チェックする) |
<SERVLET>タグの生成 | (チェックする) |
リンクの生成 | (チェックしない) |
最後のステップでは、サーブレット引数を指定する。サーブレット引数は、POSTのときなどにクライアントからサーブレットに渡されるパラメータである。
[引数の追加]ボタンを押し、引数を追加する。追加した項目を以下のように設定する。
項目
|
値 |
名前 | name |
型 | String |
説明 | (空白) |
変数 | name |
デフォルト | (空白) |
[終了]ボタンを押すと、サーブレットクラスが生成される。
■サーブレットコードを理解する
生成されたコードには、2つの重要なメソッドがある。doGet()は、クライアントがサーブレットURLを指定してアクセスしてきたときに、応答する内容を記述している。ここで必要なコードは、リスト1のとおりである。
リスト1 |
public void doGet(HttpServletRequest
request, HttpServletResponse response) throws ServletException, IOException
{ |
このメソッドでは、responseという応答情報を格納したオブジェクトから、出力ストリームを取得し、HTMLコンテンツを出力している。基本的な処理の流れは次のようになる。
(1) コンテントタイプの指定response.setContentType(CONTENT_TYPE); |
変数CONTENT_TYPEは、以下のように定義されている。
private static final String
CONTENT_TYPE = "text/html; charset=Shift_JIS"; |
(2) 出力ストリームの取得
PrintWriter out = response.getWriter(); |
(3) HTMLタグの出力
out.println("<font
color=\"green\">"); |
一方、doPost()では、HTMLフォームなどで入力されたデータを受け付ける(リスト2)。
リスト2 |
public void doPost(HttpServletRequest
request, HttpServletResponse response) throws ServletException, IOException
{ |
以下の1行は、サーブレット引数を取り出すコードである。
name = request.getParameter("name"); |
日本語を含むパラメータを取り出すには、次のように変更しなければならない。
name = new String(request.getParameter("name").getBytes("ISO8859_1"),
"JISAutoDetect"); |
出力内容に、取得したパラメータを含めてみよう。
out.println("<html>"); |
最後に、生成されたSHTMLファイルを修正する。<servlet>タグ中の、不要な<param>タグを削除する。
<servlet |
■サーブレットを実行してみる
作成したサーブレットを実行するには、JBuilderのプロジェクトペインで、サーブレットクラスを選択するか、サーブレットを呼び出すSHTMLファイルを選択して、[Web実行]メニューを実行する。ここでは、SHTMLファイルを選択しよう。
SHTMLファイルを実行すると、図のように、サーブレットを含むHTMLコンテンツが表示される。
画面2 SHTMLファイルの実行 (クリックすると拡大します) |
ここに表示されている内容は、doGet()に記述した出力結果である。入力フォームに名前を入力して、[Submit]ボタンを押すと、doPost()メソッドが実行され、結果が表示される。
画面3 doPost()の実行結果 (クリックすると拡大します) |
では、作成したサーブレットをInprise Application Serverに配布してみよう。Inprise Application Serverでは、サーブレットクラスをインストールディレクトリ下の servlets/ に配置する。JBuilderで作成したプロジェクトの mywebapp/class 下に生成されたclassファイルを、このディレクトリ下にコピーする。この例では、servlets/mywebapp/ に、MyFirstServlet.classをコピーすればよい。次に、SHTMLファイルをコピーする。これは、インストールディレクトリ下の html/public_html下にコピーする。
Inprise Application Serverを起動したら、ブラウザから次のようなURLを指定する。
http://localhost:8080/MyFirstServlet.shtml |
以上で、JBuilderで実行したときと同じように、サーブレットを呼び出せる。
JSPを使った開発 |
|
連載記事一覧 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (2017/5/9)
ログ基盤の構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。今回は、実案件を事例とし、ログ管理基盤の有用性を、障害対応時間比較も交えて紹介 - Chatwork、LINE、Netflixが進めるリアクティブシステムとは何か (2017/4/27)
「リアクティブ」に関連する幾つかの用語について解説し、リアクティブシステムを実現するためのライブラリを紹介します - Fluentd+Elasticsearch+Kibanaで作るログ基盤の概要と構築方法 (2017/4/6)
ログ基盤を実現するFluentd+Elasticsearch+Kibanaについて、構築方法や利用方法、実際の案件で使ったときの事例などを紹介する連載。初回は、ログ基盤の構築、利用方法について - プログラミングとビルド、Androidアプリ開発、Javaの基礎知識 (2017/4/3)
初心者が、Java言語を使ったAndroidのスマホアプリ開発を通じてプログラミングとは何かを学ぶ連載。初回は、プログラミングとビルド、Androidアプリ開発、Javaに関する基礎知識を解説する。
|
|