LoginSignup
0
0

More than 1 year has passed since last update.

Mr.Nam 先生の講義要約 Chapter 2, 14-26

Posted at

14番 サブレットとJSP(2)
有効範囲(scope)と属性(attribute)
HTTP特徴-状態情報保存X(Stateless)
したがって、貯蔵所が必要(Stateful)-状態情報保存ができます。

4つの貯蔵所(アクセス範囲、生存期間によって区分)
貯蔵所はMap形態(Key:属性、Value:属性値)

Mapに読み込み、書き込み可能。
読み:getAttribute()
書き方:setAttribute()
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

15番 サブレットとJSP(3)
URLパターンの種類と優先順位
1.exactmapping(正確)

2.pathmapping(経路マッピング)

3.extensionmapping(拡張子マッピング)

4.defaultmapping(デフォルトマッピング、すべてのアドレス)

  • URL pattern : /
  • マッチングURL:http://localhost/ch2/~~~~~~~~~
    ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

16番 サブレットとJSP(4)

Filter
共通の要請前処理と応答後の処理に使用。ロギング、エンコード(変換)など。
重複コード分離
DispatcherServlet、AOPに似ている。

処理手順1
フィルター1個で処理

-->1.要請を受ければFilterで前処理
-->2.サブレット呼び出し
-->3.サブレットで処理
-->4.Filterで後処理をして回答

処理手順2
フィルター2つで処理

-->1.要請を受ければFilter1で前処理
-->2.Filter2呼び出し
-->3.Filter2で前処理
-->4.サブレット呼び出し
-->5.サブレットで処理
-->6.Filter2で後処理
-->7.Filter1で後処理をして応答
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

17番 @RequestParam@ModelAttribute
@ Request Param
@RequestParam(required=false)は省略可能。必須入力不要。
@RequestParam(required=true)は省略不可。 必須入力が必要
パラメータがStringのとき、매媒介変数がintのときの2つがある
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

18番 @RequestMapping
@ModelAttribute
適用対象をModelのプロパティで自動追加するアナテーション
返却タイプまたはコントローラメソッドのパラメータに適用可能
キー値を省略すると、タイプの頭文字を小文字にしてキーとする。

媒介変数、返却タイプに@ModelAttributeを付けると、呼び出しと保存が不要になる。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

19番 会員登録画面を作成する
servlet-context.xml:web関連設定ファイル
root-context.xml:non-web関連設定ファイル
registerForm.jsp
会員加入画面
registerInfo.jsp
会員登録情報
RegisterController.java
コントローラー。registerForm.jsp、registerInfo.jspをマッピング
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

20番 @GetMapping, @PostMapping (1)  
pom.xml
ジャババージョン、スプリングバージョンの変更可能。
修正後Maven-UpdateProject

servlet-context.xml
Controllerでメソッドが単にGET方式でviewにURLを接続するだけで、他にすることがないときは
setvlet-context.xmlにview-controllerとして登録して使用可能。

User.java
registerFormで入力された値をuserとして収める役割。
getter/setter作成が必要
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

21番 @GetMapping, @PostMapping (2)
@RequestMappingのURLパターン
優先順位(1→2→3)(Servletと同じ)
1.exactmapping:正確に一致
2.pathmapping:経路マッピング
3.extensionmapping:拡張子マッピング
?は一文字、**は複数文字、**は下位経路を含む。
URLエンコード-パーセントエンコード
URLに含まれるnon-ASCII文字を文字コード(16進数)文字列に変換
(ex. Park jinseong -> %...%...)
URLインコーディング!=Base64(6bitずつ切ってA-Z,a-z,0-9,=,/と表現)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

22番 redirectとforward

redirectとforwarの処理過程を比較
redirect
クライアントから手動でwrite.jspへ要請(request)。
サーバから300番台応答ヘッダー(Redirect)で応答。
クライアントから自動的にlogin.jspへGET要請。
(最初手動でGET/POST要請と関係なく、Redirectは無条件GET要請で送る)
(リクエスト2番、応答度2番)
forward
クライアントからwrite.jspへ要請。
write.jspでlogin.jspでrequest、responseを保存して伝達。
login.jspでクライアントに応答。
(リクエスト1番、回答2番)
requestはModel
write.jspはController
long.jspはview
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

23番 クッキー(Cookie)とは?
クッキーとは?
名前と値のペアで構成された小さな情報。アスキー文字のみ。
サーバから生成後、送信、ブラウザに保存。 有効期限以降自動削除。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

24番 セッション(Session)-理論
セッションとは?
お互いに関連する要請を一つにまとめたもの-クッキーを利用
browserごとに個別リポジトリ(sessionのオブジェクト)をサーバから提供(1:1)
(クッキー:ブラウザに保存、セッション:サーバに保存)

セッションの生成過程
ブラウザが要請すると、サーバーが無条件セッションオブジェクト(保存所)を作る
セッションidが含まれたクッキーを生成してブラウザに送り、ブラウザにクッキーが保存
ブラウザから要請を送る際、セッションid(J SESSION ID)が入ったクッキーを一緒に送る
サーバはJ SSESION IDで確認
同じPCでも他のブラウザなら他のSESSION IDを送る
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

25番 セッション(Session)-実習(1)
ホームでBoardを押すとBoardControllerがログインの有無を確認
ログインされていればboardList.jspに移動
ログインしていなければloginForm.jspへのリダイレクト
loginForm.jspで入力したid、pwdをLoginControllerが確認
一致すればホームに移動
一致しなければ再びloginForm.jspへのリダイレクト
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

26番 セッション(Session)-実習(2)
index.jspでBoardを押すとBoardControllerでログインの有無を確認。
ログインされていればboardList.jspに移動。
ログインしていなければloginForm.jspへのリダイレクト。
loginForm.jspで入力したid、pwをLoginCollerで確認。
id、pwdが一致するとboardList.jspに移動。
一致しなければloginForm.jspへのリダイレクト。

loginForm.jspからboardList.jspに移動するには、"/board/list"をBoardCollerから持って来なければならない。
URLを得る方法はrequest.getRequestURL()、request.getHeader("refer")がある。
受け取った値をinputタックにhiddenタイプで保存して送る。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0