2013-06-19 3 views
2
  1. Я хочу нанести на карту все запросы к Servlet TestHandler, поэтому я использую шаблон /*.
  2. Тогда я хочу исключить сопоставления jsp, поэтому я добавляю *.jsp картирование шаблона в jsp перед /*.
  3. Задача: .jsp не улавливает URL-адрес http://localhost/project/fun.jsp. Вместо этого/ узор улавливает его. Зачем? Как это может произойти?

<servlet-mapping> 
    <servlet-name>jsp</servlet-name> 
    <url-pattern>*.jsp</url-pattern> 
</servlet-mapping> 

<servlet-mapping> 
    <servlet-name>TestHandler</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

Но если я использую определенный URL-шаблон, как fun.jsp вместо *.jsp, это работает. Образец fun.jsp улавливает URL-адрес выше. Кто может мне объяснить, почему?почему * .jsp шаблон url в web.xml не работает

ответ

2

узоры оканчивающиеся /* (правила пути) которые подбираются до *. начало (правила расширения) сопоставления. Точный URI является точным совпадением, которое является первым в оценочном порядке.

Установить TestHandler как сервлет по умолчанию, который должен работать.

<servlet-mapping> 
    <servlet-name>TestHandler</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 
+0

так, как я могу изменить заказ? – gaoshougaoshou

+0

вы не можете, это спецификация сервлета –

+0

Вы должны попробовать использовать '/' (а не '/ *') как url-pattern, который является сервлетом по умолчанию –

1

Чтобы написать отображение сервлета, должен быть определен класс сервлета.

<servlet> 
    <servlet-name>TestHandler</servlet-name> 
    <servlet-class>FULLY QUALIFIED NAME OF THE CLASS</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>TestHandler</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

Обратите внимание :::: TestHandler этого имя сервлета и этот сервлет отображается URL-адрес в JSP (вид) (шаблон URL/*)

для другого, подобным образом сервлета я добавляю сервлет класс

<servlet> 
    <servlet-name>jsp</servlet-name> 
    <servlet-class>FULLY QUALIFIED NAME OF THE CLASS</servlet-class> 
    </servlet> 

<servlet-mapping> 
    <servlet-name>jsp</servlet-name> 
    <url-pattern>*.jsp</url-pattern> 
</servlet-mapping> 

Это все строки кода должны быть написаны в web.xml

+0

Спасибо! Я знаю, что Вы имеете ввиду. У меня есть часть ''. Но на самом деле 'jsp' - это сервлет, определенный в Tomcat/conf/web.xml. – gaoshougaoshou