JSP

JSPã¨ã¯ï¼Ÿ

JavaServerPage
Webサーãƒãƒ¼ä¸Šã§å‹•çš„ã«Webページを生æˆã—クライアントã«é€ä¿¡ã™ã‚‹æŠ€è¡“。
HTML中ã«Javaプログラムを埋ã‚è¾¼ã¿ã€ãƒ—ログラムã¯ã‚µãƒ¼ãƒãƒ¼ä¸Šã§å‹•作ã™ã‚‹ã€‚
ASP(ActiveServerPage)ã®Java版
以下メリット
・処ç†çµæžœã¯HTMLãªã®ã§ãƒ–ラウザã«Java言語ã®è§£æžæ©Ÿèƒ½ã‚’設ã‘る事無ãWebアプリケーションを構築ã§ãる。
・HTMLã®å‹•的生æˆãŒå®¹æ˜“ã«ã§ãる。
・ASPãŒIIS専用ã§ã‚ã‚‹ã®ã«å¯¾ã—ã¦ã€JSPã¯å¤šãã®Webサーãƒãƒ¼ä¸Šã§å‹•作ã™ã‚‹ã€‚
・ASPãŒASP専用ã®ã‚¹ã‚¯ãƒªãƒ—ト言語ã§è¨˜è¿°ã™ã‚‹å¿…è¦ãŒã‚ã‚‹ã®ã«å¯¾ã—ã¦ã€JSPã¯Javaã§è¨˜è¿°ã§ãる。
JSPã«ãŠã‘ã‚‹JAVAプログラムã¯å®Ÿéš›ã«ã¯ã‚µãƒ¼ãƒãƒ¼å´ã®WEBアプリケーション(Tomcatç­‰)ã«ã‚ˆã‚Šã‚³ãƒ³ãƒ‘イルã•れã¦ã‚µãƒ¼ãƒ–レットã¨ã—ã¦å‹•作ã™ã‚‹ã€‚
(åˆå›žå®Ÿè¡Œæ™‚ã®ã¿ã€Servletファイル化ã®ç‚ºã«ä½™åˆ†ã«æ™‚é–“ãŒæŽ›ã‹ã‚‹)

JSPè¦ç´ 

ディレクティブ

<%@ ~ %>
JSPプログラムã®ç‰¹æ€§ã‚’定義
・サーãƒãƒ¼å´ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰æŒ‡å®š
 (çœç•¥ã—ãŸå ´åˆã¯Content-type属性ã¨åŒå€¤)
 <%@ page pageEncoding="Shift_JIS" %>
 
・Content-type
 <%@ page contentType="text/html;charset=Shift_JIS" %>
 
・クラスã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ
ãƒ»ã‚¿ã‚°ãƒ©ã‚¤ãƒ–ãƒ©ãƒªã®æŒ‡å®š
・外部ファイルã®ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰æŒ‡å®š

宣言

<%! ~ %>
JSPプログラムã§ä½¿ç”¨ã™ã‚‹å¤‰æ•°ã€ãƒ¡ã‚½ãƒƒãƒ‰ã‚’宣言
ã“ã“ã§å®šç¾©ã—ãŸå†…容(インスタンス)ã¯WEBサーãƒãƒ¼ã«å¸¸é§ã—ã€ãƒ–ラウザを閉ã˜ã¦ã‚‚残る。
ç•°ãªã‚‹ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‹ã‚‰ã®ãƒªã‚¯ã‚¨ã‚¹ãƒˆã«ã‚‚使用ã•れる。
ï¼ã‚·ãƒ³ã‚°ãƒ«ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãƒ»ãƒžãƒ«ãƒã‚¹ãƒ¬ãƒƒãƒ‰

スクリプトレット

<% ~ %>
Javaコードを記述
ã“ã“ã§å®šç¾©ã—ãŸå†…容(インスタンス)ã¯ãƒšãƒ¼ã‚¸å†…ã§ã®ã¿æœ‰åŠ¹ã€‚

å¼

<%= ~ %>
変数ã€ç®—è¡“å¼ã€æˆ»ã‚Šå€¤ã®ã‚るメソッドãªã©ã‚’記述ã—ã€å®Ÿè¡Œçµæžœã‚’出力

ELå¼

<%
 int i = 1000;
 String s = "Java";
%>
言語:${s}
コスト:${i}
シンプルã«htmlã¨Javaコードを混ãœã‚‰ã‚Œã‚‹

アクション

<jsp:~ />
JSPプログラムã§å®šç¾©ã•れãŸå‡¦ç†ã‚’実行
(外部ã§å®šç¾©ã—ãŸJavaプログラム関数を呼ã¶)
 <jsp:forward>:指定ã—ãŸãƒ•ァイルã«ãƒªã‚¯ã‚¨ã‚¹ãƒˆã‚’転é€ã™ã‚‹ã€‚
 <jsp:getProperty>:指定ã—ãŸBeanオブジェクトã®ãƒ—ロパティを表示ã™ã‚‹ã€‚
 <jsp:include>:指定ã—ãŸãƒ•ァイルã®å‡¦ç†ã‚’実行ã—ã€çµæžœã‚’表示ã™ã‚‹ã€‚
 <jsp:param>:値を渡ã™ãƒ‘ラメータを指定ã™ã‚‹ã€‚
 <jsp:plugin>:クライアントブラウザを判別ã—ã€Javaプラグインを埋ã‚込んã HTMLを生æˆã™ã‚‹ã‚¿ã‚°
 <jsp:setProperty>:指定ã—ãŸBeanオブジェクトã®ãƒ—ロパティã«å€¤ã‚’設定ã™ã‚‹ã€‚
 <jsp:useBean>:JavaBeansã‚’ã€åå‰ã‚’ã¤ã‘ã¦ç‰¹å®šã®ã‚¹ã‚³ãƒ¼ãƒ—ã«å®šç¾©ã™ã‚‹
  「JavaBeansã€å‚ç…§
拡張ライブラリをインストールã™ã‚‹äº‹ã«ã‚ˆã‚Šã€
・Strutsタグ
・JSTLタグ
ç­‰ã®ä½¿ç”¨ã‚‚å¯èƒ½ã«ãªã‚‹ã€‚

コメント

<%-- ~ --%>
JSPプログラム内ã®ã‚³ãƒ¡ãƒ³ãƒˆ
HTMLコメントやJavaコメントã®å…¥ã‚Œå­ã‚‚å¯èƒ½ã€‚
åŒã˜JSPコメントã®å…¥ã‚Œå­ã¯ä¸å¯ã€‚

出力例

<HTML>
<BODY>

 ディレクティブ:JSPプログラムã®ç‰¹æ€§ã‚’定義
 <%@ page
  language="java"
  contentType="text/html;charset=Shift_JIS"
 %>
 
 宣言:JSPプログラムã§ä½¿ç”¨ã™ã‚‹å¤‰æ•°ã€ãƒ¡ã‚½ãƒƒãƒ‰ã‚’宣言
 <%! int x = 0; %>
 
 スクリプトレット:Javaコードを記述
 <%
  for (int i = 0; i < 10; i++) {
   x++;
  }

 %>
 
 å¼ï¼šJavaプログラム変数ã®å†…容を出力
 <H3>è¨ˆç®—çµæžœï¼š<%= x %></H3>
 
</BODY>
</HTML>

JSP実行方法

アプリケーションサーãƒãƒ¼Tomcatã®å ´åˆ
アプリケーションルートã«JSPファイル(~.jsp)ã‚’é…ç½®ã™ã‚‹ã®ã¿
「Tomcat/ディレクトリ構æˆã€å‚ç…§

暗黙オブジェクト

JSP内ã§å®£è¨€ç„¡ã—ã«ä½¿ç”¨ã§ãるオブジェクト(組ã¿è¾¼ã¿ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹)

一覧

ã‚ªãƒ–ã‚¸ã‚§ã‚¯ãƒˆå æ¦‚è¦
out コンテンツを出力
<%
 String s = request.getAttribute("prm");
 out.println( "prm:" + s + "<br/>" );
%>
request リクエスト情報
response レスãƒãƒ³ã‚¹æƒ…å ±
session セッション内ã§ã®å…±æœ‰æƒ…å ±
application ユーザー間ã§ã®å…±æœ‰æƒ…å ±(コンテナå˜ä½ã«ç”Ÿæˆ)
exception JSPページ内ã§ç™ºç”Ÿã—ãŸä¾‹å¤–情報
config åˆæœŸåŒ–パラメータ情報
page JSPページãã®ã‚‚ã®
pageContext 儿š—黙オブジェクト
暗黙オブジェクトã®ã‚³ãƒ³ãƒ‘イル

JSP呼ã³å‡ºã—時ã«å®Ÿè¡Œã•れるメソッド(抜粋)
public void _jspService(HttpServletRequest request, HttpServletResponse response)
  throws java.io.IOException, ServletException {
 暗黙オブジェクトをインスタンス化
 JspFactory _jspxFactory = null;
 PageContext pageContext = null;
 HttpSession session = null;
 ServletContext application = null;
 ServletConfig config = null;
 JspWriter out = null;
 Object page = this;
 PageContext _jspx_page_context = null;
 
 _jspxFactory = JspFactory.getDefaultFactory();
 
 pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true);
 application = pageContext.getServletContext();
 config = pageContext.getServletConfig();
 session = pageContext.getSession();
 out = pageContext.getOut();
 
 response.setContentType("text/html;charset=Shift_JIS");
}

ディスパッãƒ

Dispatcher
「サーブレット ディスパッãƒã€å‚ç…§

インクルード

<jsp:include page="/test.jsp" />
<jsp:include page="/test.jsp" flush="true | false" />
<jsp:include page="/test.jsp" flush="true | false">
 <jsp:param name="prm1" value="value1"/>
 <jsp:param name="prm2" value="value2"/>
</jsp:include>

フォワード

<jsp:forward page="/test.jsp" />
<jsp:forward page="/test.jsp">
 <jsp:param name="prm1" value="value1"/>
 <jsp:param name="prm2" value="value2"/>
</jsp:forward>

JavaScriptã¸ã®Java変数埋ã‚è¾¼ã¿

<%
  String val1 = "aaa";
  String val2 = "bbb";
%>

<a href="#" onclick='<% "func(" + val1 + "," + val2 + ")" %>'>リンク</a>
↓
<a href="#" onclick='func("aaa","bbb")'>リンク</a>

Follow me!

å‰ã®è¨˜äº‹

Tomcat