- - PR -
Webアプリケーション filter使用時の処理について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-05-18 21:04
Struts1.2.7およびTomcat5.5.15を使用してWebアプリケーションを作成しています。
filterクラスを使用して以下のようなログイン状況の処理を行おうと思います。 アクセスしてきたユーザのログイン状況を調べ、 1.ログイン済みならばリクエストしてきたページを表示する 2.ログイン済みでなければログインページを表示する しかし、以下のようにfilterを作成するとログインページは表示されますが、そのページで使用している画像などは表示されません。 画像取得のリクエストをサーバに送った場合にもログインページへのフォワード処理が実行されて画像などの情報がクライアントに返されないためと思われます。 現在はgetRequestURL()でリクエストのURLを取得して".do"の文字を含むURLの場合にのみフォワード処理をさせていますが、みなさんはどのように処理していますか? 他にいい方法があれば教えてください。 ------------web.xml-------------- <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> <filter> <filter-name>MyFilter</filter-name> <filter-class>MyFilter</filter-class> </filter> <filter-mapping> <filter-name>MyFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app> --------------MyFilter.java--------------------- import java.io.*; import javax.servlet.*; public class MyFilter implements Filter { public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { //sessionからログイン情報取得 HttpSession session = ((HttpServletRequest)request).getSession(true); String LOGIN_FLAG = (String)session.getAttribute("LOGIN"); //ログイン済みの場合はそのまま処理続行 if(LOGIN_FLAG != null && LOGIN_FLAG.equal("LOGIN"); chain.doFilter(req, res); //ログイン済みでない場合はログインページへ else { RequestDispatcher rd = request.getRequestDispatcher("/login_page.do"); rd.forward(request, response); } } public void init(FilterConfig config) throws ServletException { } public void destroy() { } } | ||||
|
投稿日時: 2006-05-18 22:11
全てのURLではなくて、*.doをフィルタの対象のURLとすればいいのではないでしょうか。 | ||||
|
投稿日時: 2006-05-18 23:12
返信ありがとうございます。 なるほど、、そうですね。気づきませんでした。。 ずっとクラス内で処理させようとしてましたので盲点でした。。。 ありがとうございます! [ メッセージ編集済み 編集者: linx 編集日時 2006-05-18 23:13 ] | ||||
|
投稿日時: 2006-05-19 09:20
フィルタで画面表示する際は画像のURLの指定方法に注意してください。
URLが階層になっているときに相対パスだと失敗することがあります。 /hoge/index.do ← アクセスしたURL <img src="image/hoge.jpg"> ← 画像への相対パス /hoge/image/hoge.jpg ← 対象となる画像 失敗例) /hoge/piyo/index.do ← アクセスしたURL /hoge/piyo/image/hoge.jpg ← 対象となる画像 (階層が違う!) linkタグでのcssファイルやjsファイルの指定なども注意が必要です。 Filterから出力するページで外部リソースを含む場合は 絶対パスで扱うのが無難でしょう。 # Webシステムの設計はURLをどうするかでまず悩む |
1