一、Struts2简介
a)Struts —>(英文)支架—>框架
b)Jakarta项目—>Apache软件基金会(包含HTTP服务器 Tomcat Lucene Struts)
c)Struts是流行和成熟的基于MVC设计模式的Web应用程序框架
d)使用Struts目的:帮助我们减少在运用MVC设计模型来开发Web应用的时间
二、编写web.xml,配置Struts2过滤器
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<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>
</web-app>
三、编写Struts2配置文件struts.xml
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<!--2.5版本必须加,安全性考虑-->
<!--<global-allowed-methods>regex:.*</global-allowed-methods>-->
<action name="user_*" class="com.test.controller.UserAction" method="{1}" >
<result name="index">{1}.jsp</result>
<result name="add">{1}.jsp</result>
<result name="edit">{1}.jsp</result>
</action>
</package>
</struts>
四、 struts.xml文件配置介绍
1.package配置
a)name属性: 作用:定义一个包的名称,它必须唯一.
b)Namespace属性 :作用:主要是与action标签中的name属性联合使用来确定一个action的访问路径
c)extends属性: 作用:主要是制定继承自哪个包,一般值为struts-default
Struts-default包是在struts-default.xml文件中声明的(位置:struts2-core.jar包中)
d)abstract属性:它代表当前包是一个抽象的,主要用于被继承
2.action配置
a)name属性 :作用:主要是与package标签中的namespace属性联合使用来确定一个action的访问路径
b)class属性 :作用:主要是用来指示当前的action类的全路径类名
c)method属性: 作用:用于指示当前action类中的那个方法去执行
3.result配置
它主要是用于指示结果视图,包含再action标签中
a)name属性 作用:是与action类中的method方法的返回值进行匹配,来确定跳转路径
b)type属性 作用是用于指定跳转方式(在struts2-core.jar/struts-default.xml中可以找到)
四、Struts2的Action创建方式
Action编写的三种方式
(1)直接创建一个pojo类
优点:无耦合
缺点:无论什么功能,都需要自己来完成
(2)创建一个类,让它实现action接口,可以有五个常量值,还有一个execute方法
优点:耦合度低,在action接口中定义了struts2的五种逻辑视图名称,它们可以被框架识别
缺点:大部分功能还是需要我们自己来完成
(3)创建一个类让它继承actionSupport类,因为actionSupport类实现了action接口,所以第二种方案具有的特点,我们也有
优点:具有了丰富的功能,表单校验,错误信息设置,国际化的功能.
缺点:耦合度高
我们在开发中使用继承actionSupport这种方案会比较多
五、Struts2的Action的访问方法
Action的三种访问方法
(1)使用Action标签中的method属性实现
(2)使用通配符方式实现
在Action标签里面的name属性,使用"*"表示匹配任意内容
<action name="book_*" class="" method="{1}"> //取到第一个*
(3)动态访问实现
六、Action三种接收参数的方式
a)action属性接收参数
b)用DomainModel(实体模型)接收参数(VO DTO)
c)用ModelDriven接收参数