0

你好,我是春天的新人。我正在开发 Spring Web Api,但在使用正则表达式解析 URL 时遇到问题。我已经看过以下帖子:

http://stackoverflow.com/questions/7841770/optional-path-variables-in-spring-mvc-requestmapping-uritemplate
http://stackoverflow.com/questions/12516969/spring-mvc-getting-pathvariables-containing-dots-and-slashes
http://stackoverflow.com/questions/8998419/requestmapping-annotation-in-spring-mvc

但我还没有找到解决我的问题的方法。我希望我的所有请求都映射到一个方法,URL 的长度可以是可变的,参数的数量也可以是可变的。我想用变量 pathValue 捕获整个 url,而不是直到斜杠 /:

@RequestMapping(value = "{pathValue}", method = RequestMethod.GET)

我在 Spring 中测试过的所有正则表达式都在斜杠 (/......./) 之间捕获内容,并且不考虑剩余的 URL。

要点是,我想在一个方法中解析 url,这意味着所有请求都映射到该方法。有没有办法在春天实现这一目标?

非常感谢您的帮助和建议。

4

1 回答 1

0

如果您真的想将所有请求分派给一个处理程序,那么您根本不需要 spring 方法分派器。

相反,您可以拥有自己的请求处理程序

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
     <property name="urlMap">
         <map>
              <entry key="/**" value="myCatchAllResourceHandler" />
         </map>
     </property>
     <property name="order" value="100000" />       
</bean>

<bean id="myCatchAllResourceHandler" name="myCatchAllResourceHandler"
      class="MyCatchAllResourceHandler">
</bean>

您必须实现自己的请求处理程序

public class MyCatchAllResourceHandler extends HttpRequestHandler() {

    /**
     * Process the given request, generating a response.
     * @param request current HTTP request
     * @param response current HTTP response
     * @throws ServletException in case of general errors
     * @throws IOException in case of I/O errors
     */
    void handleRequest(HttpServletRequest request, HttpServletResponse response)
                   throws ServletException, IOException;
         System.out.println("I get invoked");       
    }
}

但老实说,这几乎就像把所有的 Spring MVC 都扔掉了!

于 2013-03-25T10:15:39.340 回答