Spring的MVC 3.1:如何映射以斜线的网址?(Spring-MVC 3.1: How to

2019-09-19 19:41发布

我在转换的遗留servlet应用到春天3.1。 在这个过程中的一些网址,现在已经过时。 我们已经有一些问题,与我们的网络不会被很快解决。 我的老板并不想相信他们的重定向将始终运行。 于是,她让我把我自己的重定向到Web应用程序。

不同之处在于,如果一个URL的末尾有斜杠春3.1将无法找到控制器类函数来处理这一切的伟大工程。

HTTP://blah.blah.blah/acme/makedonation被发现,映射和处理

HTTP://blah.blah.blah/acme/makedonation /不

下面是我使用来处理我的旧有的网址控制器类

import org.springframework.stereotype.Controller;
import org.springframework.validation.*;
import org.springframework.ui.ModelMap;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.SessionAttributes;


import org.apache.log4j.Logger;

@Controller
public class LegacyServletController {

    private static final Logger logger = Logger.getLogger(LegacyServletController.class);

    // Redirect these legacy screns "home", the login screen via the logout process
    @RequestMapping({"makeadonation","contact","complain"})
    public String home() {
        logger.debug("started...");
        return "redirect:logout";

    }// end home()  

}// end class LegacyServletController

我Google了一圈,发现这个堆栈溢出后 ,提供一些建议,但我相信新的春天,不明白够它来实现其中的一些建议。 这其中尤其是听起来像这将是非常适合我的需求:

春季3.1 RequestMappingHandlerMapping允许您设置一个“useTrailingSlashMatch”属性。 默认情况下,它是真实的。 我认为它转换为false将解决您的问题,

会有人给我如何说,引用我说,有这样一个例子的URL(我与谷歌没有运气),或指向我一个更好的主意,一个基本的例子吗?

感谢很多提前史蒂夫

Answer 1:

你应该在context.xml中配置的bean,并设置属性。 或者你可以参考链接或弹簧DOC段16.4

示例配置

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
    <property name="useTrailingSlashMatch" value="true">
    </property>
</bean>


Answer 2:

如果使用的是春天的Java @Configuration你也可以只申报了@Bean是这样的:

@Bean
public RequestMappingHandlerMapping useTrailingSlash() {
    return new RequestMappingHandlerMapping() {{ setUseTrailingSlashMatch(true); }};
}


文章来源: Spring-MVC 3.1: How to map URLs with a trailing slash?