Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Java JSP/Servlet

JSPとは?役割や基本文法およびHelloWorldのサンプルプログラムの紹介

投稿日:2019年9月14日 更新日:

(0)目次&概説

(1) JSPの基本
 (1-1) JSPとは?
 (1-2) JSPのHelloWorld
(2) JSPの基本文法
 (2-1) ディレクティブ
 (2-2) アクションタグ
 (2-3) スクリプト要素
  (2-3-1) 宣言部
  (2-3-2) スクリプトレット
  (2-3-3) 式
  (2-3-4) コメント
(3) その他
 (3-1) デバッグ

(1) JSPの基本

(1-1) JSPとは?

Webサーバー上でJavaを実行し、動的にWebページを作成するための技術です。
JSPはベースはHTMLで記述され、タグを利用してHTMLの中にJavaコードを埋め込む事ができます。書いたままの内容を出力できるため、画面描画等で強みを発揮し、ビューとしての役割を果たします。

目次にもどる

(1-2) JSPのHelloWorld

JSPのHelloWorldのプログラムを示します。JSP全体がサーブレットのHelloWorldの23~29行目に対応しています(JSPは内部的にもサーブレットに変換される)。

<%@ page contentType="text/html; charset=UTF-8" %>
<%! String message = "HelloWorld I'm Rainbow"; %>

<html>
        <head>
        <meta charset="UTF-8">
        <title><%=message %></title>
        </head>
        <body>
        <%=message %>
        <%
        out.println("<br />");
                for(int i=0; i<5; i++){
                    out.println("<p><font size='20'>"+message + " No."+(i+1)+"</p><br />");
                }
        %>
        </body>
</html>

こちらのプログラムを実行すると結果は下記のようになります。

 >目次にもどる

(2) JSPの基本文法

(2-1) ディレクティブ

ページの処理方法の指定を行います(サンプルコードの1行目)。構文は下記の通りで、ページ全体に対する処理であること、またコードの読みやすさを考慮してページの基本は先頭に記述します。
<%@ [ディレクティブ名]  [属性名]="属性値" %>

[ディレクティブ名]は複数種類がありますが、最も代表的なのが「page」で、以下のようにページの表示形式を指定したりします。

<%@ page contentType="text/html; charset=UTF-8" %>
他にもパッケージをインポートする場合などは[ディレクティブ名]=importを使い、下記のように記述します。
<%@ page contentType="text/html; charset=UTF-8" import="java.util.*" %>

目次にもどる

(2-2) アクションタグ

アクションタグとはJSPで利用する典型的な処理を、Javaを書くよりも簡単な表現で実行できるように、事前に利用できるように登録用意しているタグ表記です。例えば<jsp:include>ではpage属性で指定したファイルをページに取り込むことができます。

例えば下記のような「左側」の「HelloWorldJSP.jsp」と「右側」の「HelloWorldJSP2.jsp」がそれぞれ独立したjspページとして存在しているとします。その時「右側」のjspを「左側」のjspの最下部に取り込む場合に、includeタグを用いて行うことが出来ます。

<--左側のJSP-->
<%@ page contentType="text/html; charset=UTF-8" import="java.util.*" %>
<%! String message = "Hello Rainbow Engine!"; %>
<!DOCTYPE html>
<html>
        <head>
        <meta charset="UTF-8">
        <title><%=message %></title>
        </head>
        <body>
        <%
               for(int i=0; i<5; i++){
                   out.println(message+" No."+(i+1)+"<br />");
               }
        %>
        </body>
</html>


<--右側のJSP-->
<%@ page contentType="text/html; charset=UTF-8" import="java.util.*" %>
<%! String message = "Hello Rainbow Engine!****"; %>
<!DOCTYPE html>
<html>
        <head>
        <meta charset="UTF-8">
        <title><%=message %></title>
        </head>
        <body>
        <%
               for(int i=0; i<5; i++){
                   out.println(message+" No."+(i+1)+"<br />");
               }
        %>
        </body>
</html>

includeタグを用いて記載を修正した右側のjspを下記に示します。
(※16行目を追加してます)

<--左側のJSP-->
<%@ page contentType="text/html; charset=UTF-8" import="java.util.*" %>
<%! String message = "Hello Rainbow Engine!"; %>
<!DOCTYPE html>
<html>
        <head>
        <meta charset="UTF-8">
        <title><%=message %></title>
        </head>
        <body>
        <%
               for(int i=0; i<5; i++){
                   out.println(message+" No."+(i+1)+"<br />");
               }
        %>
        </body>
</html>
<jsp:include page="HelloWorldJSP2.jsp" />


目次にもどる

(2-3) スクリプト要素

宣言部、スクリプトレット、式、コメントを総称して「スクリプト要素」と呼びます。

(2-3-1) 宣言部
宣言部では変数やメソッドの宣言を行います。
サーブレットのHelloWorld
//構文
<%![Your Code]%>
//(例)HelloWorldJSP.jspの2行目
<%! String message = "Hello Rainbow Engine!"; %>

目次にもどる

(2-3-2) スクリプトレット
スクリプトレットはJSPの中にJavaのプログラム(Script)を断片的に埋め込むために利用します。
サーブレットのHelloWorld
//構文
<%[Your Code]%>
//(例)HelloWorldJSP.jspの10~15行目
<%
	   for(int i=0; i<5; i++){
		   out.println(""<p><font size='20'>""+message+"" No.""+(i+1)+""<br />"");
	   }
%>

目次にもどる

(2-3-3) 式

式の出力に使います。例えば、下記の例では確定した値「message」を出力しています。これを”title”タグで挟む事でブラウザのタブ名になります。
サーブレットのHelloWorld

//構文
<%--[Your Comment]--%>
//(例)HelloWorldJSP.jspの7行目
<title><%=message %></title>

本来はout.println()で記載していた様な内容も、この式の出力で簡易的な記載で表現ができます。例えば、下記の①と②は同じ意味になります。

//例1
<%
   for(int i=0; i<5; i++){
%>
	   <%=message+" No."+(i+10)+"<br />" %>
<%
   }
%>

//例2
<%
   for(int i=0; i<5; i++){
	   out.println(message+" No."+(i+1)+"<br />");
   }
%>

目次にもどる

(2-3-4) コメント

コメントの記述に使います。コメントはプログラムの可読性を向上させるために、処理の内容を文章で記述するものです。

//構文
<%=[Your Code]%>
//(例)
<%--This is a comment--%>

目次にもどる

(3) その他

(3-1) デバッグ

不具合を見つけるために有効な手段の一つが「ソースの表示」です。JSP要素が全てHTMLタグに変換されたHTMLソースを見る事が出来るので、コードが見やすいという利点があります。

↓ブラウザの画面にて「右クリック」で「ソースの表示」をクリックします。

(a) Internet Exploror系

ブラウザでJSPのページを表示した状態で「右クリック」→「ソースの表示」を押下すると、ソースコード等のウィンドウが表示されます。

(b) Google Chrome系
こちらもブラウザでJSPのページを表示した状態で「右クリック」→「ページのソースの表示」を押下すると、ソースコードのウィンドウが表示されます。

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-Java, JSP/Servlet

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Javaでファイル読み込みを行う方法+サンプルプログラムもご紹介

<目次> (1) Javaでファイル読み込み&書き込みを行う方法  (1-1) 構文  (1-2) サンプルプログラム (1) Javaでファイル読み込み&書き込みを行う方法 (1-1) 構文 (構文 …

APサーバ(Java)⇒DBサーバ(OracleDB 11g)へJDBC接続する方法まとめ

(0)目次 (1) 前提条件 (2) JDBCドライバーのインストール  (2-1) JDBCドライバーをダウンロード  (2-2) APサーバにアップロード・解凍 (3) プログラムの実装  (3- …

JSP/Servletで画面毎のアクセスカウンターを作成してみた(パート1:仕様説明編)

(0)目次&概説 (1) 仕様について  (1-1) アーキテクチャ(アプリ/DB)  (1-2) アプリの仕様概要  (1-3) データベースの仕様概要 (2) ソースコード (3) エラー対応 ( …

JavaのArrrayListとLinkedListの違いについて

<目次> (1) JavaのArrrayListとLinkedListの違いについて  (1-1) 比較表(ArrayList vs LinkedList)  (1-2) まとめ  (1-3) 参考 …

木構造の探索における計算量の違いや木構造の種類について(B木/二分木/2-3探索木)

<目次> (1) 木構造の探索における計算量の違いや木構造の種類について(B木/二分木/2-3探索木)  (1-1) 木構造について  (1-2) 「B木」構造  (1-3) 「二分木」構造  (1- …

  • English (United States)
  • 日本語
Top