J'ai configuré manuellement web.xml
pour ma candidature. Maintenant, je suis confronté à des problèmes lors de l'exécution de mon application. J'essaie d'accéder à ma servlet
à partir de ma page jsp
. Mais, il jette l'erreur en tant que page not found
.
Les servlets sont placés sous l'emplacement du dossier
<application folder>/WEB-INF/classes/<package>
Alors, quelles devraient être les entrées pour les servlets dans url-pattern
et servlet-mapping
. Ainsi, servlet
peut être accessible via une URL.
url-pattern
est utilisé dans web.xml
pour mapper votre servlet
vers une URL spécifique. Veuillez voir ci-dessous le code XML, un code similaire que vous pouvez trouver dans votre web.xml
fichier de configuration.
<servlet>
<servlet-name>AddPhotoServlet</servlet-name> //servlet name
<servlet-class>upload.AddPhotoServlet</servlet-class> //servlet class
</servlet>
<servlet-mapping>
<servlet-name>AddPhotoServlet</servlet-name> //servlet name
<url-pattern>/AddPhotoServlet</url-pattern> //how it should appear
</servlet-mapping>
Si vous changez url-pattern
de AddPhotoServlet
de /AddPhotoServlet
à /MyUrl
. Ensuite, AddPhotoServlet
servlet peut être accessible à l'aide de /MyUrl
. Bon pour des raisons de sécurité, lorsque vous souhaitez masquer l'URL de votre page.
Java Servlet url-pattern
Spécification:
- Une chaîne commençant par un caractère '/' et se terminant par un '/ *' Le suffixe est utilisé pour le mappage de chemin.
- Une chaîne commençant par un préfixe '*.' est utilisée comme mappage d'extension.
- Une chaîne contenant uniquement le caractère '/' indique le servlet "par défaut" de l'application. Dans ce cas, le chemin de la servlet est l'URI de la demande moins le chemin du contexte et les informations sur le chemin sont nulles.
- Toutes les autres chaînes sont utilisées uniquement pour les correspondances exactes.
Référence: spécification Java Servlet
Vous pouvez également lire ceci Basics of Java Servlet
Le servlet-mapping a deux balises enfant, url-pattern et servlet-name. url-pattern spécifie le type d'URL pour lequel le servlet indiqué dans nom-servlet doit être appelé. Sachez que le conteneur utilisera la casse pour les comparaisons de chaînes pour la correspondance de servlets.
Première spécification de url-pattern
Un fichier web.xml
Pour le contexte de serveur sur le conteneur de servlets sur le serveur .com correspond au modèle dans <url-pattern>/status/*</url-pattern>
comme suit:
http://server.com/server/status/synopsis = Matches
http://server.com/server/status/complete?date=today = Matches
http://server.com/server/status = Matches
http://server.com/server/server1/status = Does not match
Deuxième spécification de url-pattern
Un contexte situé sur le chemin d'accès/exemples sur l'agent à example.com correspond au modèle de <url-pattern>*.map</url-pattern>
comme suit:
http://server.com/server/US/Oregon/Portland.map = Matches
http://server.com/server/US/server/Seattle.map = Matches
http://server.com/server/Paris.France.map = Matches
http://server.com/server/US/Oregon/Portland.MAP = Does not match, the extension is uppercase
http://example.com/examples/interface/description/mail.mapi =Does not match, the extension is mapi rather than map`
Troisième spécification de url-mapping
, Un mappage contenant le motif <url-pattern>/</url-pattern>
Correspond à une demande si aucun autre motif ne correspond. C'est le mappage par défaut. Le servlet associé à ce modèle est appelé le servlet par défaut.
Le mappage par défaut est souvent dirigé vers la première page d'une application. Le fait de fournir explicitement un mappage par défaut garantit également que les demandes d'URL mal formées dans le retour de l'application sont gérées par l'application plutôt que de renvoyer une erreur.
L'élément servlet-mapping ci-dessous mappe l'instance de servlet server
avec le mappage par défaut.
<servlet-mapping>
<servlet-name>server</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Pour le contexte qui contient cet élément, toute demande qui n'est pas gérée par un autre mappage est transmise au servlet server
.
Et surtout, nous devrions connaître la règle pour le mappage du chemin d’URL
Référence RL Pattern