Default Servlet是(事实上的)标准吗?

时间:2009-11-02 12:41:24

标签: java servlets

this question相关,是一个默认servlet的概念,它在servlet容器中为静态内容提供标准(即使事实上是一个),或者它的使用是否限制部署到Tomcat / Jetty?

例如,1显示了获取默认调度程序的方法:

 final RequestDispatcher rd = getServletContext().getNamedDispatcher("default");

从快速搜索看来,这似乎也适用于Jetty。这种技术在获取默认servlet方面有多广泛?对于具有默认servlet的servlet容器,它是否始终是静态内容servlet?

3 个答案:

答案 0 :(得分:4)

这不是标准,但如果没有它,appservers就无法提供静态内容。这是至关重要的。

[编辑]我看到你编辑并以更清晰的方式阐述了你的问题:

  

例如,[1]显示了这种方法   获取默认调度程序:

     

最终RequestDispatcher rd =   。getServletContext()方法getNamedDispatcher( “默认”);

     

从快速搜索看来,这似乎是这样   也适用于Jetty。多么广泛   这项技术是否有助于获得   一个默认的servlet?对于servlet   具有默认值的容器   servlet,它总是一个静态内容   小服务程序?

在这种情况下,它可能是事实上的标准,但我不会太依赖它,并且肯定不会针对实现特定细节或甚至事实标准进行编码。问问自己:将请求分派给defaultservlet的意义/价值是什么?没错。

答案 1 :(得分:2)

Servlet不需要默认的servlet。但是,如果定义了名称,则名称必须为“default”。无法想象没有默认servlet的容器​​。所以你可以认为它是标准的。

见SRV.11.1,

部分

4。如果前三个规则都没有导致servlet匹配,那么容器将会 尝试提供适合所请求资源的内容。如果是“默认” servlet是为应用程序定义的,它将被使用。

答案 2 :(得分:0)

只要servlet容器标准是Servlet API,就可以看到没有DefaultServlet这样的东西。最广泛使用的servlet容器有一些默认设置可以开箱即用。但实现某个接口或抽象类并不是“标准”要求,因此容器可以运行。 (即使没有任何servlet,容器也可以运行)。