2008年10月1日水曜日

header部の条件分岐

ユーザ名、権限はsessionにしまっておくとして、他にはどんな条件があるのかな?
それぞれ、どこにパラメータしまっといたらいいのかな。
session, request, , ...

認証処理の流れ

・servletは値を受け取って認証処理するクラスに渡す
・認証処理クラスはDAOにbean返させる、認証チェック、servletに可否を渡す
・servletは結果次第でそれぞれのJSPにforward
・成功用JSPはuseBean?
てゆう流れのがいいのかな。ロジックとコントローラと分けた感じだ。

【ログインしているかしていないか&ユーザ権限の種類】の状態保持

ログインしたら->sessionにしまっておく
ログアウトしたら->sessionの属性変更(削除)

・とりあえずsessionに。
>>この辺りまでどうにか。
・権限別にJSP表示
・ログインできなかったとき
・(このあたりでServletが大変なことになってきたら下記処理)

insert したらそのレコードのidを返してほしい

returning
postgresとoracleでは使える
(香川さん情報)

Filter

sessionやrequestからgetAttribute
何か処理
(基本的にservletでしてる前処理)
必要なら条件分岐でデフォルトとは別のページ(エラーページなど)へforward
chain.doFilter(req, res);
(次のfilterがあれば移動、もうなければもともとのアクセス先(servlet)へ)
(チェーンの順番はweb.xmlで指定。)

ServletからJSPにBeanを渡す。

・BeanのクラスはJSPのpageディレクティブのimport属性でimportする必要がある。
なので、Beanは無名パッケージではなく、何かしら名前のあるパッケージに入れる必要がある。
このとき、Servletはそのパッケージに入れると使えなくなるので入れない。
Servletの最初でそのパッケージをimportする。
・request.setAttribute("u", u)の属性名とのオブジェクトIDはそろえる。
・Beanは、sessionとかrequestに乗っていれば、JSPがincludeタグで入れ子になっていても、JSP間で渡す処理をする必要はない。
Beanが必要なJSPでuseBeanタグを書けばいい。

JSP表示

・forwardするとき、ServletContextは通しても通さなくてもいい。
通す必要が今回出てくるのかは分からないけれど。ロギングしないし。
・getRequestDispatcher()の引数は、"/ファイル名"でいいっぽい。
"/WebContent/ファイル名"だとうまくいかなかった。。