Jetty :: ServletContextHandler #setContextPath(..)以及如何将Servlet与特定文件扩展名相关联

时间:2013-10-09 15:48:46

标签: java servlets jetty contextpath

我在Jetty中有以下代码:

ServletContextHandler contextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
contextHandler.setContextPath("/a");
ServletHolder holder = new ServletHolder(MyServlet.class);
contextHandler.addServlet(holder, "/b/*");

"/a"调用setContextPath"/b/*"调用addServlet之间有什么区别?是否将这些路径连接起来以决定MyServlet将要提供哪些请求?

此外,是否可以将servlet与特定的文件扩展名相关联?即通过查看“endsWith”部分,可以说是一个URI,因此调度结束的URI,例如, “.xsd”到特定的Servlet?或者完全根据“startsWith”逻辑进行调度?

1 个答案:

答案 0 :(得分:3)

它应该基本符合servlet specification,其中URL由http://host:port/<context-root>/<servlet-path-spec>组成,其中Context根由setContextPath定义,Servlet路径规范由第二个参数定义addServlet。因此,示例中的servlet将提供以http://host:port/a/b/开头的所有URL。

Servlet路径规范还允许定义文件扩展名的映射,在您的示例中使用符号“* .xsd”,请参阅链接规范中的第12.2节。