在仅实现到 Servlet 2.3/JSP 1.2 规范、JDK为1.4 的容器中用 Struts 2 会有什么问题?

Struts  的官方网站 http://struts.apache.org/2.0.11/index.html 列出了 Struts 2 的平台要求有三:

· Servlet API 2.4

· JSP API 2.0

· Java 5

但如果坚持要用 Java 4 也行,Struts 2 在 j4 目录下提供有用 retrotranslator 转换过的 struts2-core-j4-2.x.x.jar 和 xwork-j4-2.x.x 可用。

就是说换两个包可以 让 Struts 2 用 Java 4 环境中,但是未提及能不能用于 Servlet API 2.3/JSP API 1.2 的环境。

再看 Struts 2 的 Project Dependencies 页面说明,也只是在用 testng 进行单元测试时才要求用 jdk15,其他未要特别要求,一般 jdk1.3 以上就能满足,所以在 jdk 1.4 下用 Struts 2 问题不会很大。

但是对于 Servlet 和 JSP 规范的版却有些挑剔了。在 Struts 2 的 Project Dependencies 页面是说 servlet-api 2.4/jsp-api 2.0 provided。大致是说编译应用需要且用这两个库时默认提供,没看到有其他的要用到 Servlet 2.4/JSP 2.0 的包。所以还是没法让我具体明确为何就要选用 Servlet 2.4/JSP 2.0,有些迷惑。

众如周知 Tomcat 4.1.x 支持的规范就是 Servlet API 2.3/JSP API 1.2,从 Tomcat 5.0.x 版本开始支持 Servlet API 2.4/JSP API 2.0;Websphere Application Server (WAS) 5.1 也只支持到 Servlet API 2.3/JSP API 1.2。

但我自己写了一个简单的 Struts 2 程序 (包含使用了 Struts 2 标签,OGNL 表达式,web.xml 改成了用 Servlet 2.3 的 DTD 声明:

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">

然后放到 Java 5 + Tomcat 4.1.30 的环境下运行,也能正常表现,未发现什么异常。

所以不知道官方的声明 Struts 2 要求的容器规范是 Servlet 2.4/JSP 2.0,是因为用到它们的什么特性了。或者是如果我要在只实现到 Servlet 2.3/JSP 1.2 的容器中运行 Struts 2 Web 应用程序该注意些什么,哪些特性不能用。

公司目前的应用服务器是 WAS 5.1 (JDK 为 1.4,Servlet 2.3/JSP 1.2),但对于将来新上的项目本人却有那么一种冲动。不知哪位有在 Servlet 2.3/JSP 1.2 下开发 Struts 2 应用程序的经历,可否教授一番,万分感激!

本文链接 https://yanbin.blog/servlet23-jsp12-jdk14-struts2/, 来自 隔叶黄莺 Yanbin Blog

[版权声明] Creative Commons License 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

Subscribe
Notify of
guest

2 Comments
Inline Feedbacks
View all comments
wmj2003
wmj2003
16 years ago

strut2能够使用,本身就是在jdk1.5下面开发的,还是升级应用服务器吧

隔叶黄莺
16 years ago

升级应用服务器的时间、金钱、精力成本太高了。Struts2 想过提供 struts2-core-j4-2.x.x.jar 就会有办法的。