22 (266) / Web PF-Web Web Web Web / Web Web PF-Web Web Web Web CGI Web Web 1 Web PF-Web Web Perl C CGI A Pipe/Filter Architecture Based Software Generator PF-Web for Constructing Web Applications. Tomohiro Matsuzaki, Tetsuya Suzuki, Takehiro Tokuda,, Department of Computer Science, Graduate School of Information Science and Engineering, Tokyo Institute of Technology., Vol.19, No.4(2002), pp.22 38. [] 2001 4 11. Web Web Web [8] CGI, HTML Web Web Web PF-Web CGI PF-Web Web / [7] Web CGI Web CGI Web Web [3] [12]
(267) Vol. 19 No. 4 July 2002 23 2 Web Web Web PF-Web Web PF-Web Perl CGI PostgreSQL Web Web CGI PF-Web Web CGI Web 3 1. CGI Java Servlet [9], JSP [10], ASP [4], PHP [11] CGI Web 4 CGI Web 2. JavaScript HTML Java Applet HTML Web 3. Java RMI CORBA Web Web PF-Web CGI Web CGI PF-Web CGI PF-Web 2 CGI Web 3 PF-Web 4 Web 5 CGI 6 7 PF-Web 8 2 CGI Web CGI Web CGI Web Web
24 (268) HTML CGI HTML Web Web Web HTTP [1] 1 HTTP Web 1 CGI Web 1 HTML <INPUT TYPE=HIDDEN> [6] HTML 2 Web Web 3 PF-Web PF-Web Web / Web Web Web Web Web 3.1: Web 4 1. ID/ PIN 2. 3. 4. 2 HTML < <
(269) Vol. 19 No. 4 July 2002 25 2 Web () 1 Web 3.1 Web Web 1 4 2 3.1.1 Web 4 Web Web Web Web Web Web Web Web Web PF-Web 2 Web Web Web Web Web 3.1.2 Web Web 3.2: Web 2 Web 3.1.2 Web ADD1 ADD1 Register ID user list PIN Confirm1 user list Error1 Confirm1 Error1 Web
26 (270) 3.4 3.1.2 Web Web Web Web Web Web Web Web maxlength options Web Web Web Web 1 Web 3 Web Web 3.4 3 Web 4 Web 3.3: Register Confirm1 2 Web Web 4 Register ID 3 maxlength user list Confirm1 EM PIN PIN ADD1 Confirm1 EMAIL1 EMAIL1 PIN 3.4: Web 5 Cancel BOOKINGLIST
(271) Vol. 19 No. 4 July 2002 27 5 Web Web Web 4 Error1 Web Web ( 6) 6 1 Cancel 3 DAY, TIME, ROOM Web DAY( ), TIME( ), ROOM( ) 3 DAY, TIME, ROOM 3.1.3 PF-Web Web 3.2 / Web Web Web PF-Web Web / X Web A Web B X, A, B F X F X P A F X P B ( 7) Web Web Web Web 1 1 1 Web Web
28 (272) 7 / Web 9 8 ADD1 3.5: ADD1 4 ADD1 8 3.3 ( 9) 3.4 10 ADD1b a = f(a 1,a 2,...,a n)(n 0) f n a a i(1 i n) g(a 1,a 2,...,a n) g n a i(1 i n) Web 1 PF-Web 3.6: ADD1 ADD1 2 8
(273) Vol. 19 No. 4 July 2002 29 1: process add1 { 2: Error1 if i.id eq "" i.pw eq "" 3: i.em eq "" db_ntuples( 4: db_select("id",i.user_list, 5: "WHERE ID= %s ",i.id) 6: ) > 0 with { 7: o.user_list=i.user_list; 8: o.desc=" " 9: } 10: 11: Confirm1 otherwise with { 12: pin=generatepin(i.id,i.pw,i.em) 13: 14: o.em=i.em; 15: o.pin=pin; 16: o.user_list= 17: db_insert(i.user_list, 18: "VALUES( %s, %s, %s,%d)", 19: i.id,i.pw,i.em,pin) 20: } 21: } 12 PF-Web 11 ADD1 ADD1b 10 i. o. i.user list, o.user list user list ADD1 2 11 process { with { 1 = ; : m = 1 = ; : n = } ( 1 ) } if otherwise 13 Web 11 ADD1 2 2-9 11-20 2-6 eq PF-Web Perl 4 17 16 db select, db insert SQL C printf %
30 (274) 4 PF-Web PF-Web 12 Java 2 Platform, Standard Edition Java CGI Perl PostgreSQL [5] Web Web 13 Web CGI Web URL PF-Web Web CGI Web Web Web Web CGI Web HTML CGI Web Web Web Web Web HTML Web 4.1: Confirm1 Web Confirm1 Web 14 CGI ADD1 Web PIN PIN EM #EM EM EM 2 <BR> Web 5 CGI PF-Web CGI Web CGI CGI ADD1 15 if then Web Web Web HTML <, >, & Web ( 15 28 32 )
(275) Vol. 19 No. 4 July 2002 31 1: <HEAD><TITLE>confirm1</TITLE></HEAD> 2: <BODY> 3: #EM <BR> 4: <FORM METHOD=post ACTION="http://ikura/~tmatsu/roombooking/email1.cgi"> 5: <INPUT TYPE=HIDDEN NAME="_session" VALUE=" session "> 6: <INPUT TYPE=HIDDEN NAME="EM" VALUE=" EM "> 7: <INPUT TYPE=HIDDEN NAME="PIN" VALUE=" PIN "> 8: <INPUT TYPE=SUBMIT VALUE="SUBMIT"> <BR> 9: </FORM> 10: </BODY> 11: </HTML> 14 Confirm1 Web ID CGI Web ID CGI ID PF-Web Web Web Web CGI 14 Web 6, 7 ( 15 34-42 ) Web PF-Web Web Web 2 PF-Web 16 X,Y,Z Web A,B,C Web C X,Z E Y Web A Y Y E Z X Z Y PF-Web
32 (276) 01: &readformdata; 02: &opendb; 03: ($id,$nextinstance,$guard)=&session_topcgi( roombooking, localhost, tmatsu ); 04: 05: if($i_id eq "" $i_pw eq "" $i_em eq "" 06: &db_ntuples(&db_select("id",$i_user_list,"where ID= %s ",$i_id))>0) { 07: () 08: } 09: else { 10: $v_pin=&f_generatepin( $i_id, $i_pw, $i_em ); 11: 12: $o_em = $i_em; 13: $o_pin = $v_pin; 14: $o_user_list = &db_insert( $i_user_list, 15: "VALUES ( %s, %s, %s,%d)", $i_id, $i_pw, $i_em, $v_pin ); 16: if (($o_user_list eq $i_user_list)) { 17: %OUT=&session_intermediateFilter($id,$nextinstance,$guard); 18: } 19: else { 20: %OUT=&session_guardedFilter($id,$nextinstance,$guard); 21: } 22: &_gen_confirm1_page; 23: } 24: 25: &closedb; 26: exit; 27: 28: sub _gen_confirm1_page { 29: $OUT{ EM }=$o_em; 30: $OUT{ PIN }=$o_pin; 31: &genhtml( /home/decanter/tmatsu/ikura_html/roombooking/confirm1.html,%out); 32: } 33: 34: sub readformdata { 35: %VAR=&decodeFormData; 36: $i_em=$var{ EM }; 37: &checkscalar($i_em,80); 38: $i_pw=$var{ PW }; 39: &checkscalar($i_pw,40); 40: $i_id=$var{ ID }; 41: &checkscalar($i_id,20); 42: } 43: 44: () 15 CGI ADD1() Web Y X Y X PF-Web
(277) Vol. 19 No. 4 July 2002 33 17 Web CGI Web 6 16 Web Web Web 1 CGI Web CGI CGI Web Web Web 17 4 Web user list booking list 2 email 18 cancel Web TABLE
34 (278) 18 Web Web 7 PF-Web PF-Web PF-Web Web 7.1 PF-Web Web PF-Web Perl CGI Web 2 PF-Web Perl 2 PF-Web PF-Web Web Perl Perl 3 CGI.pm Perl CGI HTML MyCGI.pm CGI ID Pg.pm PostgreSQL PostgreSQL Perl PF-Web Web 19 PF-Web Perl CGI Perl Web HTML Web 19 PF-Web Perl 77% 23% Perl CGI
(279) Vol. 19 No. 4 July 2002 35 19 1. PF-Web Web Web PF-Web 2. Perl PF-Web 2 1. CGI PF-Web Web PF-Web B CGI 2. Web Web Perl 4 Web Web Web CGI Web Web Web 7.2 Web 7.2.1 CGI 2 CGI Web PF-Web Web C Perl
36 (280) PF-Web Web PF-Web CGI Web HTML HTML SQL Web PF-Web HTML Web PF-Web Web Web Web Web Web Web Web Web Web Web Web Web Web CGI Cookie HTTP HTML Web PF-Web Web Web PF-Web 7.2.2 CGI CGI Java Servlet ASP, JSP, PHP Web Cookie CGI PF-Web 7.2.1 Web Web Web CGI 7.2.3 Web Microsoft Visual InterDev [4] Web Web Web Web Web Web
(281) Vol. 19 No. 4 July 2002 37 Visual InterDev Web Web Web Autoweb System [2] Web PF-Web Autoweb System PF-Web Web 1 T-Web [3] Web Web 7.3 PF-Web Web Web Web 1 Web Cookie Web PF-Web Web ID Web Web CGI PF-Web Perl CGI Web CGI Java Servlet ASP Web PF-Web Perl Java C HTML Java Servlet ASP Web Java Servlet Java JDBC HTML Servlet HttpServletRequest HttpServletResponse 8 Web /
38 (282) Web PF-Web PF-Web Web CGI Web Web Web CGI Web Web CGI [ 1 ] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P. and Berners-Lee, T. : Hypertext Transfer Protocol HTTP/1.1, 1999. RFC2616. [ 2 ] Fraternali, P. and Paolini, P. : A Conceptual Model and a Tool Environment for Developing More Scalable, Dynamic, and Customizable Web Applications, Lecture Notes in Computer Science, Vol. 1377(1998), pp. 421 435. [ 3 ] Jamroendararasame, K., Suzuki, T. and Tokuda, T. : A Generator of Web-based Transaction Systems Using Web Transition Diagrams, 17, 2000, pp. E6 2. [ 4 ] Microsoft Corporation : MSDN Library. http:// www.microsoft.com/japan/developer/library/. [ 5 ] PostgreSQL Global Development Group : PostgreSQL. http://www.postgresql.org/. [ 6 ] Raggett, D., Hors, A. L. and Jacobs, I. : HTML 4.01 Specification, 1999. http://www.w3.org/tr/ html4/. [ 7 ] Shaw, M. and Garlan, D. : Software architecture: Perspectives on an emerging disclipline, Prentice-Hall, 1996. [ 8 ] Stein, L. D. : Web Security: A Step-by-Step Reference Guide, Addison-Wesley, 1998. [ 9 ] Sun Microsystems, Inc. : Java Servlet Technology. http://java.sun.com/products/servlet/. [10] Sun Microsystems, Inc. : JavaServer Pages Technology. http://java.sun.com/products/jsp/. [11] The PHP Development Team : PHP: Hypertext Processor. http://www.php.net. [12],, : / Web, 17, 2000, pp. E6 1.