2013-01-11 4 views
3

У меня есть сервлет, определенный как в web.xml:Java сервлетов

<servlet-mapping> 
    <servlet-name>SessionRebindServlet</servlet-name> 
    <url-pattern>*.ppp</url-pattern> 
</servlet-mapping> 

Теперь, когда есть запрос с расширением .ppp он использует выше сервлет.

Но я хочу иметь здесь одно исключение, если файл с именем «popup.ppp» тогда вообще не вызывает этот сервлет.

Возможно ли это?

ОБНОВЛЕНИЕ

Я добавил фильтр

<filter-mapping> 
    <filter-name>AppFilter</filter-name> 
    <url-pattern>*.ppp</url-pattern> 
</filter-mapping> 

и в коде фильтра:

String url = ((HttpServletRequest) request).getRequestURI(); 
     if (url.contains("popup.ppp")) { 

     } else { 
      chain.doFilter(request, response); 
     } 
+0

вы можете добавить логику в свой SessionRebindServlet, чтобы игнорировать запрос «popup.ppp». – Jason

ответ

1

Я использую это для таких случаев:

String lPath = ((HttpServletRequest) request).getRequestURI(); 
if (lPath.startsWith("/supported")) { 
    chain.doFilter(request, response); 
} else { 
    // not supported 
} 
+0

Он не говорит о фильтрах. –

+0

На самом деле это сработало. Я добавил фильтр и сделал то, что сказал @stefan Be. Спасибо. – Makky

1

Нет, вы не можете сделать это с помощью элемента <url-mapping/>. См. spec chapter 12 для всех вариантов.

Не можете ли вы набрать /somepath/*.ppp, чтобы он не мешал popup.ppp или позвонил popup.ppp что-нибудь еще?

1

С помощью фильтра и просто переопределить doFilter() в фильтре:.

Строка URL = request.getRequestURL() ToString();

затем использовать этот адрес и сравнить с popup.ppp это не равны, то doFilter()

ИЛИ

Попробуйте это (я не проверял с этим)

<servlet-mapping> 
    <servlet-name>SessionRebindServlet</servlet-name> 
    <url-pattern>*.ppp</url-pattern> 
</servlet-mapping> 


<servlet-mapping> 
    <servlet-name>newServletName</servlet-name> 
    <url-pattern>popup.ppp</url-pattern> 
</servlet-mapping> 
+0

Он не говорит о фильтрах. –

+0

ok..but, используя фильтр, вы можете ... его только одним способом .. –

+0

Да, используя фильтр, как обходные работы, конечно. Спасибо за разъяснение вашего ответа. –

Смежные вопросы