Cet article présente les règles de correspondance des servlets d'URL et les partage avec vous. Les détails sont les suivants:
Tout d'abord, nous devons clarifier quelques règles déroutantes:
1. Les règles de correspondance dans le conteneur servlet ne sont ni les jokers simples ni les expressions régulières, mais les règles spécifiques. N'utilisez donc pas de règles de correspondance d'expression ou d'expression régulière pour afficher le schéma d'URL d'un servlet.
2. À partir du servlet 2.5, un servlet peut utiliser plusieurs règles de motif d'URL. La balise <servlet-mapping> déclare les règles de correspondance correspondant au servlet, et chaque balise <url-sattern> représente 1 règle de correspondance;
3. Lorsque le conteneur servlet reçoit une demande d'URL initiée par le navigateur, le conteneur utilisera l'URL pour soustraire le chemin de contexte de l'application actuel et utilise la chaîne restante comme mappage du servlet. Si l'URL est http: // localhost: 8080 / appdemo / index.html et que son contexte d'application est AppDemo, le conteneur supprimera http: // localhost: 8080 / appdemo et utilisera la pièce / index.html restante pour faire la correspondance du mappage du servlet.
4. Le processus de correspondance de cartographie de la méthode URL a la priorité
5. Et lorsqu'un servlet correspond avec succès, les servlets restants ne seront pas prêts attention.
1. Quatre règles de correspondance
1 match exact
Les éléments configurés dans <URL-Pattern> doivent correspondre exactement à l'URL.
<Servlet-mapping> <Servlet-Name> MyServlet </ Servlet-Name> <Url-Pattern> /User/UserS.html </ url-Pattern> <Url-Pattern> /Index.html </rl-Pattern> </ Url-Pattern> /User/AdDuser.Action </rl-Pattern> </vrletn>-Mapping>
Lors de la saisie des URL suivantes dans le navigateur, ils seront appariés au servlet
http: // localhost: 8080 / appdemo / user / users.html
http: // localhost: 8080 / appdemo / index.html
http: // localhost: 8080 / appdemo / user / addUser.action
Avis:
http: // localhost: 8080 / appdemo / user / addUser / est une URL illégale et ne sera pas reconnu comme http: // localhost: 8080 / appdemo / user / addUser
De plus, l'URL ci-dessus peut être suivie par toutes les conditions de requête, et sera appariée, telle que
http: // localhost: 8080 / appdemo / user / addUser? username = tom & age = 23 sera adapté au myServlet.
Match à 2 chemins
Une chaîne qui commence par le caractère "/" et se termine par "/ *" est utilisé pour la correspondance de chemin
<servlet-mapping> <servlet-name> myServlet </ servlet-name> <url-stern> / user / * </ url-stern> </ servlet-mapping>
Le chemin commence par / user /, et le chemin suivant peut être arbitraire. Par exemple, les URL suivantes seront appariées.
http: // localhost: 8080 / appdemo / user / users.html
http: // localhost: 8080 / appdemo / user / addUser.action
http: // localhost: 8080 / appdemo / user / updateUser.actionl
3 correspondance d'extension
Des cordes commençant par "*." sont utilisés pour la correspondance d'extension
<servlet-mapping> <servlet-name> myServlet </ servlet-name> <url-potern> *. jsp </ url-potern> <url-sattern> *. Action </ url-potern> </vrlett-mapping>
Ensuite, toute demande d'URL avec l'extension JSP ou l'action correspondra, par exemple, l'URL suivante sera appariée
http: // localhost: 8080 / appdemo / user / users.jsp
http: // localhost: 8080 / appdemo / tohome.action
4 match par défaut
<servlet-mapping> <servlet-name> myServlet </ servlet-name> <url-stern> / </url-sattern> </ serplet-mapping>
2. Commande de correspondance
1. Match exact, servlet-mapping1: <url-potern> /user/users.html </ url-potern>, servlet-mapping2: <url-sattern> / * </ url-potern>. Lorsqu'une demande http: // localhost: 8080 / appdemo / user / users.html Comes, servlet-mapping1 correspond et ne correspond plus à servlet-mapping2
2. Path Matching, correspond d'abord sur le chemin le plus long, puis correspondez au chemin le plus court servlet-mapping1: <url-sattern> / user / * </ url-stern>, servlet-mapping2: <url-sattern> / * </ url-sattern>. Lorsqu'une demande http: // localhost: 8080 / appdemo / user / users.html Comes, servlet-mapping1 correspond et ne correspond plus à servlet-mapping2
3. Extension Matching, servlet-mapping1: <url-sattern> / user / * </ url-sattern>, servlet-mapping2: <Url-potern> *. Action </ url-sattern>. Lorsqu'une demande http: // localhost: 8080 / appdemo / user / addUser.Action vient, servlet-mapping1 correspond et ne correspond plus à servlet-mapping2
4. La correspondance par défaut n'est pas trouvée dans le servlet ci-dessus, alors utilisez le servlet par défaut et configurez-le comme <url-sattern> / </url-sattern>
Problèmes à noter
1 chemin d'assurance et de correspondance d'extension ne peut pas être réglé en même temps
Il n'y a que trois méthodes de correspondance, soit la correspondance de chemin (en commençant par le caractère "/" et se terminant par le "/ *"), correspondant d'extension (en commençant par le "*."), Ou correspondant exact. Les trois méthodes de correspondance ne peuvent pas être combinées, alors ne le prenez pas pour acquis pour utiliser les caractères génériques ou les règles régulières.
Par exemple, <URL-Pattern> / User / *. Action </ url-sattern> est illégal
Remarquez également: <url-sattern> / aa / * / bb </url-sattern> est une correspondance et légale exacte. * Voici la signification du match sauvage.
2 "/ *" et "/" ont des significations différentes
Tomcat configure le servlet par défaut dans le fichier% Catalina_Home% / conf / web.xml, et le code de configuration est le suivant
<VerTlet> <Servlet-Name> Default </ Servlet-Name> <Servlet-Class> org.apache.catalina.servlets.defaultServlet </ Servlet-Class> <Init-Param> <Am param-Name> Debug </onsam-name> <param-value> 0 </ param-valent> </it init-param> <IniT-Param> <Am param-Value> False </ Param-Value> </ Init-Param> <Choad-on-Startup> 1 </ Load-on-Startup> </Servlet> <Serplet> <Serplet-Name> JSP </vrlet-name> <Servlet-Class> Org.apache.jasper.servlet.jspservlet </servlet-class> <IniT-Param> <Am param-Value> False </ Param-Value> </ Init-Param> <Init-Param> <AmAm-Name> XpowedBy </ Param-Name> <Amam-Value> False </ Param-Value> </Init-Param> <Loach-on-Startup> 3 </ Load-on-Startup> </Servlet> <Servlet> <Serplet-name> <Url-Pattern> / </ url-Pattern> </ Servlet-Mapping> <! - Les mappages du servlet jsp -> <servlet-mapping> <servlet-name> jsp </ servlet-name> <url-potern> *.
Iv. Donner un exemple
| URL de cartographie | Servlet correspondant |
| /Bonjour | servlet1 |
| / bbs / admin / * | servlet2 |
| / bbs / * | servlet3 |
| * .jsp | servlet4 |
| / / | servlet5 |
Le résultat du mappage de demande réel
Supprimer les chemins restants du chemin de contexte | Servlet qui gère la demande |
/Bonjour | servlet1 |
/ bbs / admin / connexion | servlet2 |
/bbs/admin/index.jsp | servlet2 |
/ bbs / affichage | servlet3 |
/bbs/index.jsp | servlet3 |
/ bbs | servlet3 |
/Index.jsp | servler4 |
/hello/index.jsp | servlet4 |
/hello/index.html | servlet5 |
/nouvelles | servlet5 |
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.