JSPの基礎知識 |
|
「JSPとは何ですか?」で、ServletとJSPでできる機能には、ほとんど違いがないと書きましたが、その理由は、JSPの動作原理に関係があります。クライアントがJSPを呼び出す際には、HTMLなどと同じように、「….jsp」というファイル名を指定した形式でリクエストがWebサーバに送信されます。JSPに対応したWebサーバでは、受信したリクエストのURLを解析し、.jspというファイルが指定されていた場合は、Webサーバ自身は処理を行わず、その処理を、JSPプロセッサに依頼します。そして、JSPプロセッサが、指定されたJSPファイルを解析して実行し、結果をクライアントに送信する、という流れになります。
この仕組みそのものは、Servletに非常に近いものですが、JSPの面白いところは、JSPプロセッサの動作にあります。実は、JSPプロセッサは、指定されたJSPを解析し、これを、同じ動作を行うServletのソースコードに書き直してコンパイルし、できたクラスファイルをロードして実行する、という処理をしているのです。つまり、すべてのJSPファイルは、サーバ側でいったんServletに書き換えられて、Servletとして実行されているということなのです。
![]() |
JSPはServletに変換されて実行される |
ですから、ServletとJSPでできる機能には、ほとんど違いはない、というより、Servletでできないことは、JSPでもできないわけですから、機能は同じといってしまってもよいでしょう。
ところで、上の説明を読まれて、毎回、JSPが呼ばれるたびに、Servletのソースファイルを生成して、コンパイルして、というサイクルを繰り返していては、同じ処理を行うServletと比較して、パフォーマンスが悪くなってしまうのでは? と思われた方もいらっしゃることでしょう。もちろん、同じJSPを実行するたびに毎回このような処理を行っているわけではなく、一度、クラスファイルが生成され、ロードされたものについては、Servletのソースは生成せず、ロードされたメモリ上のインスタンスを実行するようになっていますので、2回目以降のリクエストについては、通常のServletを実行するのと変わらない応答速度になります。
![]() |
2回目以降のリクエストでは生成済みのクラスファイルを利用する |
![]() |
「Java Solution FAQ」 |
- 実運用の障害対応時間比較に見る、ログ管理基盤の効果 (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に関する基礎知識を解説する。
![]() |
||
|
||
![]() |
Java Agile 記事ランキング
- AIにJavaと開発環境について聞いてみた――AIコーディング時代に必要なプログラミング脳を強化しよう
- Spring BootとSpring MVCの違い 両者の特徴と使い分けのポイントとは
- 「GitHub Copilot for Eclipse」(パブリックプレビュー)リリース、GitHub CopilotでEclipseの開発体験はどう変わる?
- AWS、OpenJDKディストリビューション最新版「Amazon Corretto 22」をリリース
- PlayStation Network開発チームは「増え続けるスクラムチームの管理問題」をどう解決したのか
- “Hello World”が3行で収まる、Oracleが「Java 24」を提供開始
- 依存関係管理の問題を「Gradle」で解決 有識者がチュートリアル形式で解説
- AIにJavaと開発環境について聞いてみた――AIコーディング時代に必要なプログラミング脳を強化しよう
- “Hello World”が3行で収まる、Oracleが「Java 24」を提供開始
- COBOL/メインフレームのJava/マイクロサービス化サービスをデロイト トーマツが発表 どう実現しているのか
- 「GitHub Copilot for Eclipse」(パブリックプレビュー)リリース、GitHub CopilotでEclipseの開発体験はどう変わる?
- Spring BootとSpring MVCの違い 両者の特徴と使い分けのポイントとは
- PlayStation Network開発チームは「増え続けるスクラムチームの管理問題」をどう解決したのか
- Springにおける「RestController」と「Controller」の違いとは
- Spring BootアプリをAWSにデプロイするには?
- 「Spring」「Spring Boot」「Spring Framework」、それぞれの特徴とは
- Oracle、「Java 23」を提供開始 機能強化と変更点をおさらい