どこつぶ4

コメント機能

===================================================================================
  プログラムの流れ
===================================================================================
メイン画面(main.jsp)でコメントを入力、ボタンを押下(doPost)
      ↓

サーブレット(Main.java):
  ・コメントを取得、セッションからユーザーを取得、アプリケーションスコープからリストを取得
  ・Mutterにコメントとユーザーを引数にしてMutterをインスタンス化
  ・PostMutterLogicのメソッドでリストにMutterを追加
  ・リストをアプリケーションスコープにセット
  ・main.jspへフォワード
      ↓

メイン画面(main.jsp):
  アプリケーションスコープからリストを取得、表示

===================================================================================
  クラス概要
===================================================================================

---modelパッケージ---
Mutterクラス
  ユーザー名、コメントのフィールド、コンストラクタ、ゲッターだけのJavaBeanクラス
PostMutterLogicクラス
  引数にMutter型とリストを用い、リストにMutterインスタンスを追加するメソッドを持つクラス

---servletパッケージ---
main.java
  更新機能
  アプリケーションスコープからリストの取得
  セッションスコープからユーザーの取得
  Mutterクラスのインスタンス化
  PostMutterLogicを用いたリストへのMutterの追加
  アプリケーションスコープへリストをセット

===================================================================================
  プログラムパーツ
===================================================================================
-リクエストパラメータの取得-
request.setCharacterEncoding("UTF-8");
String text = request.getParameter("text");

-アプリケーションスコープの取得、さらにリストの取得-
ServletContext application = this.getServletContext();
List mutterList =
  (List) application.getAttribute("mutterList");

-セッションスコープからユーザーインスタンスを取得-
HttpSession session = request.getSession();
User loginUser = (User)session.getAttribute("loginUser");

-リクエストスコープから取得したコメントとセッションスコープから取得したユーザーインスタンスの名前
を用いてMutterインスタンスを作成。
それをアプリケーションスコープから取得したリストにPostMutterLogicのメソッドを用いて追加-
Mutter mutter = new Mutter(loginUser.getName(),text);
PostMutterLogic postMutterLogic = new PostMutterLogic();
postMutterLogic.execute(mutter, mutterList);

--アプリケーションスコープに保存
application.setAttribute("mutterList", mutterList);

-フォワード-
RequestDispatcher dispatcher =
  request.getRequestDispatcher("/WEB-INF/jsp/main.jsp");
dispatcher.forward(request, response);

---フロント側-----------------------------------------------------------------------

-スコープからの取得-

<%
  User loginUser = (User) session.getAttribute("loginUser");
  List mutterList=
    (List) application.getAttribute("mutterList");
  String errorMsg=(String)request.getAttribute("errorMsg");
%>

-更新処理-

更新

-通常通りのフォーム-
-拡張for文によるコメントの表示- <% for(Mutter mutter : mutterList){%>

<%= mutter.getUserName() %>:<%= mutter.getText() %>

<% } %> ※スクリプトレットとHTMLが混在して分かりにくい ------------------------------------------------------------------------------- JSTLによる記述

さん、ログイン中 ログアウト

更新

${errorMsg}

: