Spring 3.0 MVC mvc: тег view-controller - PullRequest
5 голосов
/ 17 июня 2010

Вот фрагмент моего mvc-config.xml:

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/"/>
    <property name="suffix" value=".jsp"/>
</bean>

<mvc:view-controller path="/index" view-name="welcome"/>    
<mvc:view-controller path="/static/login" view-name="/static/login"/>   
<mvc:view-controller path="/login" view-name="/static/login"/>

У меня есть файл welcome.jsp в / WEB-INF / view / directory и login.jsp в / WEB-INF / view /статическая /.

Это работает для путей '/ index' и '/ login'.Но я получаю 404 ответ для '/ static / login' при вызове из браузера.Я ожидаю, что '/ static / login /' и '/ login' должны вести себя одинаково.

Что здесь может быть не так?

Буду признателен за любую помощь.

Спасибо!

Вот веб-файл:

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:META-INF/spring/applicationContext*.xml</param-value>
    </context-param>

    <filter>
        <filter-name>springSecurityFilterChain</filter-name>
        <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>

    <!-- Enables clean URLs with JSP views e.g. /welcome instead of /app/welcome -->
    <filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter-mapping>
        <filter-name>UrlRewriteFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- Handles all requests into the application -->
    <servlet>
        <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                /WEB-INF/spring/*.xml
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- Maps all /app requests to the DispatcherServlet for handling -->
    <servlet-mapping>
        <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
        <url-pattern>/app/*</url-pattern>
    </servlet-mapping>

</web-app>

и вот urlrewrite.xml:

<urlrewrite default-match-type="wildcard">
    <rule>
        <from>/</from>
        <to>/app/welcome</to>
    </rule>
    <rule>
        <from>/static/**</from>
        <to last="true">/static/$1</to>
    </rule>

    <rule>
        <from>/**</from>
        <to last="true">/app/$1</to>
    </rule>
    <outbound-rule>
        <from>/app/**</from>
        <to>/$1</to>
    </outbound-rule>    
</urlrewrite>

Среда: я использую SpringSource tc Server Dev Edition v2.0
Версия Spring: 3.0.3.RELEASE

Ответы [ 2 ]

6 голосов
/ 17 июня 2010

Запрос на /static/login не может попасть в ваш DispatcherServlet, поскольку он соответствует правилу перезаписи от /static/** до /static/$1 с last = "true" и, следовательно, не соответствует правилу от /** до * 1006. *, что приводит к DispatcherServlet. См. UrlRewriteFilter документы для получения дополнительной информации.

2 голосов
/ 17 июня 2010

Это нормально работает для меня, можете ли вы сказать мне, каковы ваши отображения сервлет-диспетчера? Было бы неплохо, если бы вы могли прикрепить весь контент web.xml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...