130 likes | 189 Views
QuestionnairTool の開発 . 中村太一. QuestionnairTool. アンケート製作者は Web 上からアンケートを生成( HTML )する。 アンケート回答者は Web 上からアンケートに回答する アンケートの設問、回答は全て DataBase に登録される。 DB+Servlet+JSP で開発。
E N D
QuestionnairToolの開発 中村太一
QuestionnairTool • アンケート製作者はWeb上からアンケートを生成(HTML)する。 • アンケート回答者はWeb上からアンケートに回答する • アンケートの設問、回答は全てDataBaseに登録される。 • DB+Servlet+JSPで開発。 • 「JSPによるWeb開発」翔泳社、の第10章FaqToolを参考URL: http://www.shoeisha.com/book/hp/pc/book/JSP/index.htm原書のサポートページ(英語)http://www.manning.com/Fields/index.html
Title ・・・・・ このアンケートの説明とか ・・ Q1: 設問1 A1:回答(チェックボックス、リスト、TextAreaなど) Q2:設問2 A2:回答(チェックボックス、リスト、TextAreaなど) ・ 目的のアンケート 生成するアンケート。 JSPで作られるHTML • Title ( title ) • 作成日時 ( date) • 説明 ( comment ) • 対象とする回答者 ( target ) • 設問と解答の選択肢(複数) • 例 Infoseek ・
Menu 1アンケートの製作者を選択 Menu 2 どのアンケートに答えるか選択 Qstnn アンケート に回答 Save保存、終了 回答用Webページ • 「回答者」 • <Menu1>アンケート製作者の一覧(リンクしてある)から選ぶ。 • <Menu2>Menu1で選んだ製作者が作ったアンケートの一覧がリンクつきで表示されるので一つ選ぶ • <Qstnn>アンケートに答えて「送信ボタン」を押す。不備があれば、戻される(不備がある部分がマーキングされる)。 • <Save> • 無事送信されたことを報告する。 • 「プログラム」 • <Menu1>アンケート製作者のリストをDataBaseから受け取って選択できるようにする。 • <Menu2>Menu1で選んだ製作者が作ったアンケートの一覧を表示し、選択させる。 • <Qestnn>アンケートの本体。Menu2で選んだアンケートの内容をDetaBaseから受けとってHTMLにする。 送信されたアンケートに不備があった場合、その部分をマーキングしてもう一度表示、このとき以前回答者が入力したデータも入れておく。 • <Save>登録されたことの報告とか
管理用Webページ <Authentication>認証用ページ。IDとPasswordで個人を特定する。Table”Users” <NewAcount>新規UserだったらIDとPassを決めてもらい Table”Users”に追加する。 <List>Userの製作したアンケートが一覧として表示される。(チェックボックスで選択)「編集」「新規製作」「結果表示」から選ぶ。 <Edit>既存のアンケートを修正する。製作用ページには修正されるアンケートのデータが反映されていなければならない。 <NewQstnn>新しくアンケートを作る。 <Result>集計結果を表示する。グラフなどを出せるといいかも。 Appletで表示 ORServletでグラフを生成。 <Save>変更内容を表示して保存してよいかの確認を求める。 < Authentication > 認証userの特定 新規 <NewAcount> 新規Userの登録 既存User < List > そのUserの作ったアンケートの一覧表示 [結果表示] 「編集」 「新規」 から選ぶ <Edit> 選択したアンケートの編集 <NewQstnn>新規に製作 <Result> 選択したアンケートの結果を見る <Save> 確認と保存
JSPの制御 Menu.jsp <Commandパターン> ・JSP上のボタンには、それぞれに対応するCommandオブジェクトがServlet内にあり。 CommandオブジェクトはJSPのフォームデータから受け取った情報を元に、DBやSessionを更新したり、次に行くJSPを決定するなどの機能を提供する。 ・これにより、JSPに次のJSPへのリンクを書かないので独立性がたかまり、管理がしやすくなる。 JSP A JSP B buttonA buttonB Servlet buttonAが押されると 起動するCommandA buttonBが押されると 起動するCommandB DB
必要なテーブル 1 • 必要なテーブルは5つ • 認証用にアンケート製作者のIDとPassの入っている“Users” • アンケートの名前、製作者、製作日時、対象、説明などの入った “Questionnairs” • アンケート内の個々の質問を収める “Questions”。 • アンケート(個々の質問ではない)回を回答した人の情報、答えたアンケート、日時などを収める“Responces”テーブル • 個々の質問の回答を収める“Answers”テーブル。
Users テーブルの構成 Questionnairs Responses Questions Answers
Repository データベースを操作する全てのメソッドを提供 p.264Repository データベースを操作する全てのメソッドを提供 p.264 Tableに対するBeanが5つあるので、Beanごとにクラスを分ける。 必要なmethod:get(単数), get(全て), update, put, remove の5つ UserRepository のコード Repository UserBean getUser(int id) UserBean[] getAllUsers() ・ ・ QstnnrBean getQstnnr(int id) QstnnrBean[] getAllQstnnr() ・ ・ 25メソッド QstnnrRepository のコード
MSG:新規登録します name pass Pass(確認 Ok Authentication (認証) Authentication.jsp Newacount.jsp name 新規 pass 新規 Ok すでに使われている パスワード違い アンケートの一覧表示
Questionを生成する 下の図はInfoseekのアンケートを見本にしてアンケートの個々の質問(Question)を生成している。 QuestionMaker.jspではJSPのSessionBeanを使ってサーバ上に状態を記憶している。 現在生成中のQuestion その他のQuestion
HTMLの生成 JSP(QuestionnairHTML.jsp) Servlet SessionBean ・UserBean ・QuestionnairBean -int ID -int makerID -String title -String target -String comment -String date ・Vector( QuestionBean ) -int ID -int number -int parent -String question -String optiontype -String[] selections ・その他。 • QnnrViewer.jspの諸要素 • Title ( title ) • 作成日時 ( date) • 説明 ( comment ) • 対象とする回答者 ( target ) • 非表示( id, makerid ) • 設問と解答の選択肢(複数) SessionBeanから HTMLを生成 SessionBeanをロードする Title date, comment, target, JSP側でSessionを読むので特に何もしない でよい。 Q1: 設問1 A1:回答(チェックボックス、TextAreaなど) Q2:設問2 HTML生成例
今後の課題 • 判り易いインターフェース。 • セキュリティーを考慮する。 • JSP内でfor文やIf文の多用しているので、ラグライブラリなどを使ってロジックと表示を分離させる。 • 結果を集計して図などを表示するときにどうするか? • Servletで図を描画してイメージファイルとしてクライアントに送る。 • Appletにデータを渡してクライアント側で図を描画する。 • エクセル形式で出力する ・・・など。