質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.05%

JavaBeansに関して

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 762

kaksjdh

score 8

以下の掲示板システムをJavaBeansを使ったプログラムに作り直したいと思っています。  

「発言者ID」、「タイトル」、「本文」の3つのStringフィールドを持つ、「Message」クラスを作成し、 掲示板データの読み書きは、このクラスのオブジェクトを介して行いたいと考えています。  

掲示板データの読み出しは、コレクションフレームワークを使って、Messageクラスの可変長配列にデータを格納。  

構成は以下の通り。  
Message.Java  
:「発言者ID」「タイトル」「本文」の3つのStringフィールドを持つ  
コンストラクタでこれら3つの値を受け取り、フィールドに格納  

BbsBean.java  
:「掲示板へのMessage書き込み」および「掲示板データの読み出し」の2つのメソッドを作成。  
「書き込み」メソッドは、引数にMessageクラスのオブジェクトを1つ受け取り、「bbs_history.txt」に内容を書き込む。  
「読み出し」メソッドは、引数なしで、「bbs_history.txt」の内容を読み出し、フィールド変数「messageList」にデータを格納。  

3行1セットでMessageオブジェクトを生成→コレクション変数にadd。  
ファイルの内容を全て読み終えたら、messageListをreturn。  

BbsServlet.java  
:クライアントからのリクエストを解析し、適切な処理の呼び出しを行う。  
getメソッドでリクエストがきた場合、BbsBeanクラスをnewしてrequestスコープとして保存し、Bbs.jspを呼び出す。  
postメソッドでリクエストがきた場合、BbsBeanクラスをnewして「書き込み」処理を呼び出す。その後、getメソッドと同じ処理を実行。  
Bbs.jsp  
:requestスコープでBbsBeanオブジェクトを生成し、「読み出し」メソッドを呼び出して、掲示板データを取得。  
取得した掲示板データ(コレクション)をforループで回し、メッセージをHTMLに出力。  

Article.java  

public class Article {  

   private String id;  

   private String title;  

   private String body;  




   public Article( String id, String title, String body ) {  

   setSenderID( id );  

   setTitle( title );  

   setBody( body );  

   }  

   public String getSenderID() {  

       return id;  
   }  

   public String getTitle() {  

       return title;  
   }  

   public String getBody() {  

       return body;  
   }  


   public void setSenderID( String string ){  

       id = string;  
   }  

   public void setTitle( String string ) {  

       title = string;  
   }  

   public void setBody( String string ) {  

       body = string;  
   }  

  

BordServlet.java  

import java.io.IOException;  
import java.io.PrintWriter;  
import java.io.FileWriter;  
import java.io.FileReader;  
import java.io.BufferedWriter;  
import java.io.BufferedReader;  
import java.io.InputStreamReader;  
import java.io.FileInputStream;  

import java.util.ArrayList;  
import java.util.Optional;  
import java.util.List;  

import javax.servlet.ServletContext;  
import javax.servlet.ServletException;  
import javax.servlet.annotation.WebServlet;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  

public class BordServlet extends HttpServlet{  
   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{  

       response.setContentType("text/html; charset = UTF-8");  

       String id = request.getParameter("id");  
       String title = request.getParameter("title");  
       String body = request.getParameter("body");  

       PrintWriter out = response.getWriter();  

       try{  
           FileWriter fw = new FileWriter(request.getRealPath("/WEB-INF/classes/bbs_history.txt"),true);  
           String crlf = System.getProperty("line.separator");  

           fw.write("<br>" + "SenderID  " + id + crlf);  
           fw.write("Title  " + title + crlf);  
           fw.write("Body  " + body + crlf);  
           fw.close();  


       }catch(IOException e){  
           System.out.println(e);  
       }  
       response.sendRedirect("Bord");  
   }  

   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{  
       response.setContentType("text/html; charset = UTF-8");  

       FileReader fr = new FileReader(getServletContext().getRealPath("/WEB-INF/classes/bbs_history.txt"));  
       BufferedReader br = new BufferedReader(fr);  
       StringBuffer sb = new StringBuffer();  

       int count = 0;  
       String str = null;  

       while((str = br.readLine()) != null){  
           count++;  

           sb.append("");  

           if((count % 3 ) == 1){  
               sb.append("");  
           }else if ((count % 3) == 2){  
               sb.append("");  
           }else if ((count % 3) == 0){  
               sb.append("");  
           }  
           sb.append(str);  
           sb.append("<br>");  
       }  

       br.close();  

       PrintWriter out = response.getWriter();  

       out.println("<html>");  
       out.println("<head>");         
       out.println("<title>BordServlet</title>");  
       out.println("</head>");  
       out.println("<body>");  
       out.println("<h1>BBS</h1>");  
       out.println("<form action = 'Bord' method = 'POST'>");  
       out.println("<table>");  
       out.println("<tr><th>SenderID</th><td><input type = text name = 'id'></td></tr>");  
       out.println("<tr><th>Title</th><td><input type = text name = 'title'></td></tr>");  
       out.println("<tr><th>Body</th><td><textarea name = 'body' rows = 5></textarea></td></tr>");  
       out.println("</table>");  
       out.println("<br>");  
       out.println("<input type = submit value = 'Post'>");  
       out.println("</form>");  
       out.println("</br>");  
       out.println(sb.toString());  
   }  
}  


ご教示お願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • Stripe

    2017/08/16 23:27

    結局のところ何が問題なんですか?

    キャンセル

  • 退会済みユーザー

    2017/08/24 12:40

    複数のユーザーから「意図的に内容が抹消された質問」という意見がありました
    解決後に編集機能を用いて質問内容を改変し関係のない内容にしたり、内容を削除する行為は禁止しています。
    投稿していただいた質問は、後に他の誰かが困ったときに助けになる情報資産になると考えるからです。
    「質問を編集する」ボタンから編集を行い、他のユーザにも質問内容が見えるように修正してください。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.05%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る