Webwork项目要转到struts2:
一、变化
struts2代码始于webwork2.2.3,少许的比较大的改动可能会影响你的webwork2.2应用的移植
1、一些被Deprecated掉的方法和类已经被移除,这包括XWork Inversion of Control (IoC) 框架。
2、使用xhtml 主题的一些工具库被DOJO的工具组件替代。
3、使用FCK editor的rich text editor 组件被DOJO的rich text editor 替代,因为LGPL许可的原因。
4、date picker组件也由于LGPL许可的原因被DOJO的date picker组件替代,不幸地,DOJO的date picker组件不支持国际化。
感觉3有点可惜,FCK Editor还是很好用的。
二、移植:
一、引入struts2核心类库 :
struts2-core-2.1.8.1.jar
xwork-core-2.1.6.jar
freemarker-2.3.15.jar
ognl-2.7.3.jar
二、修改web.xml 文件:
加入struts2的过滤器:
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
并且删除掉:webwork的 servlet
<servlet>
<servlet-name>webworkDispatcher</servlet-name>
<servlet-class>
com.opensymphony.webwork.dispatcher.ServletDispatcher
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>webworkDispatcher</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
三、修改文件名:
webwork-default.xml 改名为:struts-default.xml
webwork.properties 改名为:struts.properties
xwork.xml 改名为:struts.xml
四、对改名后的文件进行修正:
1:
修改struts.xml :
删除掉 <include file="struts-default.xml" /> 这个文件已经包含在struts2-core-2.1.8.1.jar 下
或者
删除掉 conf下的 struts-default.xml 。
因为 以前名字叫 webwork-default.xml 里面可能包含webwork自己的一个 拦截器。所以到struts2中报错。
2:
如果报错出现:
Document root element "struts", must match DOCTYPE root "xwork".
该按照以下来修改:
struts.xml 文件修改:
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
修改为
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
并且:<xwork></xwork> 修改为 <struts></struts>
3:
struts-default.xml 文件修改:
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.0.dtd">
修改为:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
五、JSP页面相关
修改JSP页面: prefix="ww" 为 tag的前缀,struts2默认为 prefix="s";我们可以继续用 prefix="ww"
<%@ taglib prefix="ww" uri="webwork" %>
为
<%@ taglib prefix="ww" uri="/struts-tags" %>
Struts2的标签库描述文件struts-tags.tld已经包含在struts2的核心类库struts2-core-2.1.8.1.jar的META-INF目录中,Servlet
容器会自动找到这个文件,因此对struts2标签库的配置是不必要的,也是不建议的。
因此在JSP页面中引用struts2标签库时,taglib指令的uri属性要设置为 /struts-tags。
如果由于特殊原因,需要在web.xml文件中配置struts2标签库:可以从struts2-core-2.1.8.1.jar文件的 META-INF目录下抽取出
struts-tags.tld 文件,并放到web应用程序的 WEB-INF目录或者子目录下,然后修改web.xml文件,添加如下配置:
<jsp-config>
<taglib>
<taglib-uri>/struts-tags</taglib-uri>
<taglib-location>
/WEB-INF/struts-tags.tld
</taglib-location>
</taglib>
</jsp-config>