SlideShare uma empresa Scribd logo
1 de 17
Baixar para ler offline
2012 LightHouse All Right Reserved.
SevletとJSP
講義の想定対象者
Javaを一通り学習して、Javaの基本的な知識を得ている者
Webの仕組ついても基礎知識をもっている者
ServletとJSP
1
2012 LightHouse All Right Reserved.
Webアプリケーションとは
Webアプリケーションとはネット通販、掲示板、オンライン
バンキングなどWebの技術を利用して構築されたアプリケー
ションのことである。
①クライアントにはブラウザを利用
②HTTPプロコルによりサーバーとの通信を行う
③データの表現はHTMLを用いる
2
2012 LightHouse All Right Reserved.
Webアプリケーションを実現するためのJavaテクノロ
ジー
Servlet/JSPとは
①サーブレットコンテナと呼ばれるミドルウェア上で動
作する
②ServletはJavaクラス
③JSPは HTMLにJavaプログラムを埋め込む形
3
2012 LightHouse All Right Reserved.
Servletとは
①HttpServletクラスを継承したjavaクラス
②HTMLの出力が可能
③配置するだけだは動かない。
デプロイメント記述子(web.xml)への登録が必要
4
2012 LightHouse All Right Reserved.
Servletの例
1 package jp.lighthouse.example;
2 import java.io.*;
3 import javax.servlet.*;
4 import javax.servlet.http.*;
5 /** Hello World!表示サーブレット **/
6 public class HelloServlet extends HttpServlet {
7 public void doGet (HttpServletRequest req, HttpServletResponse res) throws
8 ServletException, IOException {
9
10 PrintWriter out;
11 res.setContentType("text/html; charset=Shift_JIS");
12
13 out = res.getWriter();
14 out.println("<html><body>");
15 out.println("<h1>Hello World!</h1>");
16 out.println("<p>Servletのサンプル(HelloServlet.java)</p>");
17 out.println("</body></html>");
18 }
19 }
Servletのサンプルプログラム
5
2012 LightHouse All Right Reserved.
デプロイメント記述子
1 <?xml version="1.0" ?>
2 <!DOCTYPE web-app PUBLIC
3 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
4 "http://java.sun.com/dtd/web-app_2_3.dtd">
5
6 <web-app>
7 <servlet>
8 <servlet-name>HelloServlet</servlet-name>
9 <servlet-class>jp.lighthouse.example.HelloServlet</servlet-class>
10 </servlet>
11
12 <servlet-mapping>
13 <servlet-name>HelloServlet</servlet-name>
14 <url-pattern>/HelloServlet</url-pattern>
15 </servlet-mapping>
16 </web-app>
Web.xmlの記述例
6
2012 LightHouse All Right Reserved.
Servletのまとめ
①サーブレットはJavaプログラム
②マルチスレッドで動作する
③一度呼ばれるとメモリ上に常駐する。
④ServletはJavaコードとHTMLが1つのファイルになる
ため
煩雑であり、コード可読性がよくない。
7
2012 LightHouse All Right Reserved.
JSPの特徴
①HTMLベースにJavaコードを埋め込む
②拡張子は .jsp
③コンパイル不要
④Servletのように登録も不要
8
2012 LightHouse All Right Reserved.
JSP
1 <html>
2 <body>
3 <h1>Hello World!</h1>
4 <p>
5 <%
6 String hello = "Hello World!";
7 out.println(hello);
8 %>
9 </p>
10 </body>
11 </html>
JSPのサンプルプログラム
9
2012 LightHouse All Right Reserved.
JSPのディレクティブ
ディレクティブ
①pageディレクティブ
JSPプログラム全体の動作に関する定義を行う。
<%@ page contentType="text/html; charset=Windows-
31J“>
<%@ page import="java.util.*, java.io.*"
②includeディレクティブ
共通の機能などを別のJSPに記述しておき、インク
ルード
する。
<%@ include file="param.jsp" %> 10
2012 LightHouse All Right Reserved.
JSPの宣言とスクリプトレット
「<% ~ %>」で囲まれた部分をスクリプトレットと言う。
このスクリプトレット内ではif や while などjavaのコード
を記述することができる。
スクリプトレットで定義した変数は、リクエストの都度
初期化されれる。
「<% !~ %>」で囲まれた部分を宣言と言う。
変数や定数などの定義を行う。宣言部で定義した変数は
初回アクセス時に初期化されサーバ終了時まで保持され
る。
11
2012 LightHouse All Right Reserved.
JSP
1 <%@ page language="java" %>
2 <%@ page contentType="text/html; charset=UTF-8" %>
3 <%!
4 // 宣言部で定義された変数は
5 // 状態が保持される
6 int count = 0;
7 %>
8 <%
9 // カウントを 1 増やす
10 count++;
11 %>
12 <html>
13 <head>
14 <title>宣言部テスト</title>
15 </head>
16 <body><%= count %>回目のアクセスです.</body>
17 </html>
宣言を使った例
12
2012 LightHouse All Right Reserved.
JSP
1 <%@ page language="java" %>
2 <%@ page contentType="text/html; charset=UTF-8" %>
3 <%
4 // スクリプトレットで定義された変数は
5 // アクセスの度に状態が初期化される
6 int count = 0;
7 %>
8 <%
9 // カウントを 1 増やす
10 count++;
11 %>
12 <html>
13 <head>
14 <title>宣言部テスト</title>
15 </head>
16 <body><%= count %>回目のアクセスです.</body>
17 </html>p
スクリプトレットの例
13
2012 LightHouse All Right Reserved.
スコープ
スコープとはデータの有効範囲のことで, 後述の四種類ある。
変数などは適切なスコープで管理しないとメモリを圧迫したり, 予期せぬ動作を
引き起こすことがある。
①Page スコープ
有効範囲が対象の JSP 内となる. JSP 内での処理結果の一時的な保持などで
利用する.
②Requestスコープ
有効範囲が HTTP リクエスト単位となる.単一の Servletや JSPで処理が終了す
る
場合は前述の pageスコープと違いはないが, forwardなどで処理が複数に跨っ
て
いる場合に意味を持ってくる.
14
2012 LightHouse All Right Reserved.
スコープ
③Sessionスコープ
有効範囲が端末単位となる.ぺージ間で共有されるため, ユーザ認証や通販
サイトのショッピングカートなどで利用する. 本来 HTTP はステートレスな通
信であ
るが, Cookie などで 端末 を判別し, セッションを実現している.
④Applicationスコープ
有効範囲が Web アプリケーション全体に及ぶ. ユーザ間でも共有されるため,
何らかの設定値や全体で不変なマスタデータのキャッシュなどを保持するた
めに
利用する.
15
2012 LightHouse All Right Reserved.
開発の実際は
実際の開発は、どのように行っているかというと。。。
ServletとJSPの組わせにより開発している。
・処理の振り分け、ロジックの実行はサーブレットに任
せる
・画面表示部分はJSPに任せる
これらはフレームワークと呼ばれるミドルウェアを利用
することで簡単に実現できています。
フレームワークの例 Struts, SAStruts,Spring, Slim
16
2012 LightHouse All Right Reserved.
終わり
END
17

Mais conteúdo relacionado

Semelhante a Sevletとjsp

Html5, Web Applications 2
Html5, Web Applications 2Html5, Web Applications 2
Html5, Web Applications 2totty jp
 
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)JPCERT Coordination Center
 
Beginning Java EE 6 勉強会(4) #bje_study
Beginning Java EE 6 勉強会(4) #bje_studyBeginning Java EE 6 勉強会(4) #bje_study
Beginning Java EE 6 勉強会(4) #bje_studyGeorge Okada
 
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」Hiroyuki Ohnaka
 
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発 夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発 Takakiyo Tanaka
 
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)オラクルエンジニア通信
 
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験AdvancedTechNight
 
ついに始まるJava EE 7時代のアプリケーション開発
ついに始まるJava EE 7時代のアプリケーション開発ついに始まるJava EE 7時代のアプリケーション開発
ついに始まるJava EE 7時代のアプリケーション開発Takakiyo Tanaka
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Tokuhiro Matsuno
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!Shinpei Ohtani
 
[JavaOne Tokyo 2012] JavaFX and Web Integration
[JavaOne Tokyo 2012] JavaFX and Web Integration[JavaOne Tokyo 2012] JavaFX and Web Integration
[JavaOne Tokyo 2012] JavaFX and Web IntegrationKazuchika Sekiya
 

Semelhante a Sevletとjsp (20)

SimpleModeler
SimpleModelerSimpleModeler
SimpleModeler
 
Html5, Web Applications 2
Html5, Web Applications 2Html5, Web Applications 2
Html5, Web Applications 2
 
20200304 vuejs
20200304 vuejs20200304 vuejs
20200304 vuejs
 
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
 
Backbone.js入門
Backbone.js入門Backbone.js入門
Backbone.js入門
 
Beginning Java EE 6 勉強会(4) #bje_study
Beginning Java EE 6 勉強会(4) #bje_studyBeginning Java EE 6 勉強会(4) #bje_study
Beginning Java EE 6 勉強会(4) #bje_study
 
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
 
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発 夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
夏サミ2014 クラウドとCIツールで変わるエンタープライズJava開発
 
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
 
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
 
勉強会資料①
勉強会資料①勉強会資料①
勉強会資料①
 
ついに始まるJava EE 7時代のアプリケーション開発
ついに始まるJava EE 7時代のアプリケーション開発ついに始まるJava EE 7時代のアプリケーション開発
ついに始まるJava EE 7時代のアプリケーション開発
 
Sendai.html5#2
Sendai.html5#2Sendai.html5#2
Sendai.html5#2
 
Vue入門
Vue入門Vue入門
Vue入門
 
Clrh 110716 wcfwf
Clrh 110716 wcfwfClrh 110716 wcfwf
Clrh 110716 wcfwf
 
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
 
Using Windows Azure
Using Windows AzureUsing Windows Azure
Using Windows Azure
 
Struts2を始めよう!
Struts2を始めよう!Struts2を始めよう!
Struts2を始めよう!
 
110409 slintky lt
110409 slintky lt110409 slintky lt
110409 slintky lt
 
[JavaOne Tokyo 2012] JavaFX and Web Integration
[JavaOne Tokyo 2012] JavaFX and Web Integration[JavaOne Tokyo 2012] JavaFX and Web Integration
[JavaOne Tokyo 2012] JavaFX and Web Integration
 

Sevletとjsp

  • 1. 2012 LightHouse All Right Reserved. SevletとJSP 講義の想定対象者 Javaを一通り学習して、Javaの基本的な知識を得ている者 Webの仕組ついても基礎知識をもっている者 ServletとJSP 1
  • 2. 2012 LightHouse All Right Reserved. Webアプリケーションとは Webアプリケーションとはネット通販、掲示板、オンライン バンキングなどWebの技術を利用して構築されたアプリケー ションのことである。 ①クライアントにはブラウザを利用 ②HTTPプロコルによりサーバーとの通信を行う ③データの表現はHTMLを用いる 2
  • 3. 2012 LightHouse All Right Reserved. Webアプリケーションを実現するためのJavaテクノロ ジー Servlet/JSPとは ①サーブレットコンテナと呼ばれるミドルウェア上で動 作する ②ServletはJavaクラス ③JSPは HTMLにJavaプログラムを埋め込む形 3
  • 4. 2012 LightHouse All Right Reserved. Servletとは ①HttpServletクラスを継承したjavaクラス ②HTMLの出力が可能 ③配置するだけだは動かない。 デプロイメント記述子(web.xml)への登録が必要 4
  • 5. 2012 LightHouse All Right Reserved. Servletの例 1 package jp.lighthouse.example; 2 import java.io.*; 3 import javax.servlet.*; 4 import javax.servlet.http.*; 5 /** Hello World!表示サーブレット **/ 6 public class HelloServlet extends HttpServlet { 7 public void doGet (HttpServletRequest req, HttpServletResponse res) throws 8 ServletException, IOException { 9 10 PrintWriter out; 11 res.setContentType("text/html; charset=Shift_JIS"); 12 13 out = res.getWriter(); 14 out.println("<html><body>"); 15 out.println("<h1>Hello World!</h1>"); 16 out.println("<p>Servletのサンプル(HelloServlet.java)</p>"); 17 out.println("</body></html>"); 18 } 19 } Servletのサンプルプログラム 5
  • 6. 2012 LightHouse All Right Reserved. デプロイメント記述子 1 <?xml version="1.0" ?> 2 <!DOCTYPE web-app PUBLIC 3 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 4 "http://java.sun.com/dtd/web-app_2_3.dtd"> 5 6 <web-app> 7 <servlet> 8 <servlet-name>HelloServlet</servlet-name> 9 <servlet-class>jp.lighthouse.example.HelloServlet</servlet-class> 10 </servlet> 11 12 <servlet-mapping> 13 <servlet-name>HelloServlet</servlet-name> 14 <url-pattern>/HelloServlet</url-pattern> 15 </servlet-mapping> 16 </web-app> Web.xmlの記述例 6
  • 7. 2012 LightHouse All Right Reserved. Servletのまとめ ①サーブレットはJavaプログラム ②マルチスレッドで動作する ③一度呼ばれるとメモリ上に常駐する。 ④ServletはJavaコードとHTMLが1つのファイルになる ため 煩雑であり、コード可読性がよくない。 7
  • 8. 2012 LightHouse All Right Reserved. JSPの特徴 ①HTMLベースにJavaコードを埋め込む ②拡張子は .jsp ③コンパイル不要 ④Servletのように登録も不要 8
  • 9. 2012 LightHouse All Right Reserved. JSP 1 <html> 2 <body> 3 <h1>Hello World!</h1> 4 <p> 5 <% 6 String hello = "Hello World!"; 7 out.println(hello); 8 %> 9 </p> 10 </body> 11 </html> JSPのサンプルプログラム 9
  • 10. 2012 LightHouse All Right Reserved. JSPのディレクティブ ディレクティブ ①pageディレクティブ JSPプログラム全体の動作に関する定義を行う。 <%@ page contentType="text/html; charset=Windows- 31J“> <%@ page import="java.util.*, java.io.*" ②includeディレクティブ 共通の機能などを別のJSPに記述しておき、インク ルード する。 <%@ include file="param.jsp" %> 10
  • 11. 2012 LightHouse All Right Reserved. JSPの宣言とスクリプトレット 「<% ~ %>」で囲まれた部分をスクリプトレットと言う。 このスクリプトレット内ではif や while などjavaのコード を記述することができる。 スクリプトレットで定義した変数は、リクエストの都度 初期化されれる。 「<% !~ %>」で囲まれた部分を宣言と言う。 変数や定数などの定義を行う。宣言部で定義した変数は 初回アクセス時に初期化されサーバ終了時まで保持され る。 11
  • 12. 2012 LightHouse All Right Reserved. JSP 1 <%@ page language="java" %> 2 <%@ page contentType="text/html; charset=UTF-8" %> 3 <%! 4 // 宣言部で定義された変数は 5 // 状態が保持される 6 int count = 0; 7 %> 8 <% 9 // カウントを 1 増やす 10 count++; 11 %> 12 <html> 13 <head> 14 <title>宣言部テスト</title> 15 </head> 16 <body><%= count %>回目のアクセスです.</body> 17 </html> 宣言を使った例 12
  • 13. 2012 LightHouse All Right Reserved. JSP 1 <%@ page language="java" %> 2 <%@ page contentType="text/html; charset=UTF-8" %> 3 <% 4 // スクリプトレットで定義された変数は 5 // アクセスの度に状態が初期化される 6 int count = 0; 7 %> 8 <% 9 // カウントを 1 増やす 10 count++; 11 %> 12 <html> 13 <head> 14 <title>宣言部テスト</title> 15 </head> 16 <body><%= count %>回目のアクセスです.</body> 17 </html>p スクリプトレットの例 13
  • 14. 2012 LightHouse All Right Reserved. スコープ スコープとはデータの有効範囲のことで, 後述の四種類ある。 変数などは適切なスコープで管理しないとメモリを圧迫したり, 予期せぬ動作を 引き起こすことがある。 ①Page スコープ 有効範囲が対象の JSP 内となる. JSP 内での処理結果の一時的な保持などで 利用する. ②Requestスコープ 有効範囲が HTTP リクエスト単位となる.単一の Servletや JSPで処理が終了す る 場合は前述の pageスコープと違いはないが, forwardなどで処理が複数に跨っ て いる場合に意味を持ってくる. 14
  • 15. 2012 LightHouse All Right Reserved. スコープ ③Sessionスコープ 有効範囲が端末単位となる.ぺージ間で共有されるため, ユーザ認証や通販 サイトのショッピングカートなどで利用する. 本来 HTTP はステートレスな通 信であ るが, Cookie などで 端末 を判別し, セッションを実現している. ④Applicationスコープ 有効範囲が Web アプリケーション全体に及ぶ. ユーザ間でも共有されるため, 何らかの設定値や全体で不変なマスタデータのキャッシュなどを保持するた めに 利用する. 15
  • 16. 2012 LightHouse All Right Reserved. 開発の実際は 実際の開発は、どのように行っているかというと。。。 ServletとJSPの組わせにより開発している。 ・処理の振り分け、ロジックの実行はサーブレットに任 せる ・画面表示部分はJSPに任せる これらはフレームワークと呼ばれるミドルウェアを利用 することで簡単に実現できています。 フレームワークの例 Struts, SAStruts,Spring, Slim 16
  • 17. 2012 LightHouse All Right Reserved. 終わり END 17