2010-06-02 8 views
51

Quelle est la différence entre un Servlet et Filtre? Que recommandez-vous d'utiliser pour l'autorisation des pages?Servlet vs Filter

Répondre

89

Utilisez un Filter lorsque vous souhaitez filtrer et/ou modifier les demandes en fonction de conditions spécifiques. Utilisez un Servlet lorsque vous souhaitez demandes de contrôle, prétraitement et/ou post-traitement.

Le Java EE tutorial mentionne ce qui suit sur les filtres:

Un filtre est un objet qui peut transformer l'en-tête et le contenu (ou les deux) d'une requête ou d'une réponse. Les filtres diffèrent des composants Web car les filtres ne créent généralement pas de réponse. Au lieu de cela, un filtre fournit des fonctionnalités qui peuvent être "attachées" à n'importe quel type de ressource Web. Par conséquent, un filtre ne devrait pas avoir de dépendances sur une ressource web pour laquelle il agit comme un filtre; De cette façon, il peut être composé avec plus d'un type de ressource web.

Les tâches principales qu'un filtre peut effectuer sont les suivantes:

  • Interrogez la demande et agir en conséquence.
  • Empêche la paire requête-réponse de passer plus loin.
  • Modifiez les en-têtes et les données de la demande. Vous le faites en fournissant une version personnalisée de la demande.
  • Modifiez les en-têtes et les données de réponse. Vous le faites en fournissant une version personnalisée de la réponse.
  • Interagir avec des ressources externes.

Pour autorisation, un Filter est le mieux adapté. Voici un exemple de coup d'envoi de base de la façon dont une demande de contrôles de filtre pour l'utilisateur connecté:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException { 
    if (((HttpServletRequest) request).getSession().getAttribute("user") == null) { 
     // User is not logged in. Redirect to login page. 
     ((HttpServletResponse) response).sendRedirect("login"); 
    } else { 
     // User is logged in. Just continue with request. 
     chain.doFilter(request, response); 
    } 
} 
+0

merci pour la clarification +1 pour cela –

+0

Le lien fourni est très bon. merci pour cela aussi. –

15

Les filtres sont les mieux adaptés pour l'autorisation. C'est parce qu'ils peuvent être configurés pour s'exécuter pour toutes les pages d'un site. Vous n'avez donc besoin que d'un seul filtre pour protéger toutes vos pages.

+0

Toutes les pages = les pages qui peuvent nécessiter une connexion. – UnKnown

1

Utiliser le filtre que nous pouvons améliorer servlet performance-- lorsque la demande vient nous pouvons effectuer des pré-traitement sur demande, si satisfait demande nous peut transmettre à servlet sinon donner un message au client fournir des informations appropriées dans la demande ..