#はじめに
前提としてEclipseを導入済みとします。
Eclipseダウンロード
今回はEclipseでServletとJSPを利用してHelloWorldを出力することを目指します。
##そもそもServletって何?
サーブレットとはWebサーバー上、つまりバックエンドで動くプログラムであり動的なWebページを実現するためのJavaで書かれたプログラムです。
動的なWebページとは...
同じURLをリクエストされた場合でもアクセスした人に応じてページの見え方を変えて提供するページのこと。例えばECサイト(ネットショッピングができるサイト)で、自分の閲覧履歴やお気に入りに追加した情報などを考慮してページが構成され、アクセスした人それぞれの好みや行動の傾向に合わせたページが提供されます。そのうちの1つの方法としてサーブレットが利用できます。
##Servletを学ぶこと
Java初心者にとってサーブレットを学ぶことは良い
- 現在も非常によく使われている技術。
- WebフレームワークがServletを隠ぺいしているので、素のServletを書くことはあまりないが
問題が起きたときは、Servletの知識が必要になること。 - Webアプリの基本的な仕組みが身につく
#Servletを動かす
##実行環境
- Eclipse4.16
- Tomcat9
- Java11
##Servletプロジェクト作成
サーブレットの作成を行なう。
Eclipseのファイル
→新規
→その他
→Webフォルダ
→動的Webプロジェクト
の順に進める。
適したプロジェクト名を入力
→ターゲットランタイムは自分が持っているJavaのバージョンを選択
(設定から使用できるjavaバージョンを確認できる)→完了
##Servletクラスの作成
Webサーバー上で動くサーブレットを作成する。
ファイル
→新規
→その他
→Webフォルダ
→サーブレット
→適したパッケージ名
、クラス名
(今回はservlet,SampleTest)を入力→完了
すると下のようなJavaファイルが作成される。
package servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class SampleTest
*/
@WebServlet("/SampleTest")
public class SampleTest extends HttpServlet {
/**
* @see HttpServlet#HttpServlet()
*/
public SampleTest() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
#HelloWorldを出力する
※今回はHTMLをServletで出力する方法もありますが省略します。
##フォワードを行うサーブレットクラス
今回はdoGetメソッドを編集します。
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.getRequestDispatcher("/WEB-INF/view/sample.jsp").forward(request, response);
}
フォワードは、RequestDispatcherインスタンスのfoward()メソッドで行います。
フォワード構文
RequestDispatcher dispatcher =
request.getRequestDispatcher("フォワード先");
dispatcher.foward(request,response);
フォワード先はJSPファイルだけでなくサーブレットクラスも指定できる。
※ただし同じWebアプリケーションのものであること
- JSPファイルの場合
- /Web-Contentからのパス
- サーブレットクラスの場合
- /URLパターン
##JSPファイルを利用する
コントローラーはユーザーからリクエストを受けて全体の制御を行うことに適したサーブレットクラスが担当し、
出力を行うビューはHTMLの出力を得意とするJSPファイルが担当する
###JSPファイルの作成
WebContent/WEB-INF
を右クリックし 新規
→ フォルダ
→フォルダー名を入力
→完了
※今回のフォルダ名はviewとする
view
を右クリックし 新規
→ その他
→JSPファイル
→次へ
→フォルダー名を入力
→完了
でJSPファイル作成
※今回のファイル名はsample.jspとする
#####JSPファイルへの直接リクエストの禁止
WEB-INF
配下に配置すること
WEBアプリケーションを作ると、ブラウザからリクエストされるのは基本的にサーブレットクラスになります。JSPファイルはサーブレットクラスからフォワードされて動くことを前提に作成するので、ブラウザから呼び出されるとエラーや不具合が発生することがあるので直接リクエストができないようにしておきます。
ブラウザはWEB-INF
以下に配置されたファイルを直接リクエストすることができません。
##表示する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>
<h1>Hello World</h1>
</body>
</html>
今回はHello World
を出力したいのでJSPファイルに入力します。
##サーバーの起動
これで準備は整ったのでサーバーを起動しましょう。
SampleTest.java
を右クリック実行
→ サーバーで実行
サーバーのタイプをTomcat v9.0サーバー
を選択
######上記の画面が出力されれば成功!
#最後に
今回はSevletを使用して基礎のHelloWorldを出力しましたが
次回はdoPostメソッドを使用してパラメーター取得を行います。