2002 6 CRESC Corporation JSP 1 2002 6

  • Slides: 85
Download presentation
2002年 6月 CRESC Corporation セミナー資料 サーブレット・JSPコース 第 1版 2002年 6月 光岡輝義 (株)クレス © Cresc

2002年 6月 CRESC Corporation セミナー資料 サーブレット・JSPコース 第 1版 2002年 6月 光岡輝義 (株)クレス © Cresc Corporation, June, 2002 1

2002年 6月 CRESC Corporation 実習環境の構築 J 2 SDKのダウンロード(2) http: //java. sun. com/j 2 se/1.

2002年 6月 CRESC Corporation 実習環境の構築 J 2 SDKのダウンロード(2) http: //java. sun. com/j 2 se/1. 4/download. htmlからWindows (all languages, including English)のSDKをダウンロードする。 J 2 sdk-1_4_0_01 -windows-i 586. exeファイル は自己解凍ファイル、このように展開される ことを確認、トップのフォルダの名前を “j 2 sdk 140 b 1”と変更して覚えやすくする E: >cd j 2 sdk 140 b 1bin 動作確認 E: j 2 sdk 1. 4. 0_01bin>java -version java version "1. 4. 0_01" Java(TM) 2 Runtime Environment, Standard Edition (build 1. 4. 0_01 -b 03) Java Hot. Spot(TM) Client VM (build 1. 4. 0_01 -b 03, mixed mode) E: j 2 sdk 140 b 1bin> 14

2002年 6月 CRESC Corporation 実習環境の構築 簡易ツールのダウンロードとインストール(2) 簡易エディタのソフト: “秀丸" http: //hidemaru. xaxon. co. jp/software/hidemaru. html

2002年 6月 CRESC Corporation 実習環境の構築 簡易ツールのダウンロードとインストール(2) 簡易エディタのソフト: “秀丸" http: //hidemaru. xaxon. co. jp/software/hidemaru. html Hm 315. exeという自己解凍ファイルを実行してインストールする。 フォルダ:C: Program FilesHidemaru telnetソフト: "Tera Term" http: //hp. vector. co. jp/authors/VA 002416/ ttermp 23. zipというZIP圧縮ファイルを前記のLhasaで解凍し、setup. exeを実行して インストールする。 フォルダ:C: Program FilesTTERMPRO 16

2002年 6月 CRESC Corporation コマンドプロンプトで %TOMCAT_HOME%binst artup. batを実行するか、この ようにTOMCAT_HOMEbin からstartupを実行する 実習環境の構築 Tomcatの開始と終了 C: tomcat

2002年 6月 CRESC Corporation コマンドプロンプトで %TOMCAT_HOME%binst artup. batを実行するか、この ようにTOMCAT_HOMEbin からstartupを実行する 実習環境の構築 Tomcatの開始と終了 C: tomcat 404 b 3bin>startup Using CATALINA_BASE: "C: tomcat 404 b 3" Using CATALINA_HOME: "C: tomcat 404 b 3" Using JAVA_HOME: "C: j 2 sdk 140 b 1" C: tomcat 404 b 3bin>shutdown Using CATALINA_BASE: "C: tomcat 404 b 3" Using CATALINA_HOME: "C: tomcat 404 b 3" Using JAVA_HOME: "C: j 2 sdk 140 b 1" C: tomcat 404 b 3bin> ここまで表示され たらHTTP要求の 受付が可能 サービス Tomcat-Standalone を起動します Apache Tomcat/4. 0. 4 -b 3 サービス Tomcat-Apache を起動します Apache Tomcat/4. 0. 4 -b 3 このウインドウが閉じ るまで次のコマンドを 入れてはいけない 18

2002年 6月 CRESC Corporation まずはしらせて体験する Hello. Worldサーブレット(1) import java. io. *; import javax. servlet.

2002年 6月 CRESC Corporation まずはしらせて体験する Hello. Worldサーブレット(1) import java. io. *; import javax. servlet. http. *; 秀丸をつかってこのテキスト をHello. World. Javaという名前 で TOMCAT_HOMEwebappse xamplesWEB-INFclassesに 置く public class Hello. World extends javax. servlet. http. Http. Servlet { public void do. Get(Http. Servlet. Request req, Http. Servlet. Response res) throws Servlet. Exception, IOException { res. set. Content. Type("text/html; charset=Shift_JIS"); Print. Writer out = res. get. Writer(); out. println("<HTML>"); out. println("<HEAD><TITLE>Hello World</TITLE></HEAD>"); out. println("<BODY>"); out. println("<BIG>Hello World from 小泉純一郎</BIG>"); //自分のファーストネームを入れ自分のプログラムであることを識別する out. println("</BODY></HTML>"); out. flush(); out. close(); } } 秀丸のダウンロード:http: //hidemaru. xaxon. co. jp/software/hidemaru. html 20

2002年 6月 CRESC Corporation まずはしらせて体験する Static. Jsp. Example(1) <HTML> 秀丸をつかってこのテキスト をStatic. Jsp. Example. JSPという

2002年 6月 CRESC Corporation まずはしらせて体験する Static. Jsp. Example(1) <HTML> 秀丸をつかってこのテキスト をStatic. Jsp. Example. JSPという 名前で TOMCAT_HOMEwebappse xamplesjspに置く <HEAD><TITLE>Static JSP Sample</TITLE> <META HTTP-EQUIV="cache-control" CONTENT="no-cache"> <META HTTP-EQUIV="content-type" CONTENT="SHIFT_JIS"></HEAD> <BODY><H 1>静的JSPのサンプル</H 1> Hello from 鈴木宗男 </BODY></HTML> 23

2002年 6月 CRESC Corporation まずはしらせて体験する Static. Jsp. Example. jsp(3) TomcatがエンコーディングをISO-8859(イ ンターネットの標準)としてHTTPパケット のヘッダを作ってしまうため 。後で説明する pageディレクティブを最初に追加する。

2002年 6月 CRESC Corporation まずはしらせて体験する Static. Jsp. Example. jsp(3) TomcatがエンコーディングをISO-8859(イ ンターネットの標準)としてHTTPパケット のヘッダを作ってしまうため 。後で説明する pageディレクティブを最初に追加する。 <%@ page content. Type="text/html; charset=Shift_JIS" %> <HTML><HEAD><TITLE>Static JSP Sample</TITLE> <META HTTP-EQUIV="cache-control" CONTENT="no-cache"> <META HTTP-EQUIV="content-type" CONTENT="SHIFT_JIS"> 文字化け! IEでは表示>エンコー ドをShift_JISにすると なおるが、Netscapeで は駄目! </HEAD><BODY><H 1>静的JSPのサンプル</H 1>Hello from CRESC</BODY></HTML> 追加実験 1. TOMCAT_HOME¥webappsexamplesのディレクトリにこのファイルを置いたらどのよ うに呼び出せばよいか? 2. Tomcatが生成したサーブレットやclassファイルは何処に存在するか? 25

2002年 6月 CRESC Corporation サーブレットのAPI http: //www. cresc. co. jp/tech/Java/Servlet. Specification V 2. 2/index.

2002年 6月 CRESC Corporation サーブレットのAPI http: //www. cresc. co. jp/tech/Java/Servlet. Specification V 2. 2/index. htm • Java. TM Servlet 仕様書 v 2. 2 邦訳版(v 2. 3は別のグループが翻訳) • これがサーブレットの問題解決の原点 • 次がSunのAPIのJava. Doc(「API参照」と呼ぶ) http: //java. sun. com/products/servlet/2. 2/javadoc/index. html • 次にSunのチュートリアルを参照のこと http: //java. sun. com/products/servlet/technical. html 26

2002年 6月 CRESC Corporation サーブレットのAPI サーブレットAPIの構成 Object Servlet Throwable Generic. Servlet Exception Servlet. Config

2002年 6月 CRESC Corporation サーブレットのAPI サーブレットAPIの構成 Object Servlet Throwable Generic. Servlet Exception Servlet. Config Serializable Servlet. Context Http. Servlet. Request Servlet. Response Http. Servlet. Response Request. Dispatcher Event. Listener Single. Thread. Model Http. Session. Binding. Listner Input. Stream Http. Session Servlet. Input. Stream Output. Stream Servlet. Output. Stream Http. Utils Servlet. Exception Unavailable. Exception Event. Object ttp. Session. Binding. Event H サーブレットのAPIの中心と なるのが抽象インターフェ イスであるServletである。 アプリケーションは、これを 実装したGeneric. Servletを サブクラス化するか、HTTP ベースのサーブレットであ ればHttp. Servletをサブクラ ス化させて各サービスに対 応したクラスを作成する Cloneable Cookie 楕円がインターフェイス、矩形がクラスである。矢印は拡張またはイン ターフェイスの実装を意味する。小さな楕円と矩形は外部のパッケー ジに属する。水色がJavax. servletパッケージに、黄色が javax. servlet. httpパッケージに属する。 27

2002年 6月 CRESC Corporation telnetによるWWWサーバのアクセス GET / HTTP/1. 0 ボディ部分     ヘッダ部分 応答    要求 例えばどこかのwwwサーバにアクセ スしてその応答を調べる HTTP/1.

2002年 6月 CRESC Corporation telnetによるWWWサーバのアクセス GET / HTTP/1. 0 ボディ部分     ヘッダ部分 応答    要求 例えばどこかのwwwサーバにアクセ スしてその応答を調べる HTTP/1. 1 200 OK Server: Microsoft-IIS/4. 0 Content-Location: http: //61. 120. 33. 178/index. html Date: Sat, 01 Jun 2002 05: 39: 28 GMT Content-Type: text/html Accept-Ranges: bytes Last-Modified: Tue, 30 Apr 2002 08: 53: 18 GMT ETag: "013 d 87824 f 0 c 11: 5477" Content-Length: 10857 <!DOCTYPE HTML PUBLIC "-//W 3 C//DTD HTML 3. 2//EN"> <HTML> <HEAD> <META NAME="GENERATOR" Content="Visual Page 1. 0 J for Windows"> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=x-sjis"> <TITLE>株式会社クレス Cresc Corporation </TITLE> </HEAD> 30

2002年 6月 CRESC Corporation HTTPのパケット 要求パラメタの取得   教材にある Http. Request. Dump を理解しよう ひとつの変数値 String my.

2002年 6月 CRESC Corporation HTTPのパケット 要求パラメタの取得   教材にある Http. Request. Dump を理解しよう ひとつの変数値 String my. Value = req. get. Parameter(“name”); String my. Value = req. get. Parameter. Values(“name”)[0]; 複数の変数の値 String[] my. Values = req. get. Parameter. Values(“keyword”); 総ての変数の名前 Enumerartion enum = req. get. Parameter. Names(); 33

2002年 6月 CRESC Corporation telnetによるHello. Worldのテスト Tomcatを走らせそのHTTP応答を見る GET /examples/servlet/Hello. World HTTP/1. 1 host: localhost

2002年 6月 CRESC Corporation telnetによるHello. Worldのテスト Tomcatを走らせそのHTTP応答を見る GET /examples/servlet/Hello. World HTTP/1. 1 host: localhost HTTP/1. 1 200 OK Content-Type: text/html; charset=EUC-JP Date: Sat, 08 Jun 2002 13: 21 GMT Transfer-Encoding: chunked Server: Apache Tomcat/4. 0. 4 -b 2 (HTTP/1. 1 Connector) 6 <HTML> 2 27 <HEAD><TITLE>Hello World</TITLE></HEAD> 2 ・・・・・ HTTP/1. 1ではhost: 行が必要なこ とと、応答がチャンクド形式になっ ていることに注意しよう GET /examples/servlet/Hello. World HTTP/1. 0 HTTP/1. 1 200 OK Content-Type: text/html; charset=EUC-JP Date: Sat, 08 Jun 2002 13: 15: 33 GMT Server: Apache Tomcat/4. 0. 4 -b 2 (HTTP/1. 1 Connector) Connection: close <HTML> <HEAD><TITLE>Hello World</TITLE></HEAD> <BODY> <BIG>Hello World from。ハウ�ヒ・ッ・・ケ</BIG> </BODY></HTML> 37

2002年 6月 CRESC Corporation 日本語処理 HTTP要求ボディからのパラメタ読み出し Servlet. Input. Stream sis = request. get. Input.

2002年 6月 CRESC Corporation 日本語処理 HTTP要求ボディからのパラメタ読み出し Servlet. Input. Stream sis = request. get. Input. Stream(); //バイト入力用ストリームを取得 byte[] bytes = new byte[1024]; //バイトの配列を用意する int len = (sis. read. Line(bytes, 0, 1024)); //一行読み出し(URLには改行符号は入らない) String is=""; for (int i = 0; i < len; i++) { //これを文字列に変換(上8ビットはゼロ) is =is +(char)bytes[i]; } System. out. println("URL encoded byte string: " + is); URLDecoderは、SJIS の漢字をUnicodeにま で変換してくれる! String os = URLDecoder. decode(is); //String os = URLDecoder. decode(is, "Shift_JIS"); System. out. println("URL decoded body string: " + os ); 2 SDKのv 1. 4からはこち らを使用すること 45

2002年 6月 CRESC Corporation 日本語処理 HTTP応答ヘッダとエンコーディング 出力したい 文字セット res. set. Content. Type("text/html; charset=EUC-JP") res.

2002年 6月 CRESC Corporation 日本語処理 HTTP応答ヘッダとエンコーディング 出力したい 文字セット res. set. Content. Type("text/html; charset=EUC-JP") res. set. Content. Type("text/html; charset=Shift_JIS") res. set. Content. Type("text/html; charset=ISO-2022 -JP") コンテナにHTTP応答ヘッダにContent-Type: 行を追加させ ることを指示すると共に、 JavaのUnicodeを所定の文字セットに変換した後、HTTPの エンコード(URLやMIME)に変換することの指示を行う 47

2002年 6月 CRESC Corporation サーブレット・コンテナ セッション管理 Single. Thread. Model実装の複数のサーブレット ・インスタンスでもOK サーブレット バインドされたオブジェ クト サーブレット

2002年 6月 CRESC Corporation サーブレット・コンテナ セッション管理 Single. Thread. Model実装の複数のサーブレット ・インスタンスでもOK サーブレット バインドされたオブジェ クト サーブレット Http. Request Http. Response イベント サーブレット・エンジン Http. Request Http. Sessionのデータベース session session Session. Idつき要求 Session. Id Hash. Code Creation. Time Last. Accessed. Time Max. Inactive. Interval User. Name …. Attributes …… Session. Idつき応答 • Cookie(エンジン) • URL(サーブレット) クライアント 50

2002年 6月 CRESC Corporation サーブレット・コンテナ サーブレット・コンテキスト URL URI http: //www. cresc. co. jp: 8080/catalog/lawn/index.

2002年 6月 CRESC Corporation サーブレット・コンテナ サーブレット・コンテキスト URL URI http: //www. cresc. co. jp: 8080/catalog/lawn/index. html Context. Path server. xmlにて設定 Servlet. Path. Info web. xmlにて設定 55

2002年 6月 CRESC Corporation サーブレット・コンテキスト 到来要求とサーブレットとの対応付け マップのセットの例に適用される到来パス マップのセットの例 パス・パタン サーブレット /foo/bar/* servlet 1 /baz/*

2002年 6月 CRESC Corporation サーブレット・コンテキスト 到来要求とサーブレットとの対応付け マップのセットの例に適用される到来パス マップのセットの例 パス・パタン サーブレット /foo/bar/* servlet 1 /baz/* servlet 2 /catalog servlet 3 *. bop servlet 4 詳細は仕様書参照のこと 到来パス 要求を処理するサーブレット /foo/bar/index. html servlet 1 /foo/bar/index. pop servlet 1 /baz servlet 2 /baz/index. html servlet 2 /catalog servlet 3 /catalog/index. html "default"のサーブレット /catalog/racecar. bop servlet 4 /index. bop servlet 4 58

2002年 6月 CRESC Corporation サーブレットやJSP間の情報共有 エンジンが用意するオブジェクトを共有する サーブレット・コンテナが管理するオブジェクトのサーブレット間共有 public interface Servlet. Request request. set. Attribute(“name”,

2002年 6月 CRESC Corporation サーブレットやJSP間の情報共有 エンジンが用意するオブジェクトを共有する サーブレット・コンテナが管理するオブジェクトのサーブレット間共有 public interface Servlet. Request request. set. Attribute(“name”, shared. Object); public interface Http. Session Shared. Object shared. Object = (Shared. Object)request. get. Attribute(“name”); Http. Session session = request. get. Session(true); session. set. Attribute(“name”, shared. Object); public interface Servlet. Context Shared. Object shared. Object = (Shared. Object)session. get. Attribute(“name”); Servlet. Context context = get. Servlet. Context(); context. set. Attribute(“name”, shared. Object); Shared. Object shared. Object = (Shared. Object)context. get. Attribute(“name”); 注:beanについてはJSPの項で説明 60

2002年 6月 CRESC Corporation JSPのコンセプト JSPの呼び出し URLとして呼び出される http: //www. cresc. co. jp/My. Application/Some. Page.

2002年 6月 CRESC Corporation JSPのコンセプト JSPの呼び出し URLとして呼び出される http: //www. cresc. co. jp/My. Application/Some. Page. jsp サーブレットが呼び出す get. Servlet. Contxt(). get. Request. Dispatcher(“/Some. Page. jsp”). forward( request, response); HTMLページからの呼び出し <A HREF=“/Some. Page. jsp”>リンク呼び出し</A> <FORM ACTION=“/Some. Page. jsp” METHOD=“POST” ENCTYPE=“text /plain”>…. . </FORM> 62

2002年 6月 CRESC Corporation JSPのインプリシットのオブジェクト コンテナが用意するオブジェクト request 内容 Http. Servlet. Request(HTTP要求のオブジェクト) request. get. Parameter("name")

2002年 6月 CRESC Corporation JSPのインプリシットのオブジェクト コンテナが用意するオブジェクト request 内容 Http. Servlet. Request(HTTP要求のオブジェクト) request. get. Parameter("name") response Http. Servlet. Response(HTTP応答のオブジェクト) response. set. Content. Type(". . . ") out javax. servlet. jsp. Jsp. Writer (出力用Print. Writer) out. println(". . html. . ") session Http. Session (指示しなければコンテナが作成してしまう) session. put. Value("name", object) application Servlet. Context(情報共有などに使う) application. set. Attribute("name", object) config page. Context page Servlet. Config(初期設定などに使う) javax. servlet. jsp. Page. Context(情報共有などに使う) this(使うことはない) 64

2002年 6月 CRESC Corporation JSPのインプリシットのオブジェクト Jsp. Writer GET /examples/jsp/Static. Jsp. Example. jsp HTTP/1. 1

2002年 6月 CRESC Corporation JSPのインプリシットのオブジェクト Jsp. Writer GET /examples/jsp/Static. Jsp. Example. jsp HTTP/1. 1 host: localhost • JSP から jsp: include アクション(flush = “true”)によって別の JSP を呼び出 した • バッファが満杯になった。バッファが 満杯になると自動的にバッファをフ ラッシュする HTTP/1. 1 200 OK Content-Type: text/html; charset=Shift_JIS Date: Wed, 03 Jul 2002 00: 46: 14 GMT • out オブジェクトの flush メソッドを呼 Transfer-Encoding: chunked び出した Server: Apache Tomcat/4. 0. 4 -b 3 (HTTP/1. 1 Connector) Set-Cookie: JSESSIONID=7 A 6 C 675530 A 95 AD 517 A 46 A 8 D 978 F 2571; Path=/examples ea <HTML> <HEAD><TITLE>Static JSP Sample</TITLE> Jsp. Writerはバッ <META HTTP-EQUIV="cache-control" CONTENT="no-cache"> ファで、flushしな <META HTTP-EQUIV="content-type" CONTENT="Shift_JIS"></HEAD> いかぎりチャンク <BODY><H 1>静的JSPのサンプル</H 1> がネットワークに Hello from 鈴木宗雄</BODY></HTML> 出て行かない 0 65

2002年 6月 CRESC Corporation JSPの構文要素 JSPに書ける構文の 4タイプ • 静的HTML(Static documents) • JSPのスクリプト要素(Scripting elements) •

2002年 6月 CRESC Corporation JSPの構文要素 JSPに書ける構文の 4タイプ • 静的HTML(Static documents) • JSPのスクリプト要素(Scripting elements) • スクリプトレット、式、宣言 • JSPのディレクティブ(Directives、制御文) • ディレクティブ、制御文 • JSPのアクション(Actions) • include, forward, plugin, use. Bean, set. Priority. . 66

2002年 6月 CRESC Corporation JSPのタグ アクション インクルード(Include) (このページが要求されたときに含めるべきファイル) <jsp: include page=“relative URL” flush=“true” /> 転送(Forward) (この要求を転送する)

2002年 6月 CRESC Corporation JSPのタグ アクション インクルード(Include) (このページが要求されたときに含めるべきファイル) <jsp: include page=“relative URL” flush=“true” /> 転送(Forward) (この要求を転送する) <jsp: include page=“relative URL” /> Beanの使用(use. Bean) (baenの使用を宣言) <jsp: use. Bean att=val* /> または <jsp: use. Bean att=val* /> ・・・・ </jsp: use. Bean> プロパティのセット/ゲット(set. Property/get. Property) <jsp: set. Property att=val* /> <jsp: get. Property name=“property. Name” value=“val” /> プラグイン(Plugin) (ブラウザでのアプレット) <jsp: plugin attribute="value"*>. . . </jsp: plugin> 69

2002年 6月 CRESC Corporation サーブレットとJSPの連携 サーブレット間と同じく相互呼出しができる URLによるJSP呼出し http: //hostname/path. . or. . webapp/some. File.

2002年 6月 CRESC Corporation サーブレットとJSPの連携 サーブレット間と同じく相互呼出しができる URLによるJSP呼出し http: //hostname/path. . or. . webapp/some. File. jsp JSPからサーブレットの呼出し <FORM method=post action="/servlet/pkg. Some. Servlet"> <jsp: include page="/servlet/pkg. Some. Servlet" /> <jsp: forward page="/servlet/pkg. Some. Servlet" /> JSPからJSPの呼出し(サーブレット呼出しと同じ) <jsp: forward page="/servlet/pkg. Some. Servlet" /> サーブレットからJSPの呼出し(よく使う、2通りあり) response. send. Redirect("/path/some. File. jsp"); get. Servlet. Context(). get. Request. Dispatcher("/path/some. File. jsp"). forward(request, response); 70

2002年 6月 CRESC Corporation サーブレットとJSPの連携 Beanによる情報の共有 get. Servlet. Context(). set. Attribute(“Mybean”, Bean 1 bean

2002年 6月 CRESC Corporation サーブレットとJSPの連携 Beanによる情報の共有 get. Servlet. Context(). set. Attribute(“Mybean”, Bean 1 bean 1); Request. get. Session(). set. Attribute(“My. Bean”, Bean 1 bean 1); FORM要求 Servlet Beanの用意 呼び出し Beanへのアクセス HTMLページ bean JSP <jsp: use. Bean id=“My. Bean” class=“Bean 1” scope=“application or session or. . ”> <jsp: get. Property name=“book 1” property=“title” /> <%= book 1. get. Title() %> 71

2002年 6月 CRESC Corporation JSPの実習 Restaurant. Crescの構成 TOMCAT_HOME conf server. xml tomcat-users. xml webapps

2002年 6月 CRESC Corporation JSPの実習 Restaurant. Crescの構成 TOMCAT_HOME conf server. xml tomcat-users. xml webapps common Restaurant. Cresc. war lib Restaurant. Cresc servlet. jar JSP Web-inf web. xml Get. Order. Page. jsp Confirm. Page. jsp servlets Restaurant. Master. java Check. Page. jsp .... restaurant Restaurant. Chef. java Restaurant. Waitress. java ... 74

2002年 6月 CRESC Corporation JSPの実習 サーブレットのマッピング サーブレット名 クラス URLパタン Chef restaurant. Restaurant. Chef /Chef

2002年 6月 CRESC Corporation JSPの実習 サーブレットのマッピング サーブレット名 クラス URLパタン Chef restaurant. Restaurant. Chef /Chef Master restaurant. Restaurant. Master /Master Waitress restaurant. Restaurant. Waitress /Dinner ウェイトレス が窓口 web. xmlにはマスターの 認証もできるようになって いるので試されたい http: //xxx. xxx: 8080/Restaurant. Cresc/Master http: //localhost: 8080/Restaurant. Cresc/Master http: //127. 0. 0. 1: 8080/Restaurant. Cresc/Master http: //localhost: 8080/Restaurant. Cresc/servlet/Master http: //localhost: 8080/Restaurant. Cresc/ ・・・・・・・ 76

2002年 6月 CRESC Corporation JSPの実習 Javaソースコードに変更を加えたら 1. TOMCAT_HOMEbinからshutdownコマンドでTomcatを終了さ せる 2. TOMCAT_HOMEwebappsRestaurant. CrescWebinfclassesrestaurantにカレントディレクトリを移す 3. javac

2002年 6月 CRESC Corporation JSPの実習 Javaソースコードに変更を加えたら 1. TOMCAT_HOMEbinからshutdownコマンドでTomcatを終了さ せる 2. TOMCAT_HOMEwebappsRestaurant. CrescWebinfclassesrestaurantにカレントディレクトリを移す 3. javac *. java で中のjavaファイルを一度にコンパイルする 1. クラスパスの確認 2. (set classpath=c: tomcat 404 b 3commonlibserver. jar) 4. またTOMCAT_HOMEbinに移ってstartupコマンドでTomcatを開 始させ、変更の結果を確認する 5. server. xml, web. xmlを変更したとき(tomcat-users. xmlはそ の必要ない )もTomcatの再起動が必要 80

2002年 6月 CRESC Corporation JSPの実習 Get. Order. Page. jsp(1) <%-- ブラウザとコンテナに使う文字セットを指定 --%> <%@ page

2002年 6月 CRESC Corporation JSPの実習 Get. Order. Page. jsp(1) <%-- ブラウザとコンテナに使う文字セットを指定 --%> <%@ page content. Type="text/html; charset=Shift_JIS" %> <%-- sessionは使う --%> <%@ page session = "true" %> <%-- コンテナが持っていないライブラリはここで宣言 --%> <%@ page import = "java. util. *, restaurant. *" %> <%-- 次のような式はデバッグの時に便利 <% System. out. println("Point #1 passed"); %> --%> <%-- HTMLの最初に通常入れておくもの --%> <!DOCTYPE HTML PUBLIC "-//W 3 C//DTD HTML 4. 0 Transitional // EN"> <HTML> <HEAD><TITLE>Restaurant Waitress</TITLE> <META HTTP-EQUIV="pragma" CONTENT="no-cache"> <META HTTP-EQUIV="Expires" CONTENT="-1"> </HEAD> 81

2002年 6月 CRESC Corporation JSPの実習 Get. Order. Page. jsp(2) sessionをベースにして、 menuという名前の Restaurant. Menu型の オブジェクトを共有す

2002年 6月 CRESC Corporation JSPの実習 Get. Order. Page. jsp(2) sessionをベースにして、 menuという名前の Restaurant. Menu型の オブジェクトを共有す ることの宣言 <%-- sessionを使ってRestaurant. Menuのオブジェクトをmenuという名前で共有する --%> <jsp: use. Bean id="menu" scope="session" class="restaurant. Restaurant. Menu" /> <% Restaurant. Stock menu. List = menu. get. Menu. List(); actionのURLはrequest String[] number. String = request. get. Parameter. Values("Number"); を介して渡されている %> <BR>メニューをどうぞ<BR> <FORM ACTION=" <%= (String)request. get. Attribute("return. URL") %>" METHOD="POST"> <TABLE><TR><TH>本日のセレクション</TH><TH>値段</TH><TH>ご注文数</TH></TR> <% String[] key. Array = Menu. List. get. Sorted. Keys(); Restaurant. Menu. Item item; item for (int i=0; i < key. Array. length; i++){ item = Menu. List. get. Item(key. Array[i]); ・・・・・・・ item, stock, menuともにbeanになれる stockのコピーから menu. List menu 82

2002年 6月 CRESC Corporation JSPの実習 マスターの認証 <security-constraint> <web-resource-collection> <web-resource-name>Master Only Accessible Pages</webresource-name> <!-- Define

2002年 6月 CRESC Corporation JSPの実習 マスターの認証 <security-constraint> <web-resource-collection> <web-resource-name>Master Only Accessible Pages</webresource-name> <!-- Define the context-relative URL(s) to be protected -> <tomcat-users> <user name="tomcat" password="tomcat" roles="tomcat" /> <!-- <url-pattern>/Master</url-pattern> --> <user name="role 1" password="tomcat" roles="role 1" /> <!-- If you list http methods, only those methods are protected --> <user name="both" password="tomcat" roles="tomcat, role 1" /> <http-method>GET</http-method> <user name="masajyuurou" password="iyashikei" <http-method>POST</http-method> roles="Restaurant. Owners" /> </web-resource-collection> <auth-constraint> </tomcat-users> <!-- Anyone with one of the listed roles may access this area --> <role-name>Restaurant. Owners</role-name> TOMCAT_HOMEconftomcat-users. xml </auth-constraint> </security-constraint> <!-- Default login configuration uses BASIC authentication --> <!- <login-config> <auth-method>BASIC</auth-method> <realm-name>Example Basic Authentication Area</realm-name> </login-config> --> 注:エラーとログインのページは Restaurant. CrescHTMLssecurity に含まれる webappsRestaurant. CrescWEB-INFweb. xml 83

2002年 6月 CRESC Corporation サーブレットのライフサイクル サーブレットの初期化 Public class My. Servlet extends Http. Servlet{ 初期化でなされるべきこと:

2002年 6月 CRESC Corporation サーブレットのライフサイクル サーブレットの初期化 Public class My. Servlet extends Http. Servlet{ 初期化でなされるべきこと: スタティックな変数の設定 設定ファイルから初期化パ ラメタを取得 データベース接続の取得 .... protected String my. Driver; ……. . Public void init(Servlet. Config config) throws. Servlet. Exception{ super. init(config); my. Driver = config. get. Init. Parameter(“driver”); my. URL = config. get. Init. Parameter(“URL”); my. User. Name = config. get. Init. Parameter(“user. ID”); } …. . 85