Проблемы с Tuckey UrlRewriteFilter и Spring 3 Web MVC - PullRequest
0 голосов
/ 19 сентября 2010

У меня есть приложение Spring Web MVC, и я хочу использовать RESTful URL. К сожалению, я не нашел ни одной конфигурации, которая бы работала для меня с UrlRewriteFilter Tuckey.

Я использую «DefaultAnnotationHandlerMapping», и я добавил «urlrewritefilter.jsp» в мой путь к классам и скопировал «urlrewrite.xml» в «/WEB-INF/".

».

Я не хочу, чтобы xyz: //www.domain.com/abc был перенаправлен (невидим для пользователя) на xyz: //www.domain.com/app/abc, чтобы перехватить его с моим контроллером и оставить xyz: //www.domain.com/css нетронутым.

Мой " web.xml " настроен следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="xyz://java.sun.com/xml/ns/javaee" xmlns:xsi="xyz://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="xyz://java.sun.com/xml/ns/javaee xyz://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

 <!-- Context -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/applicationContext.xml
            /WEB-INF/applicationContext-security.xml
        </param-value>
    </context-param>

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

    <!-- Spring Security -->
    <filter>
      <filter-name>springSecurityFilterChain</filter-name>
      <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
      <filter-name>springSecurityFilterChain</filter-name>
      <url-pattern>/*</url-pattern>
    </filter-mapping>

 <!-- Tuckey UrlRewriteFilter -->
 <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>
 </filter-mapping>

 <!-- Dispatcher Servlet -->
    <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>/app/*</url-pattern>
    </servlet-mapping>

 <!-- All the rest... -->
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>redirect.jsp</welcome-file>
    </welcome-file-list>
</web-app>

Мой " urlrewrite.xml " настроен следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"
        "xyz://tuckey.org/res/dtds/urlrewrite3.2.dtd">

<urlrewrite default-match-type="wildcard">
 <rule>
  <from>/**</from>
  <to>/app/$1</to>
 </rule>
 <outbound-rule>
  <from>/app/**</from>
  <to>/$1</to>
 </outbound-rule>
</urlrewrite>

My AbcController.java для отображения xyz: //www.domain.com/abc имеет такие методы:

@RequestMapping(value = "/app/abc", method=RequestMethod.GET)
public void displayRegistration(Model model)
{
 ...
}

Но я всегда получаю «HTTP Status 404» при попытке доступа к xyz: //www.domain.com/ или xyz: //www.domain.com/abc: - (

Было бы очень хорошо, если бы кто-то мог помочь.

Привет

Benny

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Действительно поздний ответ.

Вам необходимо добавить символы группировки (. *)

<urlrewrite >
    <rule>
        <from>^/(en|de)/(.*)$</from>
        <to >/$2?lang=$1</to>
    </rule>
</urlrewrite>
1 голос
/ 22 сентября 2010

Вы пробовали с

@RequestMapping(value = "/abc", method=RequestMethod.GET)
...