2017-02-23 8 views
1

Je web.xml comme ceci:url-pattern dans web.xml ne pas reconnaître plusieurs URL

<servlet> 
    <servlet-name>MyDisplayCourse</servlet-name> 
    <servlet-class>edu.itn.controller.MyDisplayCourse</servlet-class> 
</servlet> 

et servlet-mapping pour le servlet est:

<servlet-mapping> 
    <servlet-name>MyDisplayCourse</servlet-name> 
    <url-pattern>/admin/displaystudent</url-pattern>  
    <url-pattern>/displaystudent</url-pattern>  
</servlet-mapping> 

Quand j'utilise:

<url-pattern>/displaystudent</url-pattern> 

Il trouve le servlet MyDisplayCourse, mais quand j'utilise ajouter/admin/

<url-pattern>/admin/displaystudent</url-pattern> 

Ceci affiche le code d'erreur 404 dans mon application Web. Quelqu'un peut-il m'aider pourquoi ne supporte pas l'URL comme/admin/displaystudent mais ne supporte qu'une seule URL comme/displaystudent seulement.

+0

Copie possible de [plusieurs URLs pour la même servlet] (http://stackoverflow.com/questions/8995353/many-url-pattern-for-the-same-servlet) –

+0

Ce n'est pas la question que je pose . Je veux utiliser/admin/displaystudent au lieu de/displaystudent seulement. –

+0

Comment accédez-vous à votre application? Pouvez-vous fournir l'URL aussi? –

Répondre

1

Il n'y a pas de problème avec url-pattern

le problème est avec votre code dans DisplayStudent.java

remplacer

RequestDispatcher rd=request.getRequestDispatcher("StudentTable.jsp");

avec

RequestDispatcher rd=request.getRequestDispatcher("/StudentTable.jsp");

ServletRequestSpec

Si le chemin commence par un «/» il est interprété comme par rapport à la racine

contexte actuel sinon il concaténer avec chemin relatif dans votre cas «/admin/StudentTable .jsp »

code suivant est la mise en œuvre de getRequestDispatcher

@Override 
public RequestDispatcher getRequestDispatcher(final String path) { 
String realPath; 
if (path.startsWith("/")) { 
    realPath = path; 
} else { 
    String current = exchange.getRelativePath(); 
    int lastSlash = current.lastIndexOf("/"); 
    if (lastSlash != -1) { 
     current = current.substring(0, lastSlash + 1); 
    } 
    realPath = CanonicalPathUtils.canonicalize(current + path); 
} 
return new RequestDispatcherImpl(realPath, servletContext); 
} 
+0

enfin, merci. Kudos homme –