Servlet にメッセージを送ろ う! 杉浦学・山下純一・北川敦規 今日の目標です サーブレットとブラウザのメッセージ 送受信 ブラウザでサーブレットにメッセージを送信で きる サーブレットでメッセージを受信できる 実習で実際にアプリを作れるようにな る.

Slides:



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

ネットワークプログ ラミング論 平成27年 11 月 1 6日 森田 彦. 【基礎課題 6-1 】の解答 ① サーブレットを記述して保管するとコン パイルが自動的に行われる。 ② サーブレットの記述後、開発者がコンパ イル命令を実行しなければならない。 ③ プロジェクト名が Web アプリケーション.
Web アプリケーション開発入門 大岩研究会 今野隆平 2002 年 5 月 9 日 Introduction to Web Application Development.
情報アプリケーション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.
情報基礎A 情報科学研究科 徳山 豪.
JPAを利用した RESTful Webサービスの開発
Struts1.xの脆弱性(CVE ) に対するSDEの対処:推奨タイプ (サンプルソースコードの公開)
第2章 ネットサービスとその仕組み(前編) [近代科学社刊]
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
JSFによるWebアプリケーション開発 第9回
JSFによるWebアプリケーション開発 第11回
Servlet J2EE I 第8回 /
アプレット (Applet)について.
Servlet入門(2) 入力フォームをつかったWebアプリ
ネットワークプログラミング論 平成27年10月12日 森田 彦.
JavaServlet&JSP入門 01K0018 中村太一.
独習Java ・ 10.6  Hashtableクラス ・ 10.7  String Tokenizerクラス  12月12日    小笠原 一恵.
第4回 個人の動画配信補足のためのWeb構築
Bottle/Pythonによる Webアプリ入門
卒研:データベースチーム 第4回 DOMを使った処理
12月11日(土) 13:00~15:00 長崎大学教育学部 全炳徳 久方純
HTTPプロトコルとJSP (1) データベース論 第3回.
JQueryでAjax 藤田@ジャストプレイヤー ※参考しまくり文献 jQuery日本語リファレンス.
JSFによるWebアプリケーション開発 第6回
HTTPプロトコル J2EE I 第7回 /
エンタープライズアプリケーション II 第7回 / 2006年7月9日
Javaプログラムの実行まで バイト Javaの コード 実行 ソースコード Java ファイル名 ファイル名 abc.java
Servlet入門(2) 入力フォームをつかったWebアプリ
ネットワークプログラミング論 平成28年10月17日 森田 彦.
ウェブデザイン演習 第一回 オリエンテーション.
利用者を識別するWebアプリ を作ろう! 2004年6月10日 武田林太郎.
データベースとJavaをつなげよう! ~JDBC~
プログラミング演習3 第2回 GUIの復習.
第8章 Web技術とセキュリティ   岡本 好未.
2003年度 データベース論 安藤 友晴.
ネットワークプログラミング論 平成28年11月21日 森田 彦.
TomcatによるWebアプリケーション開発入門
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
総合政策学部4年 伊藤玲子 総合政策学部4年 阿部雅美 +CreWな皆様
理学部 情報科学科 指導教官 千葉 滋 助教授 学籍番号 03_03686 内河 綾
ネットワークプログラミング論 平成28年11月7日 森田 彦.
Javaによる Webアプリケーション入門 第6回
ネットワークプログラミング論 平成28年10月31日 森田 彦.
プログラミング演習3 第2回 GUIの復習.
WEBアプリケーションの開発 2002年度春学期 大岩研究会2.
制作技術ー3 双方向通信 : CGIシステムと環境変数
Jakarta Struts (2) ソフトウェア特論 第11回.
Webサーバとクライアント 接続要求 GET ・・ 接続状態 HTTP ・・ Webサーバ
Javaによる Webアプリケーション入門 第2回
情報アプリケーション1 2006年 10月 19日 第四回資料 担当 重定 如彦 .
Javaによる Webアプリケーション入門 第11回
Servlet ソフトウェア特論 第7回.
Servlet J2EE I (データベース論) 第12回 /
Servlet データベース論 第6回.
HP作成 そろそろまとめ編 担当:TAの人.
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
C#プログラミング実習 第3回.
Webページに動きを持たせるJavascript言語について 例題のプログラムを通して体験的に理解することとします。
WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ―
Action Method の実装 J2EE II 第9回 2004年12月2日.
Jakarta Struts (1) ソフトウェア特論 第10回.
JSPの基本 J2EE I (データベース論) 第8回 /
データベース第3回目 意味ごとにテーブルを分ける
JAVA入門⑥ クラスとインスタンス.
第6章 インターネットアプリケーション 6.1 インターネットアプリケーション 6.2 Javaによるネットワーク処理 6.3 電子メール
JSFによるWebアプリケーション開発 第7回
第6章 インターネットアプリケーション 6.1 インターネットアプリケーション 6.2 Javaによるネットワーク処理 6.3 電子メール
Presentation transcript:

Servlet にメッセージを送ろ う! 杉浦学・山下純一・北川敦規

今日の目標です サーブレットとブラウザのメッセージ 送受信 ブラウザでサーブレットにメッセージを送信で きる サーブレットでメッセージを受信できる 実習で実際にアプリを作れるようにな る

Web アプリケーションとは? 先週の復習です! Q: Web アプリケーションってなんでし た? A: Web アプリは人を幸せにするコンセプトを持っ ている 単なる動的なページは Web アプリではない Ex.) 掲示板なら・・・・ コンセプトがなければ → Web アプリとは言えな い もしコンセプトなけれ ば 人は幸せにならない

掲示板にコンセプトをつける Q:「掲示板」にコンセプトをつけると したら、どんなものが考えられます か? A:

題材:奥様支援 Web アプリケーショ ン 主婦の日々の料理をバラエティー豊かに オリジナル料理に注目 「オリジナルレシピ投稿掲示板」 みんなにこんな美味いオリジナル料理 を食べてもらいたい(投稿) もっと色んなオリジナルレシピが知り たいたい(閲覧)

利用シナリオ デモってみましょう 投稿者:末広 涼子 料理名:スペシャルカレー・ブチキレ風 味 作り方:①ルーに WASABI を入れます ②ご飯は無洗米でいいです ③具はBSE

メッセージの送受信モデル クライアント (末広涼子) サーバー GET toukou.html toukou.html POST UketoriServlet 投稿者 =" 末広涼子 " ・・・ UketoriServlet.class スペ シャルカレー Web ブラウザ

Get? Post? Q:先ほどの図でGetと Post が出てき ました。 役割の違うところはなんでしょう A: Get HTML をもらうための要求 Post メッセージを送って、処理 した結果 の HTML をもらうた めの要求

メッセージ送信編 入力から送信まで クライアント (末広涼子) サーバー toukou.html POST UketoriServlet 投稿者 = 末広涼子・・・ Web ブラウザ GET toukou.html

メッセージを発信する仕組み ~ お名前: 料理名: 作り方

フォームのはじめ メッセージを入力する為の部品を書く それらを送信する為の部品を書く action ・・・ 送信先

入力の為の部品 name ・・・各部品固有の名前 type ・・・ 部品の種類

送信の為の部品

送信される形式 Post で送った Http リクエストは、 な形で送られました。めでたし、めでたし。 POST../servlet/UketoriServlet HTTP/1.1 Length: 54 contributor= 末広 涼子& title =スペシャルカレー・ブチキレ風 味 &recipe= ①ルーに wasabi を入れます②ご飯は無洗米でいいです ③具はBSE ・・・・

メッセージ送信編 終 了

メッセージ受信編 受信 から返答まで クライアント (末広涼子) サーバー UketoriServlet.class スペ シャルカレー Web ブラウザ

送られてきたメッセージ contributor= 末広 涼子& title =スペシャルカレー・ブチキレ風 味 &recipe= ①ルーに wasabi を入れます②ご飯は無洗米でいいです ③具はBSE・・・・ すると・・・アプリケーションサーバー (TomCat)が「ハッシュテーブ ル」にマッピングしてくれます

ハッシュテーブル? 文字を鍵( Key) として 値( Value )を取得することができる 今回の場合・・・ Contributor = 末広 涼子 Title = スペシャルカレー・ブチキレ風味 Recipe = ①ルーに wasabi を入れます ②ご飯は無洗米でいいです ③具はBSE・・・ ・ Key Value

Servlet の2つの部分 UketoriServlet.class 受け取りプロ グラム HTML 生成 プログラム ブラウザーへ サーバーから (ハッシュテーブ ル)

p ublic class UketoriServlet extends HttpServlet { /** doPost() メソッドは、 POST リクエストがブラウザー からプログラムに発信されたときに呼び出されるメソッド **/ public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletExceptio { /** 送信されたメッセージが格納されたハッシュテーブルから、 キーを指定してバリューをそれぞれの変数に格納する **/ String contributor = request.getParameter("contributor"); String title = request.getParameter("title"); String recipe = request.getParameter("recipe"); contributor = transferUnicode(contributor); title = transferUnicode(title); recipe = transferUnicode(recipe); //***** ここまででメッセージを受信できた ***** //***** ここからがメッセージを表示する為の部分 ***** response.setContentType("text/html;charset=Shift_JIS"); PrintWriter out = response.getWriter(); out.println(" "); // 投稿者と現在の日付を出力する。 out.print(" "+contributor+" さんオリジナル "); out.print("( 投稿時刻: "+ new java.util.Date() + ") "); // 料理名を出力する。 out.println(" 「 "+title+" 」のレシピ "); // 作り方を出力する out.println(recipe+" "); out.println(" "); //***** ここまででメッセージを表示できた ***** } }

受け取りプログラム 送信されたメッセージが格納されたハッシュテーブルから、 キーを指定してバリューをそれぞれの変数に格納します String contributor = request.getParameter("contributor"); // キー contributor のバリューを取得して文字列 contributor に入 れる String title = request.getParameter("title"); // キー title のバリューを取得して文字列 title に入れる String recipe = request.getParameter("recipe"); // キー recipe のバリューを取得して文字列 recipe に入れる

投稿者の例でいうと・・・ String contributor=request.getParameter("contributor") ; 文字列 contributor Contributor = 末広 涼子 Key Value 末広 涼子 文字列 contributor

受け取りプログラム1 (文字コードの変換) contributor = transferUnicode(contributor); title = transferUnicode(title); recipe = transferUnicode(recipe); 中略 private String transferUnicode(String s) throws UnsupportedEncodingException{ return new String(s.getBytes("8859_1"),"JISAutoDetect"); } このままでは正常な文字列ではないので 文字化けするので、 Unicode に変換します

表示プログラム準備 (出力を日本語形式に) 出力を日本語形式に指定して、ブラウ ザでの文字化けを解消する。 response.setContentType("text/html;chars et=Shift_JIS");

HTML を生成プログラム

メッセージ受信編 終 了

では。実習です。 自分でコンセプトがあって、人が幸せになる ような掲示板を考えて、実装しましょう。 投稿できる項目は3つくらい作ります。 ヒント:浮かばない人は、 「みんなの書評を見れる掲示板」でいいですよ 1.書名 2.作者 3.書評

今回の掲示板 ・投稿書き込みが1回だけできるレシピ投稿掲示 板 ・保存もできません (Servletが生きている間のみ) →1/4 人前の掲示板 サブゼミの中で一人前に育てましょう

構造の復習 ディレクトリを作って関連ファイル を入れましょう。それが Web アプリ という宣言です。 (先回の復習)

今後は? 今後のサブゼミで書き込みを保存でき るようにします。 だんだん本格的になりますね。 お疲れ様でした。 来週からも頑張りましょう!

では、作業開始です。

なぜなら ウェブに使われる文字コードは複数あって、 異なるコードが混在すると表示が混乱する。 そこで、あらかじめ出力文字コードを宣言し て おけば、ブラウザが正常に表示できる シフト JIS ・・・ Shift-JIS JIS ・・・ iso-2022-jp EUC ・・・ euc-jp