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
[版权声明] 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。
strut2能够使用,本身就是在jdk1.5下面开发的,还是升级应用服务器吧
升级应用服务器的时间、金钱、精力成本太高了。Struts2 想过提供 struts2-core-j4-2.x.x.jar 就会有办法的。