2010-12-09 29 views
1

J'ai actuellement ce qui suit comprend au sommet de tous mes fichiers jsp:application Java Web - refactor inclure scriptlets dans une meilleure approche de la pratique

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

Les jsps ont scriptlets que 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., respectivement. L'approche scriptlet ci-dessus a fonctionné correctement mais maintenant que j'ai un meilleur serveur configuré et que je peux utiliser un fichier web.xml, j'ai refacturé mon application aux meilleures pratiques. Ce qui précède est criant FIXME! Devrais-je enquêter sur les auditeurs, les filtres, ou mon approche actuelle est-elle adéquate?

=== ==== de la

<%@ 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); 
    } 
} 
%> 

Répondre

1

Cela ressemble à un bon à remplacer par un filtre. Créez la classe de filtre et reférez-la avec un motif dans votre fichier web.xml. Les scriptlets ne devraient pas être utilisés à moins que toutes les autres options aient été raisonnablement épuisées.

+0

Un auditeur d'une nouvelle création de session HTTP ne serait-il pas un meilleur choix pour un login de cookie? Il semble plus de tuer pour continuer à vérifier si STKUserSession est null sur chaque accès à la page. Il devrait être fait une fois par visiteur, non? – jeff

+0

Il devrait être une fois par visiteur si vous pouvez garantir qu'il sera là si la session n'est pas nulle. Vous pourriez vous retrouver avec une session valide qui ne contient pas STKUserSession en fonction de l'implémentation. Mais en général, oui, je suis d'accord qu'un auditeur sur une nouvelle session pourrait être meilleur. –