在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进行处理,非常感谢!