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

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

関連記事

502 Proxy Error : Reason: Error reading from remote serverの原因と解消法メモ

<目次> (1) 502 Proxy Error : Reason: Error reading from remote serverの原因と解消法メモ  (1-1) 発生状況・エラーメッセージ  ( …

JavaでJSON形式のデータから値を抽出する方法+代表的なエラー対処も紹介

(0)目次&概説 (1) 記事の目的  (1-1) 目的 (2) JSON形式の概要  (2-1) JSON形式とは?  (2-2) JSON形式のフォーマット (3) JSON形式の抽出方法・事前準 …

JavaのServletでフォーム認証(Form認証)をカスタム実装する方法

<目次> (1) JavaのServletでフォーム認証(Form認証)をカスタム実装する方法  (1-1) フォーム認証の概要  (1-2) フォーム認証をカスタムする際のポイント  (1-3) 構 …

Javaのenumとは?使い方や意味を様々な利用シーンでご紹介(if、for、switch他)

<目次> (1) Javaのenumとは?意味や用途を様々な利用シーンでご紹介   (1-1) enumとは?  (1-2) 構文(enumの定義)  (1-3) 様々なenumの使用例 (1) Ja …

Andoroid StudioをLinuxにインストールする手順

  <目次> (1) Andoroid StudioをLinuxにインストールする手順  (1-1) Andoroid Studioとは?  (1-2) STEP0:前提条件(JDKのインス …

  • English (United States)
  • 日本語
Top