Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


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

1 Servlet 矢口 洋介 清水 麗雄

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

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

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

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

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

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

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

9 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 を使ってホームページの表示

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

11 実行 http://noisy.cs.dm.u-tokai.ac.jp/~ 自分のユー ザ ID/servlet/Hello で実行してください。 Servlet フォルダにファイルを置いていますが、 s が小文字になることに注意してください。

12

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

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

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

16 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 文 日付を格納するクラ ス

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

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

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

20 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 の文字配列を返している

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

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

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

24

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

26 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 の 文字列を返している

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

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

29 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 が増加する 現在値を保持するクラズ変 数

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

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

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

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

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

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

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

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

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

39

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

41 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 の値を表示させる。 は簡単に出力できる形。

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

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

44

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

46

47


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

Similar presentations


Ads by Google