第6章 インターネットアプリケー ション 6.1 インターネットアプリケーション 6.2Java によるネットワーク処理 6.3 電子メール 6.4Web アプリケーション 6.5 チャットアプリケーション.

Slides:



Advertisements
Similar presentations
ネットワークプログ ラミング論 平成27年 11 月 1 6日 森田 彦. 【基礎課題 6-1 】の解答 ① サーブレットを記述して保管するとコン パイルが自動的に行われる。 ② サーブレットの記述後、開発者がコンパ イル命令を実行しなければならない。 ③ プロジェクト名が Web アプリケーション.
Advertisements

Web アプリケーション開発入門 大岩研究会 今野隆平 2002 年 5 月 9 日 Introduction to Web Application Development.
Servlet にメッセージを送ろ う! 杉浦学・山下純一・北川敦規 今日の目標です サーブレットとブラウザのメッセージ 送受信 ブラウザでサーブレットにメッセージを送信で きる サーブレットでメッセージを受信できる 実習で実際にアプリを作れるようにな る.
情報アプリケーション1 2006 年 10 月 12 日 第四回資料 担当 重定 如彦. 目次 データの送信とフォーム クイズ CGI 複数のパーツのデータの分割方法 配列変数.
1 安全性の高いセッション管理方 式 の Servlet への導入 東京工業大学 理学部 千葉研究室所属 99-2270-6 松沼 正浩.
1 PHP プログラムの実行(まと め) 担当 岡村耕二 月曜日 2限 平成 22 年度 情報科学 III (理系コア科目・2年生) 本資料の一部は、堀良彰准教授、天野浩文准教授、菅沼明 准教授等による以前の講義資料をもとにしています。
Servlet 矢口 洋介 清水 麗雄. 準備  Java フォルダに入ってから mkdir Servlet ln – s ~/public_html/Servlet.  フォルダの移動 cd public_html/Servlet/WEB-INF/classes/*.  ファイルのコピー cp.
インターネットのアプリケーション 情報ネットワーク 後藤(2) 教科書:  第8章 アプリケーション プロトコル pp
WWW のおはなし 神戸大学理学部地球惑星科学科 4 回生 佐伯 拓郎 (地球および惑星大気科学研究室) 藤田 哲也 (宇宙物理学研究室)
神戸大学理学部地球惑星科学科 4回生 柏本 光司
情報基礎A 情報科学研究科 徳山 豪.
Webサービスに関する基本用語 Masatoshi Ohishi / NAOJ & Sokendai
Webアプリケーションの 通信メカニズム WEBアプリ研究プロジェクト 第2回.
JPAを利用した RESTful Webサービスの開発
第2章 ネットサービスとその仕組み(前編) [近代科学社刊]
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Applet 岡部 祐典 鈴木 敬幸.
インターネットの通信メカニズム 概要 WEBアプリ研究会 2回目.
エンタープライズアプリケーション II 第10回 / 2006年7月23日
Servlet J2EE I 第8回 /
アプレット (Applet)について.
Servlet入門(2) 入力フォームをつかったWebアプリ
ネットワークプログラミング論 平成27年10月12日 森田 彦.
EpWWWサーバ 北海道大学 理学院 宇宙理学専攻 M1 古田裕規.
WWW (=World Wide Web)とは
JavaServlet&JSP入門 01K0018 中村太一.
独習Java ・ 12.1  インターネットアドレス ・ 12.2  サーバーソケットとソケット  12月 19日    小笠原 一恵.
「コンピュータと情報システム」 07章 インターネットとセキュリティ
Webアプリケーション.
佐賀大学 理工学部知能情報システム学科 講師 大月 美佳
Web App Semi 2008 #1 Web App Semi 2008 #1.
担当教官:大月 美佳(佐賀大学) 2001年度 総合科目
HTTPプロトコルとJSP (1) データベース論 第3回.
JSFによるWebアプリケーション開発 第6回
HTTPプロトコル J2EE I 第7回 /
Javaプログラムの実行まで バイト Javaの コード 実行 ソースコード Java ファイル名 ファイル名 abc.java
情報コミュニケーション入門 総合実習(1) 基礎知識のポイント(2)
Servlet入門(2) 入力フォームをつかったWebアプリ
ネットワークプログラミング論 平成28年10月17日 森田 彦.
データベース設計 第9回 Webインタフェースの作成(1)
第8章 Web技術とセキュリティ   岡本 好未.
ネットワークプログラミング論 平成28年11月21日 森田 彦.
HTTPとHTML 技術領域専攻 3回 中川 晃.
情報コミュニケーション入門b 第10回 Web入門(1)
情報コミュニケーション入門b 第10回 Web入門(1)
TomcatによるWebアプリケーション開発入門
ネットワークプログラミング論 平成28年11月7日 森田 彦.
Javaによる Webアプリケーション入門 第6回
ネットワークプログラミング論 平成28年10月31日 森田 彦.
制作技術ー3 双方向通信 : CGIシステムと環境変数
情報コミュニケーション入門e 第11回 Part2 Web入門(1)
インターネット利用法実習 経営工学基礎演習a(第3週).
Javaによる Webアプリケーション入門 第2回
Webプロキシ HTTP1.0 ヒント CS-B3 ネットワークプログラミング  &情報科学科実験I.
ネットワークプログラミング (3回目) 05A1302 円田 優輝.
Javaによる Webアプリケーション入門 第11回
コンピュータ プレゼンテーション.
Servlet ソフトウェア特論 第7回.
Servlet J2EE I (データベース論) 第12回 /
Servlet データベース論 第6回.
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ―
JSPの基本 データベース論 第2回.
Jakarta Struts (1) ソフトウェア特論 第10回.
JSPの基本 J2EE I (データベース論) 第8回 /
第2回 Webサーバ.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
第6章 インターネットアプリケーション 6.1 インターネットアプリケーション 6.2 Javaによるネットワーク処理 6.3 電子メール
第6章 インターネットアプリケーション 6.1 インターネットアプリケーション 6.2 Javaによるネットワーク処理 6.3 電子メール
HTTPプロトコルの詳細 M1 峯 肇史.
Presentation transcript:

第6章 インターネットアプリケー ション 6.1 インターネットアプリケーション 6.2Java によるネットワーク処理 6.3 電子メール 6.4Web アプリケーション 6.5 チャットアプリケーション

6.4Webアプリケーション 6.4.1 WWW ■ WWW ( World Wide Web : 「 世界中に張りめぐらされた蜘蛛の巣」の意味) ・本来は,研究論文の公開・共有を目的としたもの。 ・商用に使えない制限が外れたため,認証技術や暗号化技術の導入と共にビジ ネス用としても使えるようになった。

(1)ハイパーテキスト hyper text リンク( link )と呼ばれる機構を導入することで, 文書中から別の文書への接続を可能にすることで, 非連続的な文書の閲覧を可能にしたもの。 インターネット上で実現したもの=WWW 記述言語 : HTML ( Hyper Text Markup Language )

(2)WWWクライアント ■ WWW サーバから受取ったレスポンスデータを表示する機能。 ■ 「ブラウザ( browser )」と呼ばれる。 [例] NCSA ( National Center for Supercomputing Applications )の Mosaic Internet Explorer Netscape Navigator

(3)WWWサーバ ■ サーバ側に保管されている情報を WWW クライアントに提供 するシステム [例] Apache セキュリティ上の配慮から,直接インターネットに接続するの ではなく,クライアントからのリクエストを外部のインター ネット上のサーバに送る方式も採用されるようになってきた。 代理サーバ(プロキシサーバ: proxy server )と呼ばれる。

(4)HTML ■ SGML( Standard Generalized Markup Language )を単純 化して,タグ方式で処理軽量化を図った言語 書式やリンク指定,組込み画像等をタグで指定する。

6.4.2 HTTP Hyper Text Transfer Protocol ■ Web ページを閲覧する際のプロトコル( Well known port : 80 ) ■ アクセスする際は, URL ( Uniform Resource Locator )を指定する。 ■ クライアントからの接続した状態を保持するための機構を「クッキー」という。 ファイルのパス 名 [URLの書式構成] ドメイン名 プロトコル( http , https )

(1)リクエストとレスポンス ■ クライアントからはメソッドと呼ばれる HTTP コマンドで指定し, Web サー バからレスポンスが返却される。 リクエストメッセー ジ リクエスト行 リクエストヘッダ 空行(CR+LF) リクエストボディ レスポンストメッ セージ ステータス行 レスポンスヘッダ 空行(CR+LF) レスポンスボディ リクエスト行例: GET /index.html HTTP/1.0 ステータス行例: HTTP/ OK

代表的なメソッドとステータスコード HTTP1.1 の代表的なメソッド メソッド 機 能 GETURL で指定した情報を取り出す。 POST フォームに入力したデータを送信するなど,サーバにデータを送信する。 HEAD ファイルの最終更新日など, URL で指定したリソースのヘッダ情報を取得する。 PUTURL で指定したサーバ上のファイルを置き換える(アップロードなど)。 DELETEURL で指定したサーバ上のファイルを削除する。 HTTP1.1 のステータスコード コード 意 味 1XX 処理の経過状況等の通知 2XX 正常終了 3XX リダイレクト(何らかの別のアクションが必要) 4XX クライアント側のエラー 5XX サーバ側のエラー

ヘッダ情報 HTTP1.1 の代表的なリクエストヘッダとレスポンスヘッダ ヘッダの種類 書式 Accept: レスポンスで受取り可能なメディアのタイプ リクエストヘッダ Host: ホスト名 Referrer: 要求元の URL User-Agent:Web ブラウザの種類 Server:Web サーバの種類 レスポンスヘッダ Date: メッセージの生成日時 Location: リダイレクトする URL Cache-Control: キャッシュの指示 共通ヘッダ Content-Type: メディアタイプ Content-Length: ボディ部の長さ ヘッダ情報を読み込むことで,サーバ側,クライアン ト側でのバージョン等に応じた処理が可能になる

6.4.3 ServletによるHTMLフォーム処理 (1)クライアントサイドとサーバサイドの技術 Web アプリケーションは以下のように分類できる。 ■ クライアントサイドのアプリケーション Web ブラウザ側で実行されるプログラム。 [例] Java アプレット, JavaScript ■ サーバサイドのアプリケーション サーバ側で実行されるプログラム。 [例] Perl/CGI , Active Server Pages, Servlet, JSP [用語] Perl : Practical Extraction and Report CGI : Common Gateway Interface JSP : JavaScript Pages

(2) HTML によるフォーム処理 Web ページでユーザ入力を受け付ける部分をフォーム( form )という。 フォー ム テキストボック ス チェックボッ クス ラジオボタン 送信ボタン Web サーバ フォームに入力 されたデータ データ処理と HTML ページ の生成 生成された HTMLページ Web クライアント ① GET リクエスト ② POST リクエスト サーバに転送するため記述

HTML 定義例 POST リクエストの例 問合せ : 名前 学年 情報工学科 1 年 情報工学科 2 年 情報工学科 3 年 情報工学科 4 年 質問内容

(3)Servetによるデータ処理 A. その前にCGI( Common Gateway Interface の仕組み) Web ブラウザからのリクエストに対応する処理 を 外部プログラムを動かすことで実現する仕組み Web サーバ 外部プログラムの起動 Contents-type: text/plain Hellow CGI ! 外部プログラム ( perl 処理系) #! c:/perl/bin/perl (空白行) print "Contents-type: text/plain\n\n" print "Hellow CGI !" c:/perl/bin/perl 標準出力 Web クライアントへの出力 Web ブラウザ Hello CGI ! CGI ヘッダの 「 Contents-type: text/plain 」 が取り除かれて出力される (通常 HTML の形式で出力) 標準入力

リクエストメソッド POST と GET のデータ ■ Get の場合 環境変数 QUERY_STRING ■ Put の場合 標準入力からデータ受け取り (文字の長さ:環境変数 CONTENT_LRNGTH ) if($ENV{'REQUEST_METHOD'} eq 'POST'){ read(STDIN,$query, $ENV{'CONTENTS_LENGTH'}); } else { $query = $ENV{'CONTENTS_LENGTH'}; } Perl によるフォームデータ取得の例

CGI から受取るデータの形式 ①コントロール名と入力内容が「 = 」を挟んで1組となり, 「 & 」でつながっている。 ②スペースは「 + 」に変換されている。 ③その他の文字は,先頭に % が付いた 2 桁の 16 進数に変換されている。 r+condition&msg=Haw+are+you%3F%0D%0AThis+is+Yutaka. [取得データの例] name=yutaka subject=About your condition msg= Haw are you?[ 改行] This+is+Yutaka. [意 味]

B. CGIを利用しない方法 ① Active Server Pages ② Servlet ③ JavaServer Pages ここでは Servlet について説明する

HttpServlet クラスを拡張する ① HttpServlet クラスは, HTTP を使ったサーブレットに 必要な機能を実装するクラス ② doGet メソッド( Web の method が GET のとき) ③ doPost メソッド( Web の method が POST のとき) ■ protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException HTTP の GET リクエストを処理するとき,このメソッドを実装する。 ■ protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException HTTP の GET リクエストを処理するとき,このメソッドを実装する。 引数に使われている HttpServletRequest クラスは, ServletRequest を拡張した クラスであり, HTTP 用のサーブレットを構築するための機能が提供されている。

HttpServletRequest クラスの代表的なメソッド(その1/3) ① public String getParameter(String name) 親インターフェースの ServletRequest で定義されている。 リクエストパラメータを取得する。 public class Sample extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { String val = req.getParameter("name"); } [ 例]

HttpServletRequest クラスの代表的なメソッド(その2/3) ② public String getParameterValues(String name) 親インターフェースの ServletRequest で定義されている。 指定された名前で指定できるリクエストパラメータすべてを取得する。 public class Sample extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { String vals[] = req.getParameterValues("name"); if(vals != nulls) for(int i=0; i<vals.length; i++) out.println(vals[i]); } [ 例]

HttpServletRequest クラスの代表的なメソッド(その3/3) ② public Enumeration getParameterNames() 親インターフェースの ServletRequest で定義されている。 リクエストに含まれているパラメータ名を String オブジェクトで構成される Enumeration オブジェクトを返す。 public class Sample extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { Enumeration names = req.getParameterNames(); while (names.hasMoreElements()) out.println((String)names.nextElement()); } [ 例] Enumeration :数え上げ型

(4)文字エンコーディングの指定 エンコーディング : コンピュータで扱う文字を整数値に変換する方式 ① ASCII : 1バイト文字用 ② ISO : 1バイト文字用 ③ EUC ( Extended Unix Code ): 2バイト文字用 ④ Shift JIS : 2バイト文字用 Servlet から送信される HTML コードのエンコーディング方式( ISO )が 表示のエンコーディング方式と異なる [ Servlet のコード実行で, Web ブラウザに送信されたデータが文字化けをする とき]

ISO のコードとして扱われるのを shift JIS として扱う例(その 1/2) import javax.servlet.http.*; import javax.servlet.*; import java.io.*; import java.util.*; public class Sample extends HttpServlet { private String paramName[] = { “ 名前 ”, “ ”, “ 学年 ”, “ 内容 "}; public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { PrintWriter pw = res.getWriter(); res.setContentsType("text/html; charset=Shift_JIS"); pw.write(" Servlet Application Sample "); pw.write(" "); //HTML フォームで送信されたデータの Shift_JIS への変換 req.setCharacterEncoding("Shift_JIS") Enumeration em = req.getParameterNames(); -----(続く) -----

ISO のコードとして扱われるのを shift JIS として扱う例(その 2/2) -----(前シートから続く) ----- //POST されたパラメータと値の格納 Hashtable ht = new Hashtable(); while (em.hasMoreElements()){ String param = "param" + String.valueOf(j+1); String value = req.getParameterValues(name)[0]; ht.put(name,value) } pw.write(" 送信データの確認 : "); for(int j=0;j<paraName.length; j++) { String param = "param" + String.valueOf(j+1); if(j==2) { pw.write(paraName[j] + ": " + " 情報工学科 " + ht.get(param) + " 年 "); } else pw.write(paraName[j] + ": " + ht.get(param)+" "); } pw.write(" "); pw.close(); }