Spring mvc 停用码头';默认的404错误处理程序

Spring mvc 停用码头';默认的404错误处理程序,spring-mvc,jetty,web.xml,jetty-8,Spring Mvc,Jetty,Web.xml,Jetty 8,我想在我的Spring3.1Web应用程序中提供一个自定义的404错误页面,但我无法停用Jetty8的默认404错误页面 Jetty 8开箱即用,提供默认的404错误页面: 当访问Jetty托管的网站,并提供任何servlet都无法处理的URL路径时(例如,通过访问http://www.example.com/nonexisting),Jetty的响应有自己的默认HTML错误页面: 要替换此默认行为 , , , 但我的网站仍然返回Jetty自己的默认HTML错误页面 ,但那里的建议是 要配

我想在我的Spring3.1Web应用程序中提供一个自定义的404错误页面,但我无法停用Jetty8的默认404错误页面

Jetty 8开箱即用,提供默认的404错误页面: 当访问Jetty托管的网站,并提供任何servlet都无法处理的URL路径时(例如,通过访问
http://www.example.com/nonexisting
),Jetty的响应有自己的默认HTML错误页面:

要替换此默认行为

  • ,
  • ,
  • ,
但我的网站仍然返回Jetty自己的默认HTML错误页面

,但那里的建议是

  • 要配置自定义Jetty错误处理程序(我不想这样做,我想在我自己的Spring
    @Controller
    中执行,如上所述)
  • 要创建“捕获所有上下文并创建映射到
    /
    URI的“根”web应用程序”(我不想在我的
    web.xml中这样做,我已经将Spring MVC的
    DispatcherServlet
    映射到/)

如何关闭Jetty的默认错误处理程序,并按照上面指出的方式完成错误处理?

以下是如何定义自定义错误页面-


我的问题的解决方案是添加一个自定义的
org.eclipse.jetty.server.handler.ErrorHandler

如果用户没有明确指定某个
ErrorHandler
,Jetty服务器实例似乎注册了一个默认的
ErrorHandler

如上所述,要注册自定义
错误处理程序
,您可以执行以下步骤

  • 实现一些
    org.eclipse.jetty.server.handler.ErrorHandler
    子类,例如
    com.example.CustomErrorHandler
  • 使此子类可用于Eclipse服务器实例,例如,将
    CustomErrorHandler
    绑定到
    jar
    文件中,然后将
    jar
    文件复制到
    ${jetty.base}/lib/ext
    目录中
  • 将Jetty服务器实例配置为将此自定义
    ErrorHandler
    注册为bean:
  • 文件
    jetty.xml

    <?xml version="1.0"?>
    <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
    "http://www.eclipse.org/jetty/configure_9_0.dtd">
    <Configure id="Server" class="org.eclipse.jetty.server.Server">
    
      <!-- more configuration -->
       
      <Call name="addBean">
        <Arg>
          <New class="com.example.CustomErrorHandler">
            <Set name="server"><Ref refid="Server" /></Set>
          </New>
        </Arg>
      </Call>
    </Configure>
    

    即使将jar放入lib/ext目录,它也会给出ClassNotFoundException。
    <?xml version="1.0"?>
    <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
    "http://www.eclipse.org/jetty/configure_9_0.dtd">
    <Configure id="Server" class="org.eclipse.jetty.server.Server">
    
      <!-- more configuration -->
       
      <Call name="addBean">
        <Arg>
          <New class="com.example.CustomErrorHandler">
            <Set name="server"><Ref refid="Server" /></Set>
          </New>
        </Arg>
      </Call>
    </Configure>