2010-09-08 5 views
0

Pour mon application Web, j'ai créé une page de connexion. Pour bloquer l'accès aux autres pages, je configure un filtre. Mais tout en exécutant l'application Web, il donne Servlet class com.pricar.grid.AuthenticationFilter is not a javax.servlet.Servlet.Comment faire fonctionner un filtre de servlet?

Je ne peux pas non plus obtenir le bon résultat.

Voici mon code: config filtre dans 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> 
<display-name>Staff Management</display-name> 
<filter> 
    <filter-name>AuthenticationFilter</filter-name> 
    <display-name>AuthenticationFilter</display-name> 
    <description></description> 
     <filter-class>com.pricar.grid.AuthenticationFilter</filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>AuthenticationFilter</filter-name> 
    <url-pattern>/StaffManagementSystem/*</url-pattern> 
    </filter-mapping> 
    <servlet> 
     <servlet-name>dwr-invoker</servlet-name> 
     <display-name>DWR Servlet</display-name> 
     <description>Direct Web Remoter Servlet</description> 
     <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> 
     <init-param> 
      <param-name>debug</param-name> 
      <param-value>true</param-value> 
     </init-param> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>dwr-invoker</servlet-name> 
    <url-pattern>/dwr/*</url-pattern> 
    </servlet-mapping> 
    <welcome-file-list> 
     <welcome-file>UserLogin.html</welcome-file> 
    </welcome-file-list> 
    </web-app> 

Le code du filtre est:

package com.pricar.grid; 

public class AuthenticationFilter implements Filter { 
public AuthenticationFilter() { 
    // TODO Auto-generated constructor stub 
} 
public void destroy() { 
    // TODO Auto-generated method stub 
} 
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
    WebContext ctx = WebContextFactory.get(); 
    HttpServletRequest req = ctx.getHttpServletRequest(); 
    HttpSession session = req.getSession(false); 
    String name = (String) session.getAttribute("userName"); 
    System.out.print ("Within Simple Filter ... "); 
    System.out.println ("Filtering the Request ..."); 
    System.out.print ("Within Simple Filter ... "); 
    System.out.println ("Filtering the Response ..."); 
    if (name == null){ 
     //I have to redirect to the person to index page. 
     ((HttpServletResponse) response).sendRedirect("index.html"); 
    } 
    chain.doFilter(request, response); 
} 
public void init(FilterConfig fConfig) throws ServletException { 
    // TODO Auto-generated method stub 
} 
} 

L'URL que je suis en train de tester est http://localhost:8080/StaffManagementSystem/EmployeeManagement.html

J'utilise la jetée en tant que serveur.

Toute suggestion serait appréciable !!! Merci d'avance !!


Mise à jour finale:

Tous les changements mentionnés, ont été réalisées. Son être compilé. Je ne peux même pas obtenir la sortie "sysout" dans ma console. C'est simplement passer l'URL.

+0

Avez-vous des servlets applications dans web.xml –

+0

b: @ Matt maintenant mis à jour ma question Check it out !!! –

Répondre

2

Si votre URL est http://localhost:8080/StaffManagementSystem/EmployeeManagement.html ne signifie pas que vous utiliser ce modèle pour votre cartographie filtre:

<url-pattern>/StaffManagementSystem/*</url-pattern> 

Et vous pouvez avoir une erreur dans votre web.xml ailleurs. N'avez-vous pas utilisé votre filtre comme servlet dans votre configuration?


Votre méthode doFilter() fait un chain.doFilter (request, response); avant même de vérifier les valeurs. Vous devriez enlever cette ligne aussi. À la fin de votre doFilter() fait une redirection de toute façon. Vous devez supprimer l'intégralité de la pièce else.


et la mise en œuvre Filter signifie que votre doit écrire la méthode:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 

(pas un avec HttpServlet ******)


Vous devez éviter d'utiliser le système .out dans une application web. Au lieu de cela, choisissez les enregistreurs et vérifiez les journaux de votre conteneur de servlet.

+0

@Colin HEBERT:. ea .. je l'ai vu ... et l'ai supprimé.Je pensais que c'est le faiseur de problème.est-ce exact ?? !!! –

+0

Il y a encore un autre problème majeur dans le code – BalusC

+0

J'ai mis à jour la réponse –

1

Je ne sais pas mais je pense que vous avez un problème ici:

if (nom == null) {// je dois rediriger vers la personne à la page d'index. ((HttpServletResponse) demande) .sendRedirect ("index.html ");

Un changement qui à la réponse

Questions connexes