java - 如何在 Spring MVC 中为不存在的资源设置 url 映射?

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

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

例如,我有下一个 Controller :

@Controller
public class LoginController {

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

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

@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 中有一些更简单的方法来做到这一点?

最佳答案

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

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

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

@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>

关于java - 如何在 Spring MVC 中为不存在的资源设置 url 映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26697802/

相关文章:

java - file.mkdirs() 创建新目录但无法读取

json - 将 JSON 对象发送到 Spring POST Controller

rest - "404 Not Found"在使用 swagger-springmvc(现在是 springfox)时查看 swagger api-docs

java - 如何在 spring 框架中编码 url?

java - 执行 JSF 导航时,不会调用映射到前向调度程序的过滤器

java - 将 BufferedImage 绘制到另一个 BufferedImage 正在更改 RGBA 值

java - 如何使用spring websocket向自定义用户发送自定义消息?

javascript - JSF Richfaces 自动完成问题 - 使用..anything 发送隐藏参数

java - 从 SpringMVC Controller 记录

java - java中带有自定义对象的列表的深拷贝