我想要做的是,当用户输入无处可去的网址时,我的意思是该网址没有比特殊映射应该起作用的资源。
例如,我有下一个 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/