検索

キーワード


目次

【Java】サーブレット(Java Servlet)

  • 公開日:2020-10-29 17:57:57
  • 最終更新日:2020-11-13 21:31:12
【Java】サーブレット(Java Servlet)

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

こんにちは。エンジニアの新田です!
ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。
今回は、主にJavaサーブレット/JSPについて触れていきます。
Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!

関連記事:【Java】サーブレットの作成(基本的なコーディング)


サーブレット(Java Servlet)とは?


「サーブレット」とは、どのようなものでしょうか?

Webサーバ上(バックエンド)で動く、Javaで書かれたプログラムのことです。(単にサーブレットと呼ばれることが多い)

ユーザーが検索フォームでキーワードを入力して検索ボタンをクリックする等、クライアント側からリクエストを送ると、その要求をサーブレットが受けてデータの処理をしたり動的なWebページを生成したりします。

動的なWebページとは、同じURLをリクエストされた場合でもリクエスト(入力内容など)に応じてページの見え方が変わるようにWebサーバー側で何らかの処理(プログラム)を実行して、HTMLテキストを生成して提供するページのことです。

(静的なWebページは、Webサーバーにあらかじめ保管してあるHTMLファイルをそのまま返す)

動的なWebページを提供する方法はいくつかありますが、そのうちの1つの方法としてサーブレットが利用できます。


【動作イメージ

サーブレット動作イメージ

  • ①. Webブラウザから、リクエストが送信される。
  • リクエストの種類によって、処理を分岐する。
  • A-①. 動的な処理の場合、サーブレットコンテナに処理(サーブレットの実行)を依頼動的なWebページ
  • A-②. データベースアクセスが必要な場合は、データベースへの問い合わせ
  • A-③. データベースが結果を返却
  • A-④. サーブレットにより生成された結果(HTML)を返却
  • B-①. 静的な処理の場合、Webサーバー上の対象リソース(HTML、画像ファイルなど)を参照
  • B-②. 対象リソース(HTML、画像ファイルなど)を返却
  • ②. 実行結果をWebブラウザに送信。Webブラウザに実行結果が表示される。


Java Servletの実態はJavaのクラスです。つまり、.javaファイルをコンパイルした.classファイルであり、通常のJavaファイルと同じです。



Servlet実行に必要な要素(ミドルウェア、ソフトウェア)

Servletの実行には以下の要素が必要になります。

JRE(JavaSE)

  • Javaそのものの実行環境

Webサーバ(Apacheなど)

  • リクエストを受信するために必要

Servletコンテナ(Tomcatなど)

  • Servletの実行環境

Webブラウザ (Chrome,IE,Firefoxなど)

  • Webアプリケーションのクライアント



サーブレットのメリット

サーブレットには以下のようなメリットがあり、大規模なWebアプリケーションにも対応できるものになっています。

メモリ上に常駐するので、実行する度に新しいプロセスを生成する必要が無い

  • 一度実行されたServletは、1つのスレッドとして実行環境のメモリ上に常駐するため、2回目以降の実行においては、新たなプロセスを生成せずに、すでにあるものを実行できるため、応答速度に優れている。

マルチスレッドで動作することができる

  • 複数のクライアントから同時にリクエストがあっても、片方を待たせることなく並行して処理を行うことができるため、応答速度に優れている(ただし、複数スレッドを考慮した実装をする必要はある)。

Javaのメリットをそのまま享受することができる

  • ServletはJavaで書かれているため、プラットフォームに依存しない。それ以外にもJavaのメリットとなる点についてはServletでも同様のメリットがある。



Servletコンテナ(Webコンテナ)

サーブレットはJavaプログラムなので、Java実行環境が必要になります。通常のJavaアプレットであればJVMを直接利用しますが、サーブレットの場合は、サーブレットコンテナを経由してJVM上で実行されます。

HTTPリクエストをWebサーバー経由でサーブレットコンテナが受け取り、サーブレットコンテナがサーブレットに対して処理の命令を出す流れになります。


Servletコンテナを搭載する製品

■ オープンソース

  • Tomcat (Apache Tomcat Project)
  • Geronimo(Apache Geronimo Project)

など

■商用アプリケーションサーバ

  • WebSphere Application Server (IBM)
  • WebLogic Server (Oracle)

など


ServletコンテナによるServletの制御

サーブレットの初回起動時には、サーブレットをローディングし、サーブレットの初期化(initメソッド)を実行します。

その後、サーブレットをServletコンテナ上に常駐化(インスタンス化)し、Webブラウザからの呼び出しを待ちます。

常駐(インスタンス化)しているサーブレットがWebブラウザから呼び出されたときは、そのままサービスの実行(serviceメソッド)を行います。

サーブレットの停止は、Servletコンテナの停止と同時に行います。このとき、サーブレットの消滅(destroyメソッド)を処理します。


【動作イメージ】

Servletコンテナ動作イメージ
  • ①. Webサーバ経由で受け取ったクライアントからのリクエスト(URL)を解析し、サーブレットの起動と呼び出しを行う。
  • ※指定されたサーブレットの状態によって処理が分岐する
  • ②. まだコンテナ内にインスタンス化されていなければ、サーブレットをロードする(※すでにインスタンス化されている場合は、インスタンス化さ れているサーブレットを再利用する。)
  • ③. インスタンス化したサーブレットはコンテナのメモリ上に常駐する(次のリク エストを待つ)
  • ④. リクエストされたサーブレットを実行
  • ⑤. サーブレット実行結果を返却する
  • ⑥. 出力結果(HTML)を、Webサーバを経由でWebブラウザに返却する。





次回以降の記事では、サーブレットを実際に動かすための動作環境と、簡単なJavaコードについて紹介していきたいと思います。


関連記事:【Java】サーブレットの作成(基本的なコーディング)




【著者】

新田

JavaメインのWebアプリケーション開発に多く携わっています。
Javaの基本的な部分の紹介や、これまで経験したシステム開発手法、新しい技術についても紹介していこうと思います。

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート

よく読まれている記事
【Java】JSPでタグライブラリを使う(JSTL)

【Java】JSPでタグライブラリを使う(JSTL)

こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!そもそもStringとは何?『 String 』... Java言語において文字列のデータ型を指します。基本デ

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!Stringクラスformatメソッドの文字列整形【java.utilパッケージ】Formatterクラスfo

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者にも✅、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!文字列を扱う3つのクラス【java.langパッケージ】java.langパッケージの文字列を扱うクラスにはS

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!プリミティブ型と参照型プログラム開発では型を持った変数を使ってデータのやり取りをしますが、データ型によって仕様