Servlet 2.4 的 新功能:
1。 web.xml 改用XML Schema :主要加强两项功能:
(1) 元素可不依照顺序设定;
在Servlet 2.3 版 : <servlet-mapping>元素必须在<servlet>元素之后
在Servlet 2.4版之后,不再须注意元素的顺序。
(2) 更强大的验证机制 :
(a) 可检查元素的值是否为合法的值。例如:<filter-mapping>的<dispatcher>元素,其值只
能为REQUEST、FORWARD、INCLUDE 和ERROR,如下所示:
<filter-mapping>
<filter-name>Hello</filter-name>
<url-pattern>/CH11/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
若<dispatcher>元素的值不为上述四种时,此web.xml 将会发生错误。
(b) 可检查如Servlet、Filter 或EJB-ref 等等元素的名称是否惟一。.
(c) 可检查元素值是否为合法文字字符或数字字符。
2. 新增Filter 四种设定;
Servlet 2.4 版新增的Filter 四种设定为:REQUEST、FORWARD、INCLUDE 和ERROR。
Servlet 2.3 版新增了Filter的功能,不过它只能由客户端发出请求来调用Filter,但若使用
RequestDispatcher.forward( )或RequestDispatcher.include( )的方法调用Filter 时,Filter
却不会执行。因此,在Servlet 2.4版中,新增Filter的设定<dispatcher>来解决这个问题。有关
Filter 的部分在本书“第十一章:Filter 与Listener”有更详细的介绍。
Servlet 2.4 版新增的Filter 四种设定为:REQUEST、FORWARD、INCLUDE 和ERROR。假若你有
一个SimpleFilter,它只允许由客户端发出请求或由RequestDispatcher.include( )的方式来调用
执行SimpleFilter,此时SimpleFilter 的设定如下:
3. 新增Request Listener、Event 和Request Attribute Listener、Event。
Listener 接口 Event 类
ServletContextListener ServletContextEvent
ServletContextAttributeListener ServletContextAttributeEvent
HttpSessionListener HttpSessionEvent
HttpSessionActivationListener
HttpSessionAttributeListener
Listener 接口 Event 类
ServletRequestListener ServletRequestEvent
ServletRequestAttributeListener ServletRequestAttributeEvent
4. Servlet 2.4 其他较显著的变更如:
(1) 取消SingleThreadModel接口。当Servlet实现SingleThreadModel 接口时,它能确保同时间
内,只能有一个thread 执行此Servlet。
(2) <welcome-file-list>可以为Servlet .
(3) ServletRequest 接口新增一些方法,如:
public String getLocalName( );
public String getLocalAddr( );
public int getLocalPort( );
public int getRemotePort( );