Struts1.*都还没有怎么玩,Struts2的时代就已经来临了,在网上查了很多资料,结果显示Struts2和Struts1相关性不高,即使没有用过Struts1,也可以直接使用Struts2框架,实际上Struts2可以说是WebWork的翻版。于是俺就在网上down了一个Struts2中文文档,是一个网友自己做的chm文件,他的blog地址是http://www.blogjava.net/max/,^_^。
下面简单说下我的实践经历吧,我用的开发工具是MyEclipse_ 5.5.1 。首先当然是去Apache上下一个Struts的发布包咯,然后创建一个Web工程,我的工程名字叫Struts,这个过程在Max的教程上都有详细的描述,接下来的三个步骤就比较重要了:
1. 配置web.xml文件
我的web.xml文件内如如下,
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "web-app_2_3.dtd" >
<web-app>
<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>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
红色突出显示的部分是使用Struts2的关键,它表明所有的请求都将交给FilterDispatcher这个控制器来进行“分流”,这个原理和Struts1中的一样,只不过Struts1中使用的servlet映射而不是filter映射,至于servlet和filter是如何对url进行映射的请参考这篇文章http://blog.csdn.net/delez/archive/2007/05/05/1596936.aspx。
2.Struts.xml
这个文件的作用就和Struts1中的Struts-config.xml文件的作用一样了,我们对所请求的url进行映射时都需要这个文件的帮助,它里面详细指定了一个路径经过映射后进入哪个action里面去。我的Struts.xml文件的内容如下:
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
</struts>
因为我目前还没有配置任何action,所以我的struts.xml文件的内容是空的。
3.把Struts发布包中lib目录下的jar文件全部都拷贝到web工程的WEB-INF/lib目录下面去;
现在我们启动Tomcat,,这个时候如果不出意外的话Tomcat启动会报如下的错误:
unable to load bean: type:com.opensymphony.xwork2.ObjectFactory
class:org.apache.struts2.spring.StrutsSpringObjectFactory - bean - jar:file:/E:/workspace/Struts/WEB-INF/lib/struts2-spring-plugin- 2.0.8 .jar!/struts-plugin.xml:8:132。
很莫名奇妙的一个错误,因为我根本没有使用Spring啊!我后来尝试放了一个spring.jar到WEB-INF/lib下面去,上面的错误虽然没有了但是又出现了一个新的错误,并且还提示我在web.xml中加上这句:
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
总之Struts应用就是加载不了,Tomcat显示如下的错误信息:Context [/Struts] startup failed due to previous errors。
后来我根据错误提示在网上进行搜索,发现导致这些错误的原因可能是因为Struts发布包中lib目录下面的jar文件中很多都是插件,并不是构建Struts应用所必须的,于是我试着把所有名字中包含有plugin的jar文件从WEB-INF/lib中删掉,然后再次重新启动Tomcat,OK,一切正常了,原来那些被删除的jar文件才是真正的“元凶“啊!在搭建好Struts2的运行环境之后就可以开始Struts应用的开发了,^_^。