# 高度2Bグループワーク ## バッドUI - ゲーム - 登録できたらクリアできるやつ ## メンバー + くめさん + はまなが + ミーマ君 ## 資料共有用URL https://drive.google.com/drive/folders/1dyCWCFI-WvFT92eHixYlPSW54aGgP0st?usp=sharing ## ドキュメント編集用URI [document](https://drive.google.com/open?id=1rZwa6YuZb4DZpV3D9z1E0_jwKLLeigov) ## 機能要件 - 登録機能の提供 - 登録する時に必要なページ - 登録すべきユーザー情報 - ハンドルネーム - 携帯メールアドレス - パスワード* - ニックネーム - メールアドレス* - 携帯電話番号 - プルダウン方式×9 - パスワード確認 - 本名 - 電話番号(自宅) - ユーザーネーム* - 「はい」「いいえ」の位置が場所によってバラバラ - 左右とか上下とか - 利用規約 - 利用規約に同意する必要がありますとしか書かれておらず、どこで同意できるかが分からない - 仮に利用規約を見れたとしても操作性が非常に悪い - プライバシーポリシー - reCAPTCHA - 紛らわしい写真 - 読めない - 文字 or 数字の桁数が非常に多い - ログイン機能の提供 ## 授業で扱ったMVCアーキテクチャとの相違点 * メール送受信 * JavaMain APIという方法 * [oracle公式リファレンス](https://www.oracle.com/webfolder/technetwork/jp/tutorials/obe/java/javamail/javamail.html) * データベース (JDBCの利用) * 認証 ## 必要なもの - 仮登録ページ - 仮登録メール送るページ的なやつ - メールが来た演出? - 画面遷移? - 本登録ページ - ログインページ - 登録完了ページ ## 今すべきこと * ドキュメント * ユースケース図 (くめさん) * クラス図 (みまし) * シーケンス図 (ながはま) ## 提供する機能 - 仮登録 - メールアドレスのみを保持 - 他のデータも入力させるが、使わない - 送信ボタンを押すことで、メール送信に遷移 - メールアドレスと挑戦開始時間(予定)をDBに保存する - メール送信 - 仮登録で得られたメールアドレスを用いてメールを送信する - 本登録 - メールアドレス等の情報を入力させる - 登録ボタンを押すと、DBに保存する - 保存後、登録完了画面が表示される - ログイン - メールアドレスとパスワードの照合を行う - 合ってればログイン成功 - 間違っていれば画面遷移はしない - メールアドレスとパスワード以外の入力項目もあるが、必要なのは実はその二つのみ ## データディクショナリ |データ項目|型|桁数・byte|NOT NULL|PRIMARY KEY|備考| |:-:|:-:|:-:|:-:|:-:|:-:| |ユーザーID|int||○|○|| |ハンドルネーム|varchar|30|||| |ニックネーム|varchar|30|||| |氏名|varchar|30|||| |携帯メールアドレス|varchar|70|||| |メールアドレス|varchar|70|○||メールアドレスだけのテーブルも作る4| |挑戦開始時刻|timestamp||○||| |かかった時間|interval||○||| |電話番号 (自宅) |varchar|15|||入力メソッド未定| |電話番号 (携帯) |varchar|15|||0から9とハイフンを選べるプルダウンをいくつも並べる| |パスワードハッシュ|varchar|15|○||| Data-dic作りながら思ったこと: + ハイフン除いて10段式でもいいのでは? ## データベース設計 まず必要なものは以下のデータベース - 仮登録情報 - 仮登録に必要 - 挑戦開始時間を保持する - ユーザー情報 - ログインに使用 - 仮登録情報から挑戦開始時刻を貰ってくる 仮登録(pre_) |データ項目|カラム名|型|桁数・byte|NOT NULL|PRIMARY KEY| |:-:|:-:|:-:|:-:|:-:|:-:| |仮登録ID|ID|int||○|○| |メールアドレス|email|varchar|70|○|| |挑戦開始時刻|start_time|timestamp||○|| ユーザー情報(user_info) |データ項目|カラム名|型|桁数・byte|NOT NULL|PRIMARY KEY |:-:|:-:|:-:|:-:|:-:|:-:| |ユーザーID|ID|int||○|○| |仮登録ID|pre_ID|int||○|| |ハンドルネーム|handle_name|varchar|30||| |ニックネーム|nickname|varchar|30||| |氏名|name|varchar|30||| |携帯メールアドレス|phone_email|varchar|70||| |かかった時間|recorded_time|interval||○|| |電話番号 (自宅) |home_number|varchar|15|| |電話番号 (携帯) |phone_number|varchar|15|| |パスワードハッシュ|hashed_pass|varchar|15|○|| ## シナリオ - ミス無し仮登録シナリオ - シナリオ概要 - 一切ミスせず仮登録を行う - 事前条件 - アクターのメールアドレスが未登録 - システムはホーム画面を表示している - ステップ 1.アクターは会員登録ボタンを探し出し、クリックする 2.システムは仮登録画面に遷移する 3.アクターはメールアドレス欄を探し出し、メールアドレスを入力する 4.アクターはメールアドレスを入力したのでメール送信ボタンを探し出し、クリックする 5.システムは入力されたメールアドレスに対して、本登録画面に遷移するメールを出す 6.システムは入力されたメールアドレスを仮登録する 7.システムはメール送信完了画面に遷移する - 事後条件 - アクターのメールアドレスが登録済み - システムはメール送信完了画面を表示している - ミス無し本登録シナリオ - シナリオ概要 - 一切ミスせず本登録を行う - 事前条件 - アクターのメールアドレスが登録済み - アクターは本登録画面に遷移するURLが記載されたメールを受け取り済み - ステップ 1.アクターは入力したメールアドレスに届いたメールに書かれたURLを開く 2.アクターは本登録画面で登録すべきアクター情報を全て入力する 3.アクターは入力が完了したので登録ボタンを探し出し、クリックする 4.システムは登録完了画面に遷移する - 事後条件 - アクター情報が登録済み - システムは登録完了画面を表示している - ミス無しログインシナリオ - シナリオ概要 - 一切ミスせずログインを行う - 事前条件 - アクターのメールアドレスが登録済み - システムは登録完了画面を表示している - ステップ 1.アクターはホームに戻るボタンを探し出し、クリックする 2.システムはホーム画面に遷移する 3.アクターはログインボタンを探し出し、クリックする 4.システムはログイン画面に遷移する 5.アクターはパスワードとメールアドレス入力欄をそれぞれ探し出し、入力する 6.アクターはログインボタンを探し出し、クリックする 7.システムはログイン成功画面に遷移する - 事後条件 - システムはログイン成功画面を表示している - 通常ログインシナリオ - シナリオ概要 - ログイン情報の入力ミスをしてからログインに成功する - 事前条件 - アクターのメールアドレスが登録済み - システムはホーム画面を表示している - ステップ 1.アクターはログインボタンを探し出し、クリックする 2.システムはログイン画面に遷移する 3.アクターはユーザーネームとパスワード入力欄をそれぞれ探し出し、入力する 6.アクターはログインボタンを探し出し、クリックする 7.システムはメールアドレスの入力を要求する 8.アクターはメールアドレス入力画面を探し出し、入力する 9.アクターはログインボタンをクリックする 10.システムはログイン成功画面に遷移する - 事後条件 - システムはログイン成功画面を表示している - 本登録挫折シナリオ - シナリオ概要 - 本登録画面において登録ボタンが見つけられずに挫折する - また、その過程で何度かクリックするべきボタンを間違える - 事前条件 - アクターのメールアドレスが未登録 - システムはホーム画面を表示している - ステップ 1.アクターは間違えてログインボタンをクリックする 2.システムはログイン画面に遷移する 3.アクターは戻るボタンを探し出し、クリックする 4.システムはホーム画面に遷移する 5.アクターは会員登録ボタンを探し出し、クリックする 6.システムは仮登録画面に遷移する 7.アクターはメールアドレス、携帯メールアドレス、名前欄をそれぞれ探し出し、入力する 8.アクターは必要な項目を入力したのでメール送信ボタンを探し出し、クリックする 9.システムは入力されたメールアドレスに対して、本登録画面に遷移するメールを出す 10.アクターは入力したメールアドレスに届いたメールに書かれたURLを開く 11.アクターは本登録画面で登録すべきユーザー情報を全て入力する 12.アクターは入力が完了したが、間違ってログインボタンをクリックする 13.システムはログイン画面に遷移する 14.アクターは戻るボタンを探し出し、クリックする 15.システムは本登録画面に遷移する 11.アクターは本登録画面で登録すべきユーザー情報を全て入力する 12.アクターは入力が完了したが、戻るボタンをクリックする 13.システムはホーム画面に遷移する 14.アクターは本登録を中断する - 事後条件 - アクターのメールアドレスが登録済み - システムはホーム画面を表示している ## Ref. - [User Inyerface](https://userinyerface.com/) ``` PageCtrlはdoPostでHttpServletRequest request, HttpServletResponse responseをもらう PageCtrlはrequestの中身を分析する requestの中身はregist用だったので、PageCtrlはRegisterCtrlにrequestごと投げる RegisterCtrlはrequestからregDataを取り出す RegisterCtrlはUserManagerにregDataを渡してDBに保存してもらう ``` ## Java Note ### jsp - `request.setCharacterEncoding("utf-8")`でutf-8に設定すること - `request.getParameter("hoge")`で, urlの`localhost/page/?hoge=fuga`の`fuga`を取得できる - セッションの設定 - session.setAttribute("name", "value") - セッションの取得 - session.getAttribute("name") ### Servlet - `doGet()`はclient(Webブラウザ)からGetリクエストが送られた時にServletで呼び出される - client(Webブラウザ)からの要求を処理するのが`request` - `request.setCharacterEncoding("utf-8")`を設定すること - server(Webサーバ)からの応答を処理するのが`response` - `response.setContentType("text/html; charset=utf-8");` - TODO: これらの設定はwrapすることで解消できそう - アノテーション - `localhost:8080/jsp/`以降のエンドポイント - `@WebServlet("/hoge/fuga")`のように書く ## めるめる https://k11i.biz/blog/2018/06/26/maven-artifacts-for-java9-deprecated-modules/ https://fa11enprince.hatenablog.com/entry/2014/04/13/075248
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up