gpt4 book ai didi

spring - 使用 Spring DispatcherServlet 自定义 404

转载 作者:IT老高 更新时间:2023-10-28 13:48:40 26 4
gpt4 key购买 nike

我已将 web.xml 设置如下。我还有一个基于注释的 Controller ,它接受任何 URL 模式,然后转到相应的 jsp(我已经在 -servlet.xml 中设置了它)。但是,如果我转到以 .html 结尾的页面(并且其 jsp 不存在),我看不到自定义 404 页面(并在日志中看到以下错误)。任何不以 .html 结尾的页面,我都可以看到自定义 404 页面。

如何为通过 DispatcherServlet 的任何页面配置自定义 404 页面?

还想补充一点,如果我将错误页面设置为静态页面(即error.htm),它可以工作,但如果我将其更改为jsp(即error.jsp),我会得到IllegalStateException。任何帮助将不胜感激。

日志错误

Caused by: java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:606)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:195)
at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:124)

Controller

@RequestMapping(value = {"/**"})

public ModelAndView test() {

ModelAndView modelAndView = new ModelAndView();

return modelAndView;
}

web.xml

<servlet>
<servlet-name>my_servlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>

...

<servlet-mapping>
<servlet-name>my_servlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>

...

<error-page>
<error-code>404</error-code>
<location>/error.html</location>
</error-page>

最佳答案

一种选择是通过调度程序 servlet 映射所有错误页面。

创建一个新的 HTTP 错误 Controller :


@Controller
public class HTTPErrorController {

@RequestMapping(value="/errors/404.html")
public String handle404() {
return "errorPageTemplate";
}

@RequestMapping(value="/errors/403.html")
...

}

在 web.xml 中映射错误页面

<error-page>
<error-code>404</error-code>
<location>/errors/404.html</location>
</error-page>

关于spring - 使用 Spring DispatcherServlet 自定义 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1196569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com