疯狂软件Java学习笔记:Servlet 4.x的新特性

在Servlet 4.x中,首先我们可以看到,增加了如下的类/接口

GenericFilter、HttpFilter、HttpServletMapping、MappingMatch、PushBuilder

这些新增的API能够实现什么的功能?有什么好处呢?

其中当我们看到GenericFilter、HttpFilter的时候,多少有点眼熟,对吗?

是的,很熟悉啊,因为以前我们有GenericServlet、HttpServlet!这个是基于【适配器模式】设计的API,其实里面的方法实现什么都没有!只是方便写具体的实现类的时候,能够通过适配器提供的方法,简化实现类。GenericFilter、HttpFilter可以说是GenericServlet、HttpServlet的翻版。用法也大同小异。

HttpServletMapping是一个在运行时动态发现HTTP的URL映射的接口。在Servlet之前的版本中,我们很难确定一个URL是通过什么样的规则匹配到Servlet中来执行的。通过request.getHttpServletMapping()方法,能够获取到为何把请求转发到此Servlet中。

在如下的一个映射的,我们之前能确定请求是通过哪个url-pattern映射进来的吗?

<servlet>

<servlet-name>MyServlet</servlet-name>

<servlet-class>MyServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>MyServlet</servlet-name>

<url-pattern>/MyServlet</url-pattern>

<url-pattern>””</url-pattern>

<url-pattern>*.extension</url-pattern>

<url-pattern>/path/*</url-pattern>

</servlet-mapping>

现在可以通过HttpServletMapping.getPattern()来确定了!还能根据HttpServletMapping.getMatchValue()得到*部分的值。

MappingMatch则是一个枚举,用于表示URL跟Servlet的匹配类型,可以通过HttpServletMapping.getMappingMatch()获取到。

PushBuilder是用于实现【服务器推】技术的接口,通过HttpServletRequest.newPushBuilder()方法来创建,属于HTTP 2.0的范畴。并定义在RFC 7540规范中的8.2节,能够主动把数据推送给客户端。这个更多的考虑HTTP 2.0协议的问题,这里暂时不作讨论,而是通过新帖子来进行详细说明。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年2月16日
下一篇 2018年2月16日

相关推荐