1

我有以下需要映射到两个不同 servlet 的 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

4

3 回答 3

4

url-pattern那么强大 您可以改用UrlRewriteFilter

或者,为了更容易,只使用一个 servlet,根据它解析request.getURL()并执行不同的代码。

于 2010-05-26T10:17:01.647 回答
3

按照Bozho的建议使用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 映射:

<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>
于 2010-05-26T11:05:06.773 回答
0

我认为不request.getURL()存在,请尝试String URL = request.getRequestURL().toString();

于 2012-01-08T19:50:07.010 回答