1

2つの異なるサーブレットにマッピングする必要がある次の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を使用できます。

または、簡単にするために、サーブレットを1つだけ使用し、それに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-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 に答える