Loading [MathJax]/extensions/tex2jax.js

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は内部的にもサーブレットに変換される)。

  1. <%@ page contentType="text/html; charset=UTF-8" %>
  2. <%! String message = "HelloWorld I'm Rainbow"; %>
  3.  
  4. <html>
  5. <head>
  6. <meta charset="UTF-8">
  7. <title><%=message %></title>
  8. </head>
  9. <body>
  10. <%=message %>
  11. <%
  12. out.println("<br />");
  13. for(int i=0; i<5; i++){
  14. out.println("<p><font size='20'>"+message + " No."+(i+1)+"</p><br />");
  15. }
  16. %>
  17. </body>
  18. </html>

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

 >目次にもどる

(2) JSPの基本文法

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

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

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

  1. <%@ page contentType="text/html; charset=UTF-8" %>
他にもパッケージをインポートする場合などは[ディレクティブ名]=importを使い、下記のように記述します。
  1. <%@ 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タグを用いて行うことが出来ます。

  1. <--左側のJSP-->
  2. <%@ page contentType="text/html; charset=UTF-8" import="java.util.*" %>
  3. <%! String message = "Hello Rainbow Engine!"; %>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title><%=message %></title>
  9. </head>
  10. <body>
  11. <%
  12. for(int i=0; i<5; i++){
  13. out.println(message+" No."+(i+1)+"<br />");
  14. }
  15. %>
  16. </body>
  17. </html>
  18.  
  19.  
  20. <--右側のJSP-->
  21. <%@ page contentType="text/html; charset=UTF-8" import="java.util.*" %>
  22. <%! String message = "Hello Rainbow Engine!****"; %>
  23. <!DOCTYPE html>
  24. <html>
  25. <head>
  26. <meta charset="UTF-8">
  27. <title><%=message %></title>
  28. </head>
  29. <body>
  30. <%
  31. for(int i=0; i<5; i++){
  32. out.println(message+" No."+(i+1)+"<br />");
  33. }
  34. %>
  35. </body>
  36. </html>

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

  1. <--左側のJSP-->
  2. <%@ page contentType="text/html; charset=UTF-8" import="java.util.*" %>
  3. <%! String message = "Hello Rainbow Engine!"; %>
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title><%=message %></title>
  9. </head>
  10. <body>
  11. <%
  12. for(int i=0; i<5; i++){
  13. out.println(message+" No."+(i+1)+"<br />");
  14. }
  15. %>
  16. </body>
  17. </html>
  18. <jsp:include page="HelloWorldJSP2.jsp" />


目次にもどる

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

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

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

目次にもどる

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

目次にもどる

(2-3-3) 式

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

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

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

  1. //例1
  2. <%
  3. for(int i=0; i<5; i++){
  4. %>
  5. <%=message+" No."+(i+10)+"<br />" %>
  6. <%
  7. }
  8. %>
  9.  
  10. //例2
  11. <%
  12. for(int i=0; i<5; i++){
  13. out.println(message+" No."+(i+1)+"<br />");
  14. }
  15. %>

目次にもどる

(2-3-4) コメント

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

  1. //構文
  2. <%=[Your Code]%>
  3. //(例)
  4. <%--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のSpring Bootで404(Not_Found)エラーが出た時の対処方法について

  <目次> (1) JavaのSpring Bootで404(Not_Found)エラーが出た時の対処方法について  (1-1) エラー概要  (1-2) 原因  (1-3) 対処法 (1 …

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

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

JavaでJSON配列から値を抽出する方法+郵便番号検索APIのサンプルプログラムも紹介

(0)目次&概説 (1) 記事の目的  (1-1) 目的  (1-2) 前提条件 (2) JSON配列から値抽出する方法  (2-1) JSON配列のデータの構造例  (2-2) JSON配列のデータ …

TomcatでEclipseを使う際にserver.xmlを編集しても上書きされる事象の対処方法

<目次> (1) TomcatでEclipseを使う際にserver.xmlを編集しても上書きされる事象の対処方法  (1-1) 発生状況・エラーメッセージ  (1-2) 原因  (1-3) 対処法 …

JavaのJDBC接続でjava.sql.SQLRecoverableException: Closed Connectionが発生した時の解決メモ

(0)目次&概説 (1) エラー事象の概要  (1-1) エラーの発生状況  (1-2) エラーメッセージ全文 (2) エラーの原因 (3) エラーの対処方法  (3-1) エラーの修正内容  (3- …

  • English (United States)
  • 日本語
S