В этой статье представлены правила сопоставления URL-Pattern Satchers of Servlets и делится ими с вами. Детали следующие:
Во -первых, нам нужно уточнить несколько запутанных правил:
1. Соответствующие правила в контейнере сервлета не являются ни простыми подстановочными знаками, ни регулярными выражениями, а конкретными правилами. Так что не используйте подстановочные знаки или правила соответствия регулярного выражения, чтобы просмотреть URL-паттерн сервлета.
2. Начиная с сервлета 2.5, сервлет может использовать несколько правил URL-Pattern. Тег <servlet> тег объявляет правила сопоставления, соответствующие сервлету, и каждый тег <Url-pattern> представляет 1 правило сопоставления;
3. Когда контейнер сервлета получает запрос URL -адреса, инициированный браузером, контейнер будет использовать URL -адрес для вычитания пути контекста текущего приложения и использовать оставшуюся строку в качестве сопоставления сервлета. Если URL -адрес http: // localhost: 8080/appdemo/index.html, а его контекст приложения - Appdemo, контейнер удалит http: // localhost: 8080/appdemo и использует оставшуюся часть/index.html для составления картирования сервиса.
4. Процесс сопоставления сопоставления URL-Pattern имеет приоритет
5. И когда сервлет успешно совпадает, оставшиеся сервлеты не будут обращать внимания.
1. Четыре соответствующих правила
1 точное совпадение
Элементы, настроенные в <url-pattern>, должны точно соответствовать URL.
<Servlet-Mapping> <Servlet-name> myservlet </servlet-name> <url-pattern>/user/users.html </url-pattern> <url-pattern>/index.html </url-pattern> <url-pattern>/adduser.action </url-pattern> </servlet-mapping>/adduser.action </url-pattern>
При входе следующих URL -адресов в браузере они будут сопоставлены с сервлетом
http: // localhost: 8080/appdemo/user/users.html
http: // localhost: 8080/appdemo/index.html
http: // localhost: 8080/appdemo/user/adduser.action
Уведомление:
http: // localhost: 8080/appdemo/user/adduser/является незаконным URL и не будет распознаваться как http: // localhost: 8080/appdemo/user/adduser
Кроме того, вышеуказанный URL -адрес может сопровождаться любыми условиями запроса, и он будет сопоставлен, например, как
http: // localhost: 8080/appdemo/user/adduser? username = Tom & Age = 23 будет сопоставлен с MyServlet.
2 матча пути
Строка, которая начинается с символа "/" и заканчивается "/*", используется для сопоставления пути
<Servlet Mapping> <servlet-name> myservlet </servlet-name> <url-pattern>/user/*</url-pattern> </servlet-mapping>
Путь начинается с /пользователя /, и следующий путь может быть произвольным. Например, следующие URL -адреса будут сопоставлены.
http: // localhost: 8080/appdemo/user/users.html
http: // localhost: 8080/appdemo/user/adduser.action
http: // localhost: 8080/appdemo/user/updateUser.actionl
3 Сопоставление расширения
Строки, начинающиеся с "*". используются для сопоставления расширения
<Servlet-Mapping> <Servlet-name> myservlet </servlet-name> <url-pattern>*.
Затем любой запрос URL -адреса с расширением JSP или действием будет соответствовать, например, будет сопоставлен следующий URL -адрес
http: // localhost: 8080/appdemo/user/users.jsp
http: // localhost: 8080/appdemo/tohome.action
4 матч по умолчанию
<Servlet Mapping> <servlet-name> myservlet </servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
2. Соответствующий заказ
1. Точное совпадение, сервис-картирование1: <url-pattern>/user/users.html </url-pattern>, servlet-mapping2: <url-pattern>/*</url-pattern>. Когда запрос http: // localhost: 8080/appdemo/user/users.html приходит, сопоставление сервиса1 и больше не совпадает с сервисным отображением2
2. Сопоставление пути, сначала сопоставьте самый длинный путь, затем соответствуйте кратчайшему пути к сервирующему пути. Когда запрос http: // localhost: 8080/appdemo/user/users.html приходит, сопоставление сервиса1 и больше не совпадает с сервисным отображением2
3. Сопоставление расширения, сервис-картирование1: <url-pattern>/user/*</url-pattern>, сервис-картирование2: <url-pattern>*. Action </url-pattern>. Когда запрос http: // localhost: 8080/appdemo/user/adduser.action, сопоставления сервиса1 и больше не совпадает с сервисным картированием2
4. Матч по умолчанию не найден в приведенном выше сервлете, поэтому используйте сервлет по умолчанию и настройте его как <url-pattern>/</url-pattern>
Проблемы, которые следует отметить
1 Сопоставление пути и сопоставление расширения не может быть установлено одновременно
Существует только три метода сопоставления, либо сопоставление путей (начиная с символа «/» и заканчивая «/*»), сопоставление расширения (начиная с «*.») Или точным сопоставлением. Три метода сопоставления не могут быть объединены, поэтому не принимайте это как должное использовать подстановочные знаки или регулярные правила.
Например, <Url-pattern>/user/*. Action </url-pattern> является незаконным
Также примечание: <url-pattern>/aa/*/bb </url-pattern> является точным совпадением и законным. * Здесь не смысл дикого матча.
2 "/*" и "/" имеют разные значения
Tomcat настраивает сервис по умолчанию в файле %catalina_home %/conf/web.xml, а код конфигурации следующим образом
<servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet><servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet><servlet-mapping> <servlet-name>default</servlet-name> <Url-pattern>/</url-pattern> </servlet-mapping> <!-Марки для сервлета JSP-> <servlet-mapping> <servlet-name> jsp </servlet-name> <url-pattern>*. jsp </url-pattern> <url-pattern>*.
IV Привести пример
| Картирование URL | Соответствующий сервлет |
| /привет | Сервлет1 |
| /bbs/admin/* | Сервлет2 |
| /bbs/* | Сервлет3 |
| *.jsp | Сервлет4 |
| / | Сервлет5 |
Результат фактического отображения запросов
Удалить оставшиеся пути контекста | Сводлет, который обрабатывает запрос |
/привет | Сервлет1 |
/bbs/admin/login | Сервлет2 |
/bbs/admin/index.jsp | Сервлет2 |
/bbs/display | Сервлет3 |
/bbs/index.jsp | Сервлет3 |
/bbs | Сервлет3 |
/index.jsp | Servler4 |
/Hhello/index.jsp | Сервлет4 |
/Hhello/index.html | Сервлет5 |
/новости | Сервлет5 |
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.