ネットでおしゃべり



Beans を使って、複数のクライアントが「ネットでおしゃべり」します。
このプログラムを起動するには apache-tomcat のインストールが必要です。

「ネットでおしゃべり」のプログラムを PHP で作成しています。
お友達と同時にページに接続(離れていてもOK)して「おしゃべり」を楽しんで下さい。 (●^o^●)

前田稔の超初心者のプログラム入門

プログラムの作成

  1. プロジェクトのディクトリ構成です。
    C:\tomcat\webapps\ に beans\ のフォルダーを作成してプロジェクトを格納します。
    +:フォルダー, ・:ファイル, *:生成されるファイルです。
    +beans
        +WEB-INF
            +classes
                +mybean
                    ・listbean.java
                    *listbean.class
            +lib
        ・chat.jsp
    
  2. ArrayList の Beans Object Class「listbean.java」です。
    listbean.java は幾つかのページで紹介していますが、プロジェクト毎に違いがあるので注意して下さい。
    //★ ArrayList の Beans    前田 稔
    package mybean;
    
    import java.util.*;
    import java.io.Serializable;
    
    public class listbean implements Serializable
    {   private ArrayList  list;
        private String  str;
    
        // Constructor
        public listbean()
        {   list= new ArrayList();
            this.list.add("Message を交換します");
            this.list.add("名前と Message をタイプして下さい");
        }
        // Get, Set Method
        public void setStr(String m)
        {   this.str= m;
            this.list.add(m);
        }
        public String getStr()  {  return this.str;  }
        public void setList(ArrayList lst)  {  this.list= lst;  }
        public ArrayList getList()  {  return this.list;  }
    }
    
  3. listbean.class を使って、Message を交換する chat.jsp のソースコードです。
    <jsp:useBean id="arraylist" scope="application" class="mybean.listbean" />
    <jsp:setProperty name="arraylist" property="*"/>
    <%
      String name= request.getParameter("name");
      String msg= request.getParameter("msg");
    
      if (name!=null)   name=new String(name.getBytes("8859_1"),"Shift_JIS");
      if (msg!=null)    msg=new String(msg.getBytes("8859_1"),"Shift_JIS");
      ArrayList<String> list= arraylist.getList();
    %>
    
    <html>
      <body>
        <h1>Message を表示</h1>
        <%
            if (name!=null) list.add(name + ":" + msg);
            if (list.size()>10) list.remove(0);
            arraylist.setList(list);
            for(int i=0; i<list.size(); i++)
            {   out.println(list.get(i) + "<br>");  }
        %>
        <h2>Message を入力して下さい</h2>
          <form action="chat.jsp">
            <input type="text" name="name"
            <% out.println("value=\"" + name + "\"><br><br>"); %>
            <input type="text" name="msg"><br><br>
            <input type="submit" value="submit">
          </form>
      </body>
    </html>
    
  4. listbean.java をコンパイルして listbean.class を作成して下さい。
    C:\Users>cd C:\tomcat\webapps\beans\WEB-INF\classes
    C:\tomcat\webapps\beans\WEB-INF\classes>javac myclass\listbean.java
  5. "C:\tomcat\bin\tomcat7w.exe" を選択して、管理者として実行から apache-tomcat を起動します。
    WWW ブラウザを起動して下記の URL を張り付けて下さい。
    名前と Message をタイプすると、リストに追加されます。
    http://localhost:8080/beans/chat.jsp
  6. 最初とは別のウインドウから、同じように接続して下さい。
    名前と Message をタイプすると、先に表示されたメッセージリストに追加されます。
    交互にメッセージをタイプすると、おしゃべりを楽しむことが出来ます。

プログラムの説明

  1. お友達と同時にページに接続して、リアルタイムに「ネットでおしゃべり」を楽しんで下さい。
    コンピュータ相手のゲームでは、Java Applet のようなクライアントサイドのプログラムにはかないません。
    所が今回のように「複数のクライアントが情報を交換する」となるとサーバーサイドでなければ出来ないのです。
    JSP の面目躍如といった所でしょうか。 <(`^´)>
  2. listbean.java は ArrayList を使って String を管理する Beans です。
    listbean の説明は「プログラム入門(Java)/ArrayList の Beans」を参照して下さい。
    Constructor では、案内メッセージを登録しています。
    setStr() は ArrayList に String を追加登録するメソッドです。
    getStr() は String str; の値をリターンするメソッドです。
    setList() は ArrayList に値を設定するメソッドです。
    getList() は ArrayList の値をリターンするメソッドです。
  3. chat.jsp では listbean.class を使ってメッセージを管理します。
    このプログラムでは、複数のクライアントが同時に接続するので scope="application" にします。
    scope="page" では、毎回領域がクリアされます。
    <jsp:useBean id="arraylist" scope="application" class="mybean.listbean" />
  4. property="*" で全てのプロパティに値を設定します。
    永続化されているときは、保存した状態が復元されます。
    このとき領域を定義しているプロパティに対して setメソッドを用意する必要があるようです?。
    <jsp:setProperty name="arraylist" property="*"/>
  5. login.jsp に渡された name, msg を取得して Shift_JIS に変換します。
    getList() で ArrayList を取得します。
        String name= request.getParameter("name");
        String msg= request.getParameter("msg");
    
        if (name!=null)   name=new String(name.getBytes("8859_1"),"Shift_JIS");
        if (msg!=null)    msg=new String(msg.getBytes("8859_1"),"Shift_JIS");
        ArrayList<String> list= arraylist.getList();
        
  6. name + msg を ArrayList に追加します。
    メッセージが増えすぎると見にくくなるので、10件を超えた分は削除しています。
    更新した ArrayList を setList() で listbean に格納します。
    ArrayList に登録されているメッセージを表示します。
        if (name!=null) list.add(name + ":" + msg);
        if (list.size()>10) list.remove(0);
        arraylist.setList(list);
        
  7. FORM から name とメッセージをタイプして submit をクリックして送信します。
    name は次のステージに移っても、再入力する必要が無いように引き継いでいます。
        <input type="text" name="name"
        <% out.println("value=\"" + name + "\"><br><br>"); %>
        

Java Game Program