一、什么是Struts2?

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。

 

二、在项目中如何使用Struts2?

分以下几步进行:

1、导入jar包,下面这些包都是搭建struts2所必须的,也就是将以下这些包复制到项目的lib目录下。
struts2-core-2.3.16.3.jar—这个是struts2的核心jar包
xwork-core-2.3.16.3.jar
freemarker-2.3.19.jar–jsp
commons-fileupload-1.3.1.jar—-文件上传的包
commons-io-2.2.jar—-处理io流
commons-lang3-3.1.jar
commons-logging-1.1.3.jar–处理日志

这些包都可以到apache.org进行下载,版本不一定和这里说的一样,最好是保持只能高不能低。

2、在web.xml中配置核心拦截器。

这里的filter-class是固定的,不可以改变,至于filter-name,只要保持上下一致,可以自行更改。url-pattern视自己的项目结构来定,一般都是/*,即拦截所有。

如果遇到Filter mapping specifies an unknown filter name strtus2这个错,在其他无误的情况下,一定是配置文件的名字出了问题。

3、配置如下的一个struts.xml文件,记住,一定要放在src目录下。

如果报No result defined for action …这样的错,说明方法中的返回值在struts.xml中未找到对应的的result,也就是方法的返回值和配置文件的result某一项不匹配。将其更改为一样即可。

4、在你的项目中定义一个类似如下的类,则一个简单的Struts2框架便搭建好了。

 

三、说一下注意点。

(1)定义一个命名空间时记得一定要以/开头,否则会找不到,命名空间之间可以继承,但被继承的最高命名空间必须继承struts-default。

(2)在一个命名空间下面不能配置相同的两个action,即name相同,不同的命名空间下可以,这样做的目的一是让业务逻辑更加清晰明了,而是当我们开发一些组件应用时,结构更加清晰。就像包与包的概念一样。

(3)继承空间可以访问被继承空间的name,但如果有相同的,则访问自己的,相当于子类继承父类的方法调用,但一般都是各自用各自的。

(4)当进行大型项目开发时,在一个xml中配置所有的action未免太臃肿,我们可以定义多个xml文件,每个xml文件配置一个功能的action,但其他的xml文件一定要在struts.xml中注册,只要都注册了,则注册顺序可不分先后,但如果要注册继承的xml时,被继承的xml一定要注册,注册方式为<include file=”xxx.xml”></include>。

对于struts2,总结以下原理就是:根据url到struts.xml找name,如果有和url匹配的name,就找到对应的类,调用对应的方法。