Servlet 2.4提供了几个新类,且不支持javax.servlet.SingleThreadModel接口。这一版本只支持HTTP 1.1,所以Servlet 2.4应用程序不适用于HTTP 1.0客户程序。2.4版增加了请求监听器和请求属性监听器,并能在一个应用程序中将servlet用作欢迎页面。另外,Servlet 2.4还提供了更好的ServletRequest和RequestDispatcher对象,并更好地支持国际化。此外,现在是根据模式而不是文档类型定义(document-type definition,DTD)文件来验证部署描述符是否有效。这就意味着支持部署描述符的可扩展性。 下面具体说明Servlet 2.4的新特性。请求监听器和请求属性监听器。Servlet 2.3增加了servlet上下文相关监听器和会话相关监听器。Servlet 2.4增加了新的javax.servlet.ServletRequestListener和javax.servlet.ServletRequestAttributeListener两种接口,它们会通知你与Request对象有关的事件。如果你对每个Request对象的初始化和撤消感兴趣,你可以实施ServletRequestListener接口。这个接口有两个方法:requestInitialized()和requestDestroyed()。当需要一个Request对象时,servlet容器便调用requestInitialized方法。当不再需要Request对象时,servlet容器便调用requestDestroyed方法。 这两个方法都从servlet容器接收一个javax.servlet.ServletRequestEvent对象。可以从ServletRequestEvent实例获得servlet上下文和servlet请求。 第二个监听器接口ServletRequestAttributeListener处理Request对象属性的添加、更改和删除。该接口有以下方法:
attributeAdded。向Request对象添加新属性时由servlet容器调用。
attributeRemoved。从Request对象中删除属性时由servlet容器调用。
attributeReplaced。Request对象中现有属性值被替换时由servlet容器调用。 这三个方法从servlet容器获得javax.servlet.ServletRequestAttributeEvent类的一个实例。ServletRequestAttributeEvent类扩展了ServletRequestEvent类,并添加了两个新方法:getName和getValue。getName方法返回触发事件的属性的名称,getValue返回属性的值。 代码清单1 给出这两个新的监听器的示例类。当servlet容器调用方法时二者都显示方法名。监听器经过编译后,它们的类文件必须被部署到WEB-INF/classes目录下。ServletRequest中的新方法。在Servlet 2.4中,javax.servlet.ServletRequest接口增加了4个新方法: getRemotePort。返回发送请求的客户机或最后一个代理服务器的Internet Protocol(IP)源端口。
getLocalName。返回从中接收请求的IP接口的主机名。
getLocalAddr。返回从中接收请求的接口的IP地址。
getLocalPort。返回从中接收请求的接口的IP端口号。 请注意,在Servlet 2.3中,getServerName和getServerPort方法返回的值就是现在getLocalName和getLocalPort返回的值。在2.4版中,getServerName和getServerPort已重新定义。欲了解更多的信息,请查看API文档。 将一个JSP页面中的代码示例如下
- out.println("<br>Remote Port : " +
- request.getRemotePort());
- out.println("<br>Local Name : " +
- request.getLocalName());
- out.println("<br>Local Addr : " +
- request.getLocalAddr());
- out.println("<br>Local Port : " +
- request.getLocalPort());
- <servlet>
- <servlet-name>Modern<>servlet-name>
- 创建Servlet过滤器的向导
- 安装Servlet和JSP开发工具
- 扩展Future Response Servlet
- Servlet容器的匹配过程
- 浅谈user cache Servlet