検索

キーワード


【Java】JSP(Java Server Pages)とは

  • 公開日:2020-10-21 16:32:14
  • 最終更新日:2020-11-13 21:39:26
【Java】JSP(Java Server Pages)とは

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

関連記事:【Java】サーブレット(Java Servlet) 【Java】JSPの基本的な構文


JSP(Java Server Pages)とは?


「JSP」とは、どのようなものでしょうか?

JSPはJavaサーブレットと同じく、サーバー上で動作するJavaのプログラムで、クライアントからのリクエストに応じて動的にWebページを生成することができます。

JavaサーブレットとJSPとの違いを簡単に説明すると、


【Javaサーブレット】

  • Javaコードの中にHTMLとして出力する内容を記載する

【JSP】

  • HTMLのコードの中(間)にJavaで実行する処理を記載する


実際のコードを例に記載してみます。

どちらも同じ内容のHTMLを出力するコードです。

【Javaサーブレット】(*.javaファイル)

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.servlet.*;

public class NowServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws
        ServletException, IOException {
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter out = resp.getWriter();
        out.println("<html>");
        out.println("<head><title>Now</title></head>");
        out.println("<body>");
        out.println("現在の時刻は");
        out.println(new Date());
        out.println("</body></html>");
    }
}


【JSP】(*.jspファイル)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ page import="java.util java.util.*" %>
<html>
    <head>
        <title>Now</title>
    </head>
    <body>
        現在の時刻は<%= new Date() %>
    </body>
</html>



JSPの特徴

JSPには以下のような特徴があります。

  • JSPはサーバ側で実行されるプログラム
  • 事前のコンパイルを必要としない(初回起動時に自動的にコンパイルされる)
  • <% %>タグを用いることで、HTMLの中にプログラムを埋め込むことができる
  • プログラムはJavaで記述でき、Javaの利点をそのまま生かすことができる
  • CGI と異なり、プロセス起動のオーバーヘッドがない
  • web.xmlへ登録を必要としない
  • JSP用のカスタムタグライブラリがたくさん用意されている


JSPとサーブレットの違い

ここまで説明した通り、それぞれに特徴がありコードの記載方法も異なりますが、JSP(*.jsp)はサーブレットコンテナで自動的に「サーブレット(.java)への変換」⇒「コンパイル(.classの生成)」後に実行されるため、根本的にはサーブレットと同じものという事になります。

JSPとサーブレットには、それぞれの得意分野があり、必要に応じて技術を使い分ける事で効率的に開発を進めることができます。(JSPを使用せずにサーブレットのみで全てを実現することも可能です)

サーブレットほぼ純粋なJavaコードであるのに対し、JSPはHTMLのソースをベースとして、JSPタグ(<%~%>)を使ってJavaのコードを埋め込むことができます。

このため、ある程度HTMLを知っている人であれば、デザイン部分に簡単なJavaコードを埋め込んで画面を作るといったことが可能になってきます。

また、JSPがコンパイルを必要としないという点もサーブレットとの違いであり、JSPのメリットといえる部分です。

JSPは「.jsp」ファイルをそのままWebサーバに配置すれば、それだけで動作しますので、HTMLと同じように画面に修正を加えてWebサーバーにアップするだけで変更を反映できます。

サーブレットと比較したときに、開発が容易で、メンテナンス性にも優れ、パフォーマンスもサーブレットと変わりませんので、画面表示(デザイン)部分などには有効に活用できる技術といえます。


【JSPの動作イメージ】(初回アクセス時、およびJSPファイル更新時

※2回目以降のアクセスでは、生成済みのインスタンスを再利用します

JSPの動作イメージ




次回以降の記事では、JSPの基本的なコーディングについて紹介していきたいと思います。



関連記事:【Java】サーブレット(Java Servlet) 【Java】JSPの基本的な構文



【著者】

新田

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

よく読まれている記事
【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】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

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