Rainbow Planet (GT×IT×SP×SA)

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

01_IT技術 (Technology)

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審査用広告コード


-01_IT技術 (Technology)

執筆者:


comment

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

関連記事

PythonのdatapackageとSQLAlchemy、SQLiteを使ってcsvデータをSELECTする

(0)目次&概説 (1) 今回の目的  (1-1) 目的  (1-2) 前提条件 (2) 実施手順  (2-0) 事前作業  (2-1) データ(csv)のロード  (2-2) エンジンの作成  (2 …

パフォーマンスモニタでCPUリソース監視する際の主なカウンターについて

(0)目次&概説 (1) 記事の目的  (1-1) 目的 (2) CPUの監視  (2-1) CPUの主な監視項目  (2-2) CPUのカウンタ追加について (3) CPUの主な用語について  (3 …

ドメインと名前解決およびドメインの運営の仕組みについて

(0)目次&概説 (1) ドメインと名前解決  (1-1) 名前解決とは?  (1-2) DNSサーバの階層  (1-3) DNSサーバの名前解決の流れ (2) ドメインの運営とビジネスの仕組み  ( …

Python3.5&Anaconda4.2のインストール手順(CentOS6)とHelloWorldの方法

(0)目次&概説 (1) インストール資源の入手  (1-1) ディストリビューション  (1-2) GitHubのpyenvのリポジトリのコピーを取得する (2) インストールの実施  (2-1) …

PythonでSQLAlchemyを使ってOracleDBに接続する方法

(0)目次&概説 (1) 記事の目的  (1-1) 目的  (1-2) 前提条件 (2) 事前準備  (2-1) 準備1(cx_oracleパッケージの導入)   (2-1-1) インストール資源の入 …

Top