0

私のTomcat-Spring-Javaプロジェクトでは、次のURLが必要です

/index - エントリーページを表示する
/login - ログインページ

/cars/ - 利用可能な車を一覧表示します
/cars/{id} - 特定の車を表示します
/cars/{id}/action - この特定の車に対してアクションを実行します

/people/ - 利用可能な人を一覧表示します
/people/{id} - 特定の人を表示します
/people/{id}/action - この特定の人に対してアクションを実行します

web.xmlで、このようなディスパッチャ サーブレット マップを取得しました。

    <servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/login</url-pattern>
    <url-pattern>/logout</url-pattern>
    <url-pattern>/index</url-pattern>
    <url-pattern>/cars/*</url-pattern>
    <url-pattern>/people/*</url-pattern>
</servlet-mapping>

そして、私のdispatcher-servlet.xmlマップは次のようになります:

        <bean id="urlMap"
    class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="urlMap">
        <props>
            <prop key="/login">loginController</prop>
            <prop key="/logout">logoutController</prop>
            <prop key="/index">welcomeController</prop>
            <prop key="/cars">listCarsController</prop>
            <prop key="/cars/">listCarsController</prop>
            <prop key="/cars/*">showCarController</prop>
            <prop key="/cars/*/action">actionCarController</prop>
            <prop key="/people">listPeopleController</prop>
            <prop key="/people/">listPeopleController</prop>
            <prop key="/people/*">showPersonController</prop>
            <prop key="/people/*/action">actionPersonController</prop>
        </props>
    </property>
</bean>

たとえば /people/1/action にアクセスすると、Dispacher サーブレット サーブレットは [1/action] のハンドラーを探していると言うので、これは期待どおりに機能しません。人のIDから車のIDへ。

「*」が入力された唯一の URL になるようなものです。

ところで、URL の拡張子を少なくしたいのですが、web.xml ファイルでディスパッチャーを *.htm にマップすれば問題は解決するはずです。
しかし、それはディスパッチをマッピングする方法、またはディスパッチャに完全な URL 定義を検索させる方法である必要があります。

4

1 に答える 1

1

プロパティを設定できalwaysUseFullPathます:

<bean id="urlMap" 
    class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 

    <property name = "alwaysUseFullPath" value = "true" />

    ...
</bean>

<url-pattern>または、ディスパッチャ サーブレットに1 つを設定することもできます。できないため、 UrlRewriteFilter/*を使用する必要があります。

于 2010-07-16T00:00:38.900 に答える