プログラミング III 第 3 回 : サーブレットリクエスト & サーブレットレスポンス処理入門 Ivan Tanev
講義の構造 1. サーブレットの構造 2. サーブレットリクエスト サーブレットレスポンスとは 3. 演習 2
Lecture2_Form.htm 第 2 回のまとめ Web サーバ Web 1 フォーム static 2 Internet サーブレ4 HTML 5 ットテキスト dynamic サーブレット コンテナ 3 Web クライアント HTML テキスト HTML テキスト HelloFromServlet.class <HTML><HEAD> <TITLE>To All Students of Programming 3 at Doshisha University</TITLE> <META HTTP- EQUIV='Content-Type' Content='text/html; charset=shift_jis'></meta></head><bod Y BGCOLOR="#FFFFFF"> <CENTER> <H2>Congratulations, your first servlet is working!</h2> <H3>[ local time is <font color=blue>wed Apr 18 17:49:38 KST 2018</font> ]</H3> </CENTER></BODY></HTML> ユーザ 3
1. サーブレットの構造 サーブレット HelloFromServlet 呼び出す前 (Lecture2_Form.htm の画面 ) サーブレット HelloFromServlet 呼び出す後 4
1. サーブレットの構造 サーブレット HelloFromServlet の Java ソース import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloFromServlet extends HttpServlet { public void service (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // set content type and other response header fields first response.setcontenttype("text/html"); // get the communication channel with the requesting client PrintWriter out = response.getwriter(); } } // write the data out.println("<html>" + "<HEAD>" + " <TITLE>To All Students of Programming 3 at Doshisha University</TITLE>" + " <META HTTP-EQUIV='Content-Type' Content='text/html; charset=shift_jis'></meta>" + "</HEAD>" + "<BODY BGCOLOR=\"#FFFFFF\">" + " <CENTER>" + " <H2>Congratulations, your first servlet is working!</h2>" + " <H3>[ local time is <font color=blue>" + new java.util.date() + "</font> ]</H3>" + " </CENTER>" + "</BODY>" + "</HTML>"); 5
1. サーブレットの構造 サーブレット HelloFromServlet の Java ソース import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloFromServlet extends HttpServlet { Package (classes and interfaces) Abstract class of package javax.servlet.http Default implementation of servlet methods Method overridden } public void service (HttpServletRequest request, { } HttpServletResponse response) throws ServletException, IOException // set content type and other response header fields first response.setcontenttype("text/html"); // get the communication channel with the requesting client PrintWriter out = response.getwriter(); Request object Request interface Response object Response interface Method of response object // write the data out.println("<html>" + "<HEAD>" + " <TITLE>To All Students of Programming 3 at Doshisha University</TITLE>" + " <META HTTP-EQUIV='Content-Type' Content='text/html; charset=shift_jis'></meta>" + "</HEAD>" + "<BODY BGCOLOR=\"#FFFFFF\">" + " <CENTER>" + " <H2>Congratulations, your first servlet is working!</h2>" + " <H3>[ local time is <font color=blue>" + new java.util.date() + "</font> ]</H3>" + " </CENTER>" + "</BODY>" + "</HTML>"); Character-based output stream Method of output stream 6
Web サーバ Request object Lecture2_Form.htm 2. サーブレットリクエスト サーブレットレスポンスとは Web 1 フォーム static 2 Internet サーブレ4 HTML 5 ットテキスト HTML dynamic テキスト サーブレット コンテナ 3 Web クライアント HTML テキスト out.println() の実行結果 Response object HelloFromServlet.class <HTML><HEAD> <TITLE>To All Students of Programming 3 at Doshisha University</TITLE> <META HTTP- EQUIV='Content-Type' Content='text/html; charset=shift_jis'></meta></head><bod Y BGCOLOR="#FFFFFF"> <CENTER> <H2>Congratulations, your first servlet is working!</h2> <H3>[ local time is <font color=blue>wed Apr 18 17:49:38 KST 2018</font> ]</H3> </CENTER></BODY></HTML> ユーザ 7
Web サーバ Request object Web フォーム static 2. サーブレットリクエスト サーブレットレスポンス Lecture2_Form.htm Internet サ3 ーブレHTML ットテキスト dynamic サーブレット コンテナ Web クライアント HTML テキスト HTML テキスト Response object HelloFromServlet.class Request object Input Data: サーバ状態のデータ クライアント状態データ ユーザー入力 ユーザ 8
3. サーブレットリクエスト サーブレットレスポンスの演習 A.Web フォームの開発 (Notepad) B.WebフォームをWebサーバにUpload (FTP Client) C.Servletの開発 (Notepad) D.ServletをWebサーバにUpload (FTP Client) E.Servletをコンパイル (CompileServlet.jsp via Web Browser) F.WebフォームへAccess (Web Browser) 9
3. 演習 A.Web フォームの開発 テキストドキュメントの作成 1 2 3 10
A. Web フォームを開発 テキストドキュメントに下記の内容を入力 : Servlet を呼び出す Lecture3_Servlet_XXXXXXXX: XXXXXXXX = 学籍番号例 : Lecture3_Servlet_1116171001 11
A. Web フォームを開発テキストドキュメントを保存する : E:\Temp\Lecture3_Form1.html 2 1 12
B. Web フォームを Upload する 1) FTP Client (FFFTP) を実行する 2) ホストに接続する FTP クライアント設定 : ホスト名 : isd-si.doshisha.ac.jp ユーザ名 : guest パスワード : guest 13
B. Web フォームを Upload する 3) 自分のフォルダーを選択してから Upload する 14
C. Servlet を開発する 1) Notepad で 下記の Servlet を入力する 2) Servlet は E:\Temp\Lecture3_Servlet_XXXXXXXX.java に保存する 注意 1: XXXXXXXX = 学籍番号, 例 : Lecture3_Servlet_1116171001 注意 2: class 名 =ファイル名 (.java) 例 : class 名 : Lecture3_Servlet_1116171001 ファイル名 : Lecture3_Servlet_1116171001.java 15
D.Servlet Lecture3_Servlet_XXXXXXXX.java を Web Server に Upload する 1) FFFTPを実行する. 2) ホストに接続 : ホスト名 : isd-si.doshisha.ac.jp ユーザ名 : servlets パスワード : servlets 注意 : Servlet を Upload するためにユーザ名 : servlets パスワード : servlets です Web Form を Upload 時にユーザ名 : guest パスワード : guest でした 16
D.Servlet Lecture3_Servlet_XXXXXXXX.java を Web Server に Upload する 3) Upload Lecture3_Servlet_XXXXXXXX.java XXXXXXXX = 学籍番号 17
E.Servlet Lecture3_Servlet_XXXXXXXX.java をコンパイル (Compile) する 1) Web Browser: http://isd-si.doshisha.ac.jp/teaching/programming_3/xxxxxx/ 2) Compile_Servlet.jsp に Access する : 1 2 18
E.Servlet Lecture3_Servlet_XXXXXXXX.java をコンパイルする Compile_Servlet.jsp <% String SName = request.getparameter("sname_"), InfoStr="", cmd[]=new String[2]; cmd[0]="javac"; cmd[1]="c:/oracle/ora92/apache/jserv/servlets/"+sname; if ((SName!=null) && (SName.length()>0 )) { try { Runtime rt = Runtime.getRuntime(); out.println("executing <B>'" + cmd[0] + " " + cmd[1] +"'</B> remotely on isd-si.doshisha.ac.jp..."); Process proc = rt.exec(cmd); 4 %> <FORM METHOD="POST" ACTION="Compile_Servlet.jsp"> Servlet name (e.g., HelloWorld.java): <INPUT STYLE="font-size:9.0pt;font-family:Verdana; width:300px" TYPE="text" NAME="SName_" VALUE = ""> <INPUT TYPE = submit VALUE = "Compile"> </FORM> 19
E.Servlet Lecture3_Servlet_XXXXXXXX.java をコンパイルする 3) Servlet のネームを入力する. 4) Compile ボタンを押す. 5) コンパイル結果を確認する. 3 4 5 20
E.Servlet Lecture3_Servlet_XXXXXXXX.java をコンパイルする コンパイル結果 : エラーの例 ( エラー メッセージは赤で表示されています ): 21
E.Servlet をコンパイルする 3) Servlet はコンパイルが出来ましたか? FFFTP Client で Lecture3_Servlet_XXXXXXXX.class ファイルを確認する : Lecture3_Servlet_XXXXXXXX.class? 22
F.Web フォームへ Access Internet Explorer のアドレス バー : http://isd-si.doshisha.ac.jp/teaching/programming_3/xxxxxxxx/lecture3_form1.html XXXXXXXX は学籍番号です 例 :1116171001 等 サーブレット Lecture3_Servlet_XXXXXXXX 呼び出前 サーブレット Lecture3_Servlet_XXXXXXXX 呼び出後 23
課題 Lecture3_Form1.htmlの開発 Lecture3_Servlet_XXXXXXXX.javaを開発 Lecture3_Servlet_XXXXXXXX.classにコンパイル Lecture3_Form1.htmlのアクセス結果 : の締め切りは 5 月 10 日 ( 木曜日 ) 24