scalatra 自定义404文件
在scalatra中,如果访问servlet不存在的路由时,默认为返回Requesting "%s %s" on servlet "%s" but only have: %s
那么我就去源码看了看,发现如下代码:
1 | protected var doNotFound: Action = () => { |
发现它如果没找到路由时,会尝试通过defaultServlet找静态资源,如果还找不到那么就会进入resourceNotFound方法,
如果是开发模式下,那么就会返回一开始提到的内容。。
如果我们通过在web.xml中配置:1
2
3
4<context-param>
<param-name>org.scalatra.environment</param-name>
<param-value>production</param-value>
</context-param>
就不会显示配置的404页面,那是怎么回事呢?
我们来看看response.setStatus(404)
1 | /** |
有这么段话:
If this method is used to set an error code, then the container’s
- error page mechanism(机制) will not be triggered.
参考资料:
Default Servlet
Tomcat use DefaultServlet for static content in external directory
Tomcat处理静态文件DefaultServlet分析
Configuration
Configuring Web Application Components