【问题标题】:How to set url mapping in Spring MVC for not existing resources?如何在 Spring MVC 中为不存在的资源设置 url 映射?
【发布时间】:2014-11-02 09:19:34
【问题描述】:

我想要做的是,当用户输入无处可去的 url 时,我的意思是这个 url 没有资源,而不是特殊映射应该起作用。

例如,我有下一个控制器:

@Controller
public class LoginController {

    @RequestMapping(value = {"/", "/login"}, method = RequestMethod.GET)
    public ModelAndView welcome() {
        return new ModelAndView("mainPage");
    }
}

当用户输入 {contextPath}/ 或 {contextPath}/login 时,此映射有效 现在我想映射所有其他 url,我喜欢这样:

@Controller
public class LoginController {

    @RequestMapping(value = {"/", "/login"}, method = RequestMethod.GET)
    public ModelAndView welcome() {
        return new ModelAndView("mainPage");
    }

    @RequestMapping(value = {"/**"}, method = RequestMethod.GET)
    public ModelAndView notFound() {
        return new ModelAndView("customized404Page");
    }
}

现在当用户输入无效路径时,例如 {contextPath}/sdfsdfcustomized404Page 会显示给他

但最后一个映射更通用,而且它始终有效,这就是为什么第一个映射不起作用的原因。

问题: 如何映射所有无效的网址? 或者也许在 Spring 中有一些更简单的方法?

【问题讨论】:

    标签: java spring spring-mvc model-view-controller url-mapping


    【解决方案1】:

    拥有自定义 404 页面的最简单方法是在 web.xml 中配置它们

    <error-page>
      <error-code>404</error-code>
      <location>/error404.jsp</location>
    </error-page>
    

    当一个简单的jsp 不够用时,因为你需要一个成熟的 Spring 控制器,那么你可以将位置映射到控制器的映射:

    @Controller
    public class HttpErrorController {
    
        @RequestMapping(value="/error404")
        public String error404() {
            ...
            return "error404.jsp";
        }
    }
    
    <error-page>
      <error-code>404</error-code>
      <location>/error404</location>
    </error-page>
    

    【讨论】:

      【解决方案2】:

      您可以使用会话过滤器来实现这一点。

      检查此链接。 http://www.journaldev.com/1933/java-servlet-filter-example-tutorial

      【讨论】:

        猜你喜欢
        • 2015-02-26
        • 2014-02-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多