アプレットのURL接続
out.print("val="); st1=textField1.getText(); out.print(st1); out.print("&name="); st2=nameField.getText(); out.print(st2);
package jconnect; import java.awt.*; import java.awt.event.*; import java.applet.*; import java.io.*; import java.net.*; import java.util.*; /** * <p>タイトル: </p> * <p>説明: </p> * <p>著作権: Copyright (c) 2003</p> * <p>会社名: </p> * @author 未入力 * @version 1.0 */ public class Applet1 extends Applet { private boolean isStandalone = false; PrintWriter out; private Button button1 = new Button(); private TextField textField1 = new TextField(); private TextField nameField = new TextField(); private TextArea textArea1 = new TextArea(); private Label message = new Label(); TextField textFieldID = new TextField(); Label label1 = new Label(); Label label2 = new Label(); //引数値の取得 public String getParameter(String key, String def) { return isStandalone ? System.getProperty(key, def) : (getParameter(key) != null ? getParameter(key) : def); } //アプレットのビルド public Applet1() { } //アプレットの初期化 public void init() { try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } //コンポーネントの初期化 private void jbInit() throws Exception { button1.setLabel("send"); button1.setBounds(new Rectangle(28, 152, 67, 27)); button1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { button1_actionPerformed(e); } }); this.setLayout(null); textField1.setText("3000"); textField1.setBounds(new Rectangle(26, 115, 70, 24)); nameField.setText("Akiko"); nameField.setBounds(new Rectangle(25, 82, 65, 21)); textArea1.setText("textArea1"); textArea1.setBounds(new Rectangle(121, 17, 128, 194)); message.setBackground(Color.white); message.setText("message"); message.setBounds(new Rectangle(24, 189, 77, 23)); textFieldID.setText("ga"); textFieldID.setBounds(new Rectangle(30, 31, 56, 22)); label1.setText("ゲーム名"); label1.setBounds(new Rectangle(26, 9, 54, 19)); label2.setText("名前、得点"); label2.setBounds(new Rectangle(12, 58, 74, 20)); this.add(textArea1, null); this.add(textFieldID, null); this.add(label1, null); this.add(message, null); this.add(button1, null); this.add(textField1, null); this.add(nameField, null); this.add(label2, null); } //アプレットの情報取得 public String getAppletInfo() { return "アプレット情報"; } //引数情報の取得 public String[][] getParameterInfo() { return null; } void button1_actionPerformed(ActionEvent e) { String st0,st1,st2; String otxt=""; try{ String myurl="http://www.ccad.sccs.chukyo-u.ac.jp/"; myurl+="cgi-bin/ranking/ranking.cgi"; URL url=new URL(myurl); //appletと同じサーバーでないと接続できない //URL url=new URL("http://www.yahoo.co.jp/"); HttpURLConnection connection=(HttpURLConnection)url.openConnection(); //connection.setRequestMethod("PUT"); connection.setDoOutput(true); if(connection.getDoOutput()) { System.out.println("connected:"+myurl); message.setText("connected"); } else message.setText("connection failed"); out=new PrintWriter(connection.getOutputStream()); out.print("id="); st0=textFieldID.getText(); out.print(st0); out.print("&val="); st1=textField1.getText(); out.print(st1); out.print("&name="); st2=nameField.getText(); out.print(st2); System.out.println("post:"+st0+":"+st1+":"+st2); out.close(); // ソースの表示 String str; BufferedReader urlIn; //次を実行しないと、cgiが実行されない!!!! cgiでprintしなくても同じ //JDK1.3/1.4も無関係 //しかし、javacでコンパイルすると、以下は無関係!! System.out.println("top10\n"); urlIn = new BufferedReader(new InputStreamReader(connection.getInputStream())); //この表示は不要 while ((str = urlIn.readLine()) != null) { System.out.println(str); otxt += str+"\n"; } }catch(IOException exception){ exception.printStackTrace(); } textArea1.setText(otxt); } void close_actionPerformed(ActionEvent e) { out.close(); } }
#!/usr/bin/perl #use strict; use CGI::Carp qw(fatalsToBrowser); #定義 { # #$ENV{'REQUEST_METHOD'}="GET"; #$ENV{'QUERY_STRING'}="id=ga&name=kita&val=3000"; $date=localtime; %form={}; $pval="";$pname="";$id=""; $mrg=1; $lcount=0; my $postData = &get_PostData; my $hash_ref = &get_FormData($postData); my %form = %$hash_ref; #FORMデータ取得 #print msgfile "form.$postData\n"; $id=$form{'id'}; $pval=$form{'val'}; $pname=$form{'name'}; %temp={}; #idのファイルを開く open(msgr,$id."rank.txt"); print "Content-Type: text/html\n\n";#ヘダ出力 while(<msgr>){ chomp; ($fval,$fname)=split(/:/);#名前と得点を分離 if($fval<$pval && $mrg==1 ) {#ファイルの値と取得データを比較 push(@temp,"$pval:$pname\n");#取得データを書き出す print "$pval:$pname\n"; $mrg=0;$lcount++; } push(@temp,"$fval:$fname\n");#ファイルのデータをコピー print "$fval:$fname\n"; $lcount++; if($lcount >= 10) {last;}#データ数10で終了 } if (($mrg==1) && ($lcount<10)) {#ファイルのデータ数10以下の場合 push(@temp,"$pval:$pname\n"); print "$pval".':'."$pname\n"; } close msgr; open(msgw,">".$id."rank.txt");#ファイルに書き戻す foreach $val (@temp){ print msgw $val; } close msgw; } #データを受け取る sub get_PostData{ my $data; # GETメソッドの場合 if( $ENV{'REQUEST_METHOD'} eq "GET" ) { $data = $ENV{'QUERY_STRING'}; # POSTメソッドの場合 } else { read( STDIN, $data, $ENV{'CONTENT_LENGTH'}); } return $data; } #FORMデータをデコードする sub uri_decode{ my $str=shift; $str=~tr/+/ /; #$str=~s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2',$1)eg; return $str; } #データを記録 sub get_FormData{ my $data=shift; my @pair=split(/&/,$data); my %hash; foreach(@pair){ my($key,$value)=split(/=/); $hash{&uri_decode($key)}=&uri_decode($value); } return \%hash; }