Board logo

标题: Servlet 4.0 入门(2) [打印本页]

作者: look_w    时间: 2018-11-22 19:26     标题: Servlet 4.0 入门(2)

将服务器推送与 JSF 结合使用JavaServer Faces                已经将每个页面的资源需求标识为页面呈现生命周期的一部分,所以它非常适合用于服务器推送。就开发人员而言,比较好的一方面是,您不必为了激活此功能而煞费苦心。您可以免费升级到                JSF 2.3。
清单 4 展示了JSF 和服务器推送的集成情况。
清单 4. 在 JSF                页面中使用服务器推送
1
2
3
4
5
6
7
8
9
10
11
<h:head>
   <hutputStylesheet library="css" name="logo.css"/>
   <hutputScript library="js" name="logo.js"/>
   <title>JSF 2.3 ServerPush Example</title>
</h:head>
<h:body>
   <h:form>
       <h:graphicImage library="images" name="logo.jpg"/>
   </h:form>
</h:body>
</html>




清单 4 中的 JSF 页面需要以下三种资源:
当 JSF 引擎正在处理和呈现页面时,这些资源将被逐个推送到客户端。这发生在 JSF 的呈现响应阶段。然后,会为每个资源调用                ExternalContextImpl.encodeResourceURL() 方法,并向其传递资源的新 URL。从与                ExternalContext 相关联的 HttpServletRequest 实例获取新的                PushBuilder 对象。如果支持服务器推送,那么会在向客户端呈现页面之前将资源推送到客户端。


JSP 中的服务器推送
由于 JavaServer Pages                    是一项传统技术,服务器推送尚未集成到 JavaServer Pages 中。但您可以在 JSP 中利用服务器推送,通过使用 servlet                    过滤器来缓存和推送资源。请查看 Jetty 9 的 PushCacheFilter,获取工作方式示例。

HttpServletMapping 接口Servlet 4.0 的全新   API 使服务器能够对 URL(可调用 servlet)执行运行时检查。例如,对                file.ext, /path 和 /path/file.ext 的请求将通过 URL 模式                /path/* 和 *.ext 激活 servlet。
HttpServletMapping 接口支持运行时发现 servlet 的映射 URL。您可以在                HttpServletRequest 实例上调用                getHttpServletMapping(),获取接口的实例。您可以使用以下方法获取有关 servlet 映射 URL                的信息:
清单 5 展示了四种 API 方法的实际应用。
清单 5. Servlet 4.0 中的运行时 servlet                    映射发现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@WebServlet({"/path/*", "*.ext"})
public class ServletMapping extends HttpServlet {

    protected void doGet(HttpServletRequest request,
                         HttpServletResponse response)
                         throws IOException {

        HttpServletMapping mapping = request.getHttpServletMapping();
        String mapping = mapping.getMappingMatch().name();
        String value = mapping.getMatchValue();
        String pattern = mapping.getPattern();
        String servletName = mapping.getServletName();
   }

}






Servlet 4.0 的细微变化除了服务器推送和全新 HttpServletMapping 接口,Servlet 4.0                还包括少量值得注意的新增功能和变更。
结束语Servlet 4.0 已经发布,主要用于整合全新 HTTP/2 协议及其众多性能增强功能。PushBuilder                接口对推送到客户端的资源提供细粒度控制,使交叉实现生动有趣。例如,Jetty 9 在 PushCacheFilter                Web 过滤器中使用 PushBuilder API                实现了服务器推送功能。此过滤器在首次请求时缓存了资源。即使仍在服务器端处理请求,它也能够将后续请求推送到客户端。
虽然 JSF 2.3 内置了服务器推送功能,但 JavaServer Pages 并没有此功能。JSF                与服务器推送的集成十分有用,开发人员因而可减少对性能问题的关注,而更加着力于设计动态网页。对于想要在 JSP 中实现相似功能的开发人员,就需要使用                Web 过滤器这样的定制解决方案,例如 Jetty 9 中的 PushCacheFilter Web 过滤器。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0