サーブレットの作成
- 解説
- 1. はじめに
- 2. サーブレットとは
- 3. ファイルの作成
解説
1. はじめに
ログイン画面を作成したので、次はログイン成功後にトップ画面に遷移するという処理を実装します。
『Java WEB初級』コースでは、フォームの送信先を示すaction属性に、「action="result.jsp"」のように、表示したいファイル名を直接指定することで画面遷移をしていました。しかし、今回は単純な画面遷移ではなく、その間にユーザーのログイン処理を実行し、その結果をもとに画面遷移を行うようにする必要があります。
そこで使用するのがサーブレットです。
2. サーブレットとは
サーブレットの定義
サーブレットとは、MVCのC(コントローラー)に該当し、WEBサーバー上で動作するプログラムのことです。ブラウザからの要求に応答しHTMLを返したり、送信されてきたデータを処理したりする役割を持ち、サーブレットクラスを作成することで実行できる様になります。
サーブレットクラスの定義
サーブレットクラスを定義するには以下のルールに従う必要があります。
① | 関係するクラスのインポート |
② | HttpServletクラスの継承 |
③ | doGetメソッドのオーバーライド(doPostメソッドのオーバーライド) |
ただし、これらのルールはeclipseでサーブレットクラスを作成すると自動で実装されるので気にすることなく使用できます。
//①関係するクラスのインポート
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//②HttpServletクラスの継承(extends)
@WebServlet(/URLパターン)
public class ServletSample extends HttpServlet{
//③doGetメソッドのオーバーライド(GET通信で呼ばれた際に動く)
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
//処理記入部
}
//③doPostメソッドのオーバーライド(POST通信で呼ばれた際に動く)
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
//処理記入部
}
}
URLパターン
サーブレットクラスの@WebServletアノテーションには、リンクの遷移先に設定したURLや、フォームの送信先に設定したURLと同じURLパターンを設定します。そうすることでリンクや、送信ボタンをクリックした時に対応するサーブレットにHTTPリクエストを送ることができます。
※アノテーションとは「@」から始まる構文で、クラスやメソッドに付加情報を設定することができます。
構文:@WebServlet
構文
@WebServlet(/URLパターン)
例)URLパターンをsampleにした場合
@WebServlet("/sample")
public class ServletSample extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
//処理記入部
}
}
※「http://localhost:8080/プロジェクト名/sample」にGET通信することで処理が動く
例)URLパターンをtestにした場合
@WebServlet("/test")
public class ServletSample extends HttpServlet{
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
//処理記入部
}
}
※「http://localhost:8080/プロジェクト名/test」にPOST通信することで処理が動く
3. ファイルの作成
では、ログイン処理用のサーブレットクラスを作成しましょう。
手順1
(1) | eclipseの「パッケージ・エクスプローラー」から、「tweet_servlet」を右クリックし、「新規」 > 「その他」をクリックしてください。 |
(2) | 検索フォームに「サーブレット」と入力して、「サーブレット」を選択し、「次へ」をクリックしてください。 |
(3) | 「Java パッケージ」に「net.digskill.tweet_servlet.controller」、 「クラス名」に「AuthController」と入力し、「次へ」をクリックしてください。 |
(4) | 何も変更せずに「次へ」をクリックし、「スーパークラスからのコンストラクター」のチェックを外し、「完了」をクリックしてください。 |
以上で、サーブレットクラスを作成することができました。
作成したサーブレットクラスには自動でdoGet、doPostメソッドが実装されており、このサーブレットへのリクエストがGETで行われた場合はdoGetメソッドが、POSTで行われた場合はdoPostメソッドが実行されます。
問題
確認問題
確認問題1
サーブレットの説明として正しくないものはどれか?