Шаблоны картирования сервлетов - PullRequest
1 голос
/ 26 мая 2010

У меня есть следующие URL, которые нужно сопоставить с двумя разными сервлетами. Кто-нибудь может предложить рабочий шаблон URL, пожалуйста?

vehlocsearch-ws:

/ws/vehlocsearch/vehlocsearch  
/ws/vehavailrate/vehavailratevehlocsearch  
/ws/vehavailrate/vehavailratevehlocsearch.wsdl

vehavailrate-ws:

/ws/vehavailrate/vehavailrate
/ws/vehavailrate/vehavailratevehavailrate  
/ws/vehavailrate/vehavailratevehavailrate.wsdl

Пока у меня есть это, которое кажется правильным, но не:

 <servlet-mapping>  
  <servlet-name>vehlocsearch-ws</servlet-name>  
  <url-pattern>*.vehlocsearch*</url-pattern>  
 </servlet-mapping>  
 <servlet-mapping>  
  <servlet-name>vehavailrate-ws</servlet-name>  
  <url-pattern>*.vehavailrate*</url-pattern>  
 </servlet-mapping>

Примечание: я не могу контролировать входящие URL

Ответы [ 3 ]

4 голосов
/ 26 мая 2010

url-pattern не такой мощный. Вместо этого вы можете использовать UrlRewriteFilter .

Или, чтобы сделать это проще, используйте только один сервлет, проанализируйте request.getURL() и выполните другой код в зависимости от этого.

3 голосов
/ 26 мая 2010

Используя UrlRewriteFilter , как предложено Божо Я внес следующие изменения:

добавил фильтр reqrite в мой web.xml:

<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

Создан WEB-INF / urlreqrite.xml, который выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE urlrewrite
    PUBLIC "-//tuckey.org//DTD UrlRewrite 3.0//EN"
    "http://tuckey.org/res/dtds/urlrewrite3.0.dtd">

<urlrewrite>

    <rule>
        <from>/ws/vehavailrate/vehavailratevehlocsearch(.*)</from>
        <to type="forward">/ws/vehlocsearch/vehlocsearch$1</to>
    </rule>
    <rule>
        <from>/ws/vehavailrate/vehavailratevehavailrate(.*)</from>
        <to type="forward">/ws/vehavailrate/vehavailrate/$1</to>
    </rule>

</urlrewrite>

И изменил мои сервлет-отображения в web.xml:

<servlet-mapping>
    <servlet-name>vehlocsearch-ws</servlet-name>
    <url-pattern>/ws/vehlocsearch/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>vehavailrate-ws</servlet-name>
    <url-pattern>/ws/vehavailrate/*</url-pattern>
</servlet-mapping>
0 голосов
/ 08 января 2012

Я не думаю, что request.getURL() существует, вместо этого попробуйте String URL = request.getRequestURL().toString();.

...