我正在查看一个使用 Jetty 的应用程序,它有很多不同的相关对象:
service = new Server(Integer.valueOf(System.getenv("PORT")));
final ServletContextHandler servletContextHandler = new ServletContextHandler(ServletContextHandler.SESSIONS);
MyAppServlet myAppServlet = new MyAppServlet();
ServletHolder myAppServletServletHolder = new ServletHolder(myAppServlet);
final String serviceName = 'abc';
servletContextHandler.addServlet(myAppServletServletHolder, ("/"+ serviceName));
service.setHandler(servletContextHandler);
Run Code Online (Sandbox Code Playgroud)
所以看起来层次结构是:
Server
ServletContextHandler
ServletHolder
Servlet
Run Code Online (Sandbox Code Playgroud)
Server的含义很明显,Servlet似乎就是实现实际应用程序的脚本。
但 ServletContextHandler 的含义不太清楚。您能否给出一个简单的解释,不需要太多 Java 生态系统的背景,只需要一般的编程经验?是为了在不同的应用程序(servlet)之间共享配置变量吗?它有哪些有用的应用?
最后,我不知道为什么我们需要 ServletHolder 而不是仅仅将 Servlet 提供给 ServletContextHandler。
以下内容有点相关,但我认为不是很仔细。它只有一个类与这个问题重叠:What's the Difference Between a ServletHandler and a ServletContextHandler in Jetty?
服务器- 服务器本身。(是的,应该是显而易见的)
ServletContextHandler - 上下文,提供中定义的范围javax.servlet.ServletContext
您可以有 [0..n]ServletContextHandler个实例。
它们不得映射到相同的上下文路径。
负责:
例子:
/对于根
请求http://machine.com/foo将命中该资源ServletContext并处理其中映射的任何资源/foo
/app对于特定应用程序
请求http://machine.com/app/bar将命中ServletContextat/app并处理其中映射的资源的任何内容/bar
ServletContextServletHolder - 特定 servlet 的配置
每个 Servlet 都可以配置为:
注意:还有一个 FilterHolder 相当于 Filters
Servlet - 用于处理请求并生成响应的低级端点资源
这使用标准 Servlet 行为处理原始请求。
Filter - Servlet 之前的一个组件,可以参与请求/响应处理。
| 归档时间: |
|
| 查看次数: |
2708 次 |
| 最近记录: |