2010-06-17 4 views
5

Вот отрывок из моей MVC-config.xml:Spring MVC 3,0 MVC: вид-контроллер тег

<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/вид/и login.jsp на/WEB-INF/вид/статический /.

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

Что может быть неправильным здесь?

Поблагодарили бы за любую помощь.

Спасибо!

Вот web.xml:

<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 дц SERVER Dev Edition v2.0
Spring версия: 3.0.3.RELEASE

ответ

6

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

+0

Я пропустил эту часть. Сейчас он работает. Спасибо! – gouki

2

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

+0

Я редактировал свой вопрос, чтобы включить содержимое web.xml и urlrewrite.xml. Благодаря! – gouki