Servlet 矢口 洋介 清水 麗雄. 準備  Java フォルダに入ってから mkdir Servlet ln – s ~/public_html/Servlet.  フォルダの移動 cd public_html/Servlet/WEB-INF/classes/*.  ファイルのコピー cp.

Slides:



Advertisements
Similar presentations
山元進.  for 文  while 文  do ~ while 文  文のネスト  break 文  continue 文.
Advertisements

第6章 インターネットアプリケー ション 6.1 インターネットアプリケーション 6.2Java によるネットワーク処理 6.3 電子メール 6.4Web アプリケーション 6.5 チャットアプリケーション.
ネットワークプログ ラミング論 平成27年 11 月 1 6日 森田 彦. 【基礎課題 6-1 】の解答 ① サーブレットを記述して保管するとコン パイルが自動的に行われる。 ② サーブレットの記述後、開発者がコンパ イル命令を実行しなければならない。 ③ プロジェクト名が Web アプリケーション.
Web アプリケーション開発入門 大岩研究会 今野隆平 2002 年 5 月 9 日 Introduction to Web Application Development.
Servlet にメッセージを送ろ う! 杉浦学・山下純一・北川敦規 今日の目標です サーブレットとブラウザのメッセージ 送受信 ブラウザでサーブレットにメッセージを送信で きる サーブレットでメッセージを受信できる 実習で実際にアプリを作れるようにな る.
情報アプリケーション1 2006 年 10 月 12 日 第四回資料 担当 重定 如彦. 目次 データの送信とフォーム クイズ CGI 複数のパーツのデータの分割方法 配列変数.
1 PHP プログラムの実行(まと め) 担当 岡村耕二 月曜日 2限 平成 22 年度 情報科学 III (理系コア科目・2年生) 本資料の一部は、堀良彰准教授、天野浩文准教授、菅沼明 准教授等による以前の講義資料をもとにしています。
プログラミング実習 1 ・ 2 ク ラス 第 2 週目 担当教員 : 渡邊 直樹. 課題 2 ● 2 × 2型行列の固有値, 固有ベクトルを求め る EigMatrix.java というプログラムを作成せ よ。 ● 行列の各要素はコマンド・プロンプトから入力 ● 計算した結果もコマンド・プロンプトに表示.
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
社会人学習講座 「Javaプログラミング概論」
GridLayout オブジェクト(省略)
IO - 入出力 小西 亨.
JSFによるWebアプリケーション開発 第9回
Applet 岡部 祐典 鈴木 敬幸.
~手続き指向からオブジェクト指向へ(Ⅰ)~
JSFによるWebアプリケーション開発 第11回
Servlet J2EE I 第8回 /
Servlet入門(2) 入力フォームをつかったWebアプリ
Iアプリプログラミング その1  鳥居秀徳.
アルゴリズムとプログラミング (Algorithms and Programming)
ネットワークプログラミング論 平成27年10月12日 森田 彦.
プログラミング基礎I(再) 山元進.
プログラミング基礎I(再) 山元進.
JavaServlet&JSP入門 01K0018 中村太一.
独習Java ・ 10.6  Hashtableクラス ・ 10.7  String Tokenizerクラス  12月12日    小笠原 一恵.
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
HTTPプロトコルとJSP (1) データベース論 第3回.
HTTPプロトコル J2EE I 第7回 /
インタフェース プログラミング 第14回 インタフェース プログラミング第14回.
Servlet入門(2) 入力フォームをつかったWebアプリ
ネットワークプログラミング論 平成28年10月17日 森田 彦.
データベース設計 第9回 Webインタフェースの作成(1)
RMI ソフトウェア特論 第6回 /
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
ネットワークプログラミング論 平成28年11月21日 森田 彦.
TomcatによるWebアプリケーション開発入門
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
JAVA入門.
アルゴリズムとプログラミング (Algorithms and Programming)
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
総合政策学部4年 伊藤玲子 総合政策学部4年 阿部雅美 +CreWな皆様
ネットワークプログラミング論 平成28年11月7日 森田 彦.
Javaによる Webアプリケーション入門 第6回
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
暗号技術 ~JAVAプログラム①~ (5週目)
ネットワークプログラミング論 平成28年10月31日 森田 彦.
10-1 SAXの概要 10-2 Saxプログラミングの基礎 10-3 saxのプログラム例
Javaによる Webアプリケーション入門 第2回
7.4 intanceof 演算子 7.5~7.9パッケージ 2003/11/28 紺野憲一
Javaによる Webアプリケーション入門 第11回
Servlet ソフトウェア特論 第7回.
Servlet J2EE I (データベース論) 第12回 /
Servlet データベース論 第6回.
プログラミングⅠ 平成30年10月22日 森田 彦.
オブジェクト プログラミング 第2回 プログラムの基本.
アルゴリズムとプログラミング (Algorithms and Programming)
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
C#プログラミング実習 第3回.
暗号技術 ~JAVAプログラム②~ (6週目)
サブゼミ第7回 実装編① オブジェクト型とキャスト.
WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ―
JSPの基本 データベース論 第2回.
Jakarta Struts (1) ソフトウェア特論 第10回.
JSPの基本 J2EE I (データベース論) 第8回 /
JAVA入門⑥ クラスとインスタンス.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
第6章 インターネットアプリケーション 6.1 インターネットアプリケーション 6.2 Javaによるネットワーク処理 6.3 電子メール
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

Servlet 矢口 洋介 清水 麗雄

準備  Java フォルダに入ってから mkdir Servlet ln – s ~/public_html/Servlet.  フォルダの移動 cd public_html/Servlet/WEB-INF/classes/*.  ファイルのコピー cp ~buhii/public_html/Servlet/WEB-INF/classes/*.

作業する場所  classes フォルダ内に class ファイルが必要 なので、コンパイルは classes フォルダ内 で行うようにしてください。

Servlet  サーブレットとは、サーバ側で実行 するためのプログラムです。  リクエストを受け取り、処理をし、 その結果を HTML で返すのが役割です。 import javax.servlet.*; import javax.servlet.http.*; を記述する必要があります。

サーブレットは HttpServlet クラスのサブクラスとして定義する。 public class Hello extends HttpServlet { HttpServlet オブジェクトの主要なメソッド  doGet(req, res)  doPost(req, res)  init(config) 書いて ニャ!

doGet(req, res)  サーブレットから一方向にブラウザへ送ります。  ブラウザを表示する時に呼び出されるメソッドです。  GET がリクエストとして渡された時に呼び出されるメソッド です。  ホームページを表示して欲しい、というリクエストを受け取ると、 サーバーはリクエストの URL を元にサーブレットを探し、その doGet() メソッドを呼び出します。 つまり、ホームページを表示する時に呼び 出されるメソッドです。 このメソッドの中に『リクエストの情報を 受け取り、ホームページとしての文字列を 返すか、 JSP を出力する』という処理を記 述するのですニャー。

doPost(req, res)  ブラウザから入力を受け取り処理をして返します。  入力フォームに入力された情報を送信する、というリク エストを受け取ると、サーバーはリクエストの URL を元 にサーブレットを探し、その doPost() メソッドを呼び出 します。 つまり、入力フォームに入力された入力情報を送信するメソッ ドだニャー。

init(config)  初期化処理を行うメソッドです。  このメソッドは呼び出すのではなく、呼 び出されるメソッドです。

Hello.java の説明 ~ホームページに Hello World と表示するプログラム~ import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Hello extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println(" "); out.println(" Hello World "); out.close(); } テキスト形式と指定してい る ファイル操作後にはクローズするのを忘れ ずに HttpServlet を必ず継承する こと Servlet の import 文 doGet を使ってホームページの表示

html ファイルでは out.println(“ ”); で が出力される out.println(“ HelloWorld ”); で Hello World が出力される html の中身 Hello World

実行 自分のユー ザ ID/servlet/Hello で実行してください。 Servlet フォルダにファイルを置いていますが、 s が小文字になることに注意してください。

Servlet では main() メソッドを使わな い  1 つのサーブレットには 1 つの URL が対応し て、その URL が Web ブラウザで実行された 際に、サーバーが該当するサーブレット の doGet() メソッドもしくは doPost() メソッ ドを呼び出しています。 つまり、サーブレットでは doGet() メ ソッド doPost() メソッド内で処理を行って、 Web ブラウザに HTML を出力するの ニャー。 main() メソッドは使わないニャー。

それでは演習1をやってみます  演習 1 Hello.java を改良し、 現在時刻 (new Date()) を表示する Clock.java を書け。

ヒント 現在時刻を表示するプログラ ム import java.util.*; public class clock{ public static void main(String argv[]){ System.out.println(new Date()); } 日付を格納するためのクラス Date クラスを利用するのに必要な import 文

Hello.java を少し変更するだけでできま す import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class Clock extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println(" "); out.println(" " + new Date() + " "); out.close(); } Date クラスを利用するのに必要な import 文 日付を格納するクラ ス

データの入力  入力フォームを利用します。  入力フォームとは HTML の タグ内に タグなどによる、入力項目やボタンに よって表示される、ホームページの入力画面の ことです。  入力フォーム内の ボタンが 押されると、 POST のリクエストが送信され、入 力フォーム内の入力情報も送信されます。

入力フォームの種類  ラジオボタン。どれかひとつを選択させます。  テキストフィールド。文字を入力させます。  このボタンが押されると、 POST のリクエストが送 信され、入力フォーム内の情報も送信されます。

入力フォームの name と value   name は属性です。他から参照する時に使 います。  value は値です。

Radio.java の説明 ~ラジオボタンで選んだ情報を表示するプログラム~ 3 import java.io.*; 4 import javax.servlet.*; 5 import javax.servlet.http.*; 6 7 public class Radio extends HttpServlet { 8 public void doPost(HttpServletRequest req, HttpServletResponse res) 9 throws IOException, ServletException { 10 res.setContentType("text/html"); 11 PrintWriter out = res.getWriter(); 12 out.println(""); 13 String vals[ ] = req.getParameterValues("choice"); 14 for(int i = 0; i < vals.length; ++i){ 15 out.println("names are " + vals[i] + ""); 16 } 17 out.println(""); 18 out.close(); 19 } 20 } 入力情報を受け取るので doPost を使う name が choice の value の文字配列を返している

radio.html が必要  radio.java だけでは動きません。  POST メソッドを用いた HTML ファイルを適 当な場所に置き、そこから action タグで呼 び出し先を指定してやる必要があります。

radio.html ~ form を用いた入力~ 優 良 可 不可 radio.java の doPost を実行させ る 呼び出し先の指定

実行 作成した radio.html を開く。

演習2をやってください  演習2 Radio.html と Radio.java を自分のディレクト リに実装し、 「 Udon 」「 Takoyaki 」 「 Yakitori 」「 Tonjiru 」の選択に変更せよ。 (ヒント Radio.java には手を加えなくても よい)

Eval.java ~文字列を入力するサーブレット~ import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Eval extends HttpServlet { public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println(""); String name[] = req.getParameterValues("myname"); String point[] = req.getParameterValues("point"); out.println(name[0] + " has " + point[0] + " point."); out.println(""); out.close(); } name が myname の value の文字列を返してい る name が point の value の 文字列を返している

演習3をやってください  演習3 Eval.java に該当する HTML ファイルを自分で 用意して、実行せよ。 (ヒント myname と point (12,13 行目 ) という 名前のテキストフィールドを作る)

値の保存と更新  状態を保存することも Servlet の役割です。

Conter.java ~リロードされるたびに、1つずつカウントするプロ グラム~ import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Counter extends HttpServlet { private int count; public void init(ServletConfig conf) throws ServletException{ super.init(conf); count = 0; } public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println(""); out.println("Count = " + (++count)); out.println(""); out.close(); } 初期化 リロードされる度に、 doGet が呼びださ れる count が増加する 現在値を保持するクラズ変 数

演習4をやってください  演習4 counter.java にリセットボタンをつけた counter2.java を作成 せよ。 (ヒント : doGet の本文中に、次のメッセージをブラウザに 送る文を追加する。 後はこのボタンが押されたときの処理を加えればよい。)

JSPの準備  フォルダの移動 cd public_html/Servlet/WEB-INF/JSP/*.  ファイルのコピー cp ~ragusagi/public_html/Servlet/JSP/*.

JSP ( java server pages )  JSP は Servlet と同様に、ダイナミックな振 る舞いを行うサーバの技術です。  基本形式は HTML と同じですが、ファイル 中に java のプログラムを埋め込むことがで き、 読み込み時に、実行することができます。

Servlet と JSP の違い  Servlet と JSP は本体とオブジェクトが対照的です。  Servlet 本体 →java プログラム オブジェクト →HTML を出力  JSP 本体 →HTML ソース オブジェクト →java プログラムを実行

java ソースの埋め込み方  :スクリプトレット ソースは評価されてその結果をテキストとして置き換えま す。  :式 ソースを実行します。簡易に出力する方法。  :宣言 ソース(の変数名や型などの)宣言します。 『「出力を行うメソッド」の外側』とみなされ、 フィールドやメソッドを記述できます。 header などにおきます。

java ソースの埋め込み方  :ディレクティブ JSPの特性を定義します。エンコード方式、 Content- type 、 クラスのインポート、タグライブラリの指定、外部ファイ ルの インクルード指定など。  :コメント JSP プログラム内のコメントを記述します。

評価と実行の違い ~さっきの時刻の例で説明~  実行 の場合 HTML の中に、 をいれる だけ。 Date() を実行された結果が挿入されます。  評価 の場合 HTML の中に、 としなくてはいけない。行末のセミコロンにも注意してく ださい。 つまり 「 」は「 out.print( 変数 ); 」 へと置き換えられるということニャ。

Hello.jsp ~ Hello を表示する JSP ~ JSP Hello Hello 見出しタグに囲まれた Hello は大きく表示さ れる の形 なので、 out.println とセミコロンが 必要

実行 jsp ファイルを ~ 自分 /public_html/Servlet/JSP の下に置くだけです。 ※ ~/public_html/Servlet/JSP/ の下に置いたファイル が、 ~/JSP/ でアクセスできることに注意して ください。 コンパイルが不要で、必要最低限のところにだけ置 けばいいので、 Servlet よりも手軽です。

Servlet でできるものは JSP に変換で きる  先ほどのカウントのサーブレットは JSP で は次のように変換できます。

count.jsp <% int count; if(application.getAttribute("count") == null){ count = 0; }else{ count = (Integer)application.getAttribute("count")+1; } application.setAttribute("count", count); %> Count = ディレクディブの宣言 このソースがどういうものか指 定 から始まる カウントの読み込みと保存を行って いる。 application は JSP の 暗黙のオブジェクトのひと つ。 JSP 作成時に自動で作成されるオブジェ クト。 getAttribute(“count”) で count とい う名の オブジェクトを読み出している。 getAttribute で 読み出したオブジェクトは Object 形式になっているの で、 int 形式に cast しないといけ ない。 setAttribute は getAttribute の逆で値を保存するメ ソッド。 第1引数は名前。第2引 数はその値。 この場合は、 count という名前に ローカル変数の count を保存している。 一般的な HTML のソー ス。 これは というソー スの省略形で、 ローカル変数 count の値を表示させる。 は簡単に出力できる形。

宿題1  テキストから問7.5の問題 count2.jsp を作成せよ。 JSP フォルダに作成してください。

宿題2  テキストフィールドを2つ作り、2つの 数字を入力させ、ラジオボタンで四則演 算をさせる、 Shisoku.java と Shisoku.html を 作成せよ。 ( html ファイルから実行)

宿題3  あなたの名前と好きな人の名前を入力すると、 二人の相性が出力される、 Uranai.java と Uranai.html を作成せよ。 (相性の判断は二人の名前の文字数の差で判断さ せてください。 二人の文字数が同じ →saikou 二人の文字数の差が1文字 →futuu それ以外 →yokunai と出力してください)