支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • サーブレット&JSPとは? 概要と2

サーブレット&JSPはどちらもサーバーで動作するJavaのプログラムで、サーブレットとJSPはサーブレット&JSP、サーブレット/JSPといったようにまとめて表現されることが多いです。なぜなら、どちらもWEBアプリケーションを実現する際に組み合わせて使用することが多く、JSPはサーブレット技術の応用だからです。サーブレットの機能はサーブレットクラスというクラスを使用して実現し、JSPの機能はJSPファイルを使用して実現します。

しかし、結局JSPファイルは実行時にサーブレットクラスに変換されます。よって実現できることに大きな違いはありません。この2つは記述方法の違いからそれぞれに適した役割があるのです。端的に表現するならば、サーブレットは、他のプログラムへの指示出しをする役割、JSPは画面表示を行う役割です。それぞれの概要と違いを見ていきましょう。

サーブレットとは

サーブレットクラスにより実現され、サーブレットクラスは、doGetメソッドとdoPostメソッドを実装しています。どちらもサーブレットクラスが呼び出された際に実行されますが、どちらが実行されるかは呼び出した側で指定します。

下記はHTMLのフォームタグによりサーブレットを呼び出すサンプルです。

<form action="/example/WantedServlet" method="post">
名前:<input type ="text" name="name"><br>
パスワード:<input type="pass" name="pass"><br>
<input type="submit" value="ログイン">

action属性で呼び出されるサーブレットクラスを指定し、method属性で"post"を指定しています。フォームが送信されるとwantedServletのdoPostメソッドが実行されます。method属性を"get"と記述した場合はdoGetメソッドが実行されます。

さらに、同メソッド内で処理を分けることも可能で、そのためにはリクエストパラメータを使用します。下記は上の行がリクエストパラメータを使用していないリンク、下の行がリクエストパラメータを使用しているリンクです。

<a href ="/example/WantedServlet" >戻る</a><br />
<a href ="/example/WantedServlet?action=done">登録</a>

こうすることで、サーブレットのdoGetメソッド内では、リクエストパラメータがない場合と"done"の場合で、if文等で処理を振り分けることができます。

このようにサーブレットはユーザーのアクションに合わせて、様々な処理を実行することができます。その処理内容の中に、クラスを呼び出す、値を格納する、画面を呼び出す等を記述すれば様々な機能が実装できるのです。よって、サーブレットはサーバー内での指示出しの役割として適しているといえます。

JSP(Jakarta Server Pages)とは

JSPファイルにより実現されます。下記がファイルの一例です。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%String hello="Hello World";%>
<%=hello %>
</body>
</html>

以上のように、HTMLコードを骨子にJavaコードを埋め込む形式です。よって、JSPは画面表示をすることに適していると言えるでしょう。

サーブレットからの指示で画面を表示し、入力された情報をサーブレットに渡す、サーブレットから渡された情報を画面に表示する、といったユーザとのインターフェースの役割を果たします。

具体例

ログイン機能を用いて具体的な役割をみていきましょう。ログイン機能は主に下記で実現されます。

  1.  ①ログインを行うための入力画面の表示
  2.  ②入力された情報をデータベースへ問い合わせて照会
  3.  ③照会結果を画面に表示

まずは、ユーザーIDやパスワードを表示するログイン画面ですが、これは主にJSPファイルにより実現します。そしてその入力画面で記入された情報がサーバへ送られ、データベースへの問い合わせが必要になります。入力画面からの情報を受け取り、問い合わせの指示を出すのがサーブレットの役割で、これはサーブレットクラスにより実現します。

サーブレットクラスで照会作業もできますが、一般的には、Javaのクラスファイルを別で作成し、そのクラスに処理を任せます。照会作業の成否を別で作成したクラスから受け取り、その結果を元にログイン成功画面あるいは失敗画面を表示するJSPファイルを呼び出すのがサーブレットクラスの役割です。

ログイン画面とログイン情報入力後の画面表示を行うのがJSP、JSPに入力されたユーザー情報を元にデータベースを照会するクラスを呼び出し、その結果を元に適切なJSPを呼び出すのがサーブレットです。

MVCモデル

先の例はMVCモデルに当てはめるて考えるとさらに理解が深まります。MVCモデルはデザインパターンと呼ばれる過去の偉人たちがまとめたアプリケーション構造の黄金パターンの一種です。

MはModelの頭文字で、アプリケーションの中核となる処理を、Vはviewの頭文字で、ユーザーへの画面表示を、CはControllerの頭文字でユーザからの要求を受け取り、処理をModelに依頼し結果表示をViewに依頼します。今回の例では、実際にデータベースへの問い合わせを行ったクラスをM、画面表示を行ったJSPをV、指示出しを行ったサーブレットをCに当てはめることができます。このモデルのメリットはソースコードがわかりやすくなるだけでなく、実際の開発現場での作業分担にも効果を発揮するという点で、Modelはデータベースに詳しい担当者、ViewはデザインセンスのあるWebデザイナーといったような担当別の分業が可能となります。

サーブレット&JSPの動作環境

サーブレット&JSPはJakarta Enterprise Edition(Jakarta EE)という機能セットに含まれています。Java Standard Edition(Java SE) で最低限のJavaプログラムを作成できますが、企業用の大規模システム開発やWEBアプリケーションを作成する際にはJakarta EEが必要になります。これらの機能を利用するためにはアプリケーションサーバにJakarta EEをインストールする必要があります。そうすることで、サーブレットコンテナと呼ばれる実行環境が用意されサーブレット&JSPは機能することができます。

※管理会社が変更となったことでJava EEから改名しました。

まとめ

  • ・サーブレット&JSPは主にWEBアプリケーションを実現するために使用されるJavaプログラムである。
  • ・サーブレットは、主にサーバー内での各機能への指示を出す役割。
  • ・JSPは主に画面表示を行う役割。
  • ・MVCモデルを活用すると役割分担が明確になる。

サーブレット&JSPの概要と役割の違いを紹介しましたが、この二つはJavaでWEBアプリケーションを実現するために重宝する技術です。より深いWEBアプリケーションの理解への足掛かりとなれば幸いです。