2010-12-09 8 views
1

ベストプラクティスのアプローチにスクリプトレットが含まれていますJava Webアプリケーション - リファクタリング私は現在、以下は私のJSPファイルのすべての先頭に含まれてい

<%@ include file="inc/inc_cookie_login.jsp"%> 
<%@ include file="inc/inc_protect_page.jsp"%> 
<%@ include file="inc/inc_log_access.jsp"%> 

JSPはスクリプトレットcheck for cookie and set a user object in the session if cookie exists, prevents access to the jsp unless a session has been set, write to a text file the User IP, name, page accessed, etc.,それぞれのことを持っています。

上記のスクリプトレットのアプローチはうまくいきましたが、私はより良いサーバーをセットアップしてweb.xmlファイルを利用できるようになりましたので、ベストプラクティスにリファクタリングしています。上記はFIXMEを叫んでいます!リスナー、フィルタ、?を調査する必要がありますか、現在のアプローチは適切ですか?

=== inc_cookie_login.jspは====

<%@ page import="model.STKUser"%> 
<%@ page import="model.STKUserCookie"%> 
<%@ page import="data.STKUserDAO"%> 

<% 
if (request.getSession().getAttribute("STKUserSession") == null) { 
    STKUserCookie userCookie = new STKUserCookie(request); 
    String userBadge = userCookie.getUserID(); 
    STKUserDAO userDAO = new STKUserDAO(); 
    STKUser user = userDAO.getUser(userBadge); 
    if (user != null) { 
     user.setIpAddress(request.getRemoteAddr()); 
     userDAO.updateLoginCount(user); 
     request.getSession().setMaxInactiveInterval(36000); //set to 10 hours 
     request.getSession().setAttribute("STKUserSession", user); 
    } 
} 
%> 

答えて

1

これは、フィルタによって置き換えられるために良いもののように見えます。フィルタクラスを作成し、web.xmlにパターンで参照します。他のすべてのオプションがかなり使い果たされていない限り、スクリプトレットは使用しないでください。

+0

新しいHTTPセッション作成のリスナーは、クッキーのログインに適していませんか?すべてのページ・アクセスでSTKUserSessionがヌルであるかどうかを確認し続けるのは殺し過ぎのようです。それは訪問者ごとに1回、右か? – jeff

+0

セッションがnullでない場合には、それがそこにあることを保証できる場合は、訪問者ごとに1回である必要があります。実装に応じて、STKUserSessionを含まない有効なセッションになる可能性があります。しかし、一般的に、ええ、私は新しいセッションのリスナーがより良いことに同意するでしょう。 –

関連する問題