Struts2应用的开发步骤

导入必要的包

通过MyEclipse对项目导入Struts2包,一般只需要导入core这个包就可以。如果要想手动导入,则需要将commons-logging, freemarker, ognl, struts2-core, xwork-core, commons-fileupload, jacassist, commons-long3这几个包复制到web-inf下的lib文件夹下。或者直接使用MyEclipse自带的增加Struts2的capacities的方法,选定user library。

编写配置文件

应该在web.xml中定义核心Filter来拦截用户请求。要注意Struts2框架是通过Filter启动的。如果使用的是MyEclipse自动导入的jar包,则在web.xml中已经为我们配置好了相关Filter信息。配置代码如下:

<filter>
  	<filter-name>struts2</filter-name>
  	<filter-class>
  		org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  	</filter-class>
  </filter>
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>

这段代码规定对于所有的请求,都使用class中规定的拦截器进行拦截。如果使用MyEclipse增加capacities,则这些配置会自动生成。

定义处理用户请求的Action类,配置Action。

配置处理结果与物理视图之间的映射关系。

编写视图资源。


Struts2的常规配置

Struts2的默认配置文件是sturts.xml,它在src文件夹下。这个文件用于配置Action与请求之间的对应关系,并且将逻辑视图(也就是action方法的返回字符串)与物理视图(实际需要显示的jsp页面)联系起来。此外,还可以在这个文件中配置一些常量,也可以包含其他配置文件,或者对Bean进行配置。

常量配置

struts2可以利用properties文件或者xml来配置常量(同样都放在src文件夹,或者WEB-INF/classes路径下,因为现在的IDE在编译的时候,会将src下的非java文件移到WEB-INF/classes下),也可以通过web.xml来配置。无论何种方式配置,每个常量都要有name跟value两个值。由于Struts2的常量相当于对整个Struts2应用起作用,因此有时候这些常量也被称为Struts2属性。通过查找core包下的org.apache.struts2下的default.properties文件,我们可以知道哪些属性(常量)是有效的。

若想在struts.xml中自定义常量,则需要在struts根元素中使用constant子元素。若在web.xml中配置,则需要在全局filter中使用init-param子元素。

当Struts2框架启动的时候,会按照一定顺序加载常量。首先是struts-default.xml,然后是struts-plugin.xml,struts.xml,struts.properties,web.xml。所以,对于同样名字的常量,后边的会覆盖前面的。


包含其它配置文件

为了避免struts.xml过于臃肿,我们可以让它包含其它配置文件而减少它的代码。只需要在struts根元素下面使用include子元素即可实现模块化管理配置文件。被包含进来的文件是一个标准的Struts2配置文件,一样包含了DTD信息,根元素等。通常这些配置文件都在同一个文件夹下。

常见问题:

1. The type java.util.Map$Entry cannot be resolved. It is indirectly referenced from required .class files

将jdk换成1.6或者1.7,remove掉1.8即可。