Struts 2项目的运行流程
1.用户通过jsp页面向服务器提交数据(如用户名、密码等);
2.Web应用读取web.xml文件,自动加载Struts 2的核心过滤器StrutsPrepareAndExecuteFilter,拦截用户请求;
3.根据用户提交表单中action的值,在struts.xml配置文件中查找相应的action配置(表单中的action与struts.xml中action元素中name的值比较),然后将已拦截的请求转发给对应的Action类来处理(struts.xml中每个action元素有指定的class);
4.如果不在action元素中指定method,系统默认调用execute()方法来处理客户端请求,返回相应结果(字符串,如SUCCESS或INPUT等);
5.根据结果,在struts.xml配置文件中,找对应action元素的result,根据返回值确定下一步跳转。
Struts 2中常用配置文件
1.web.xml——对整个应用程序进行配置,在Struts 2框架中要配置核心控制器StrutsPrepareAndExecuteFilter,用于初始化Struts 2框架以及处理所有请求;
2.struts.properties——属性定义文件,由键值对构成;
3.struts.xml
(1)管理元素:包含Bean配置、常量配置、包配置、命名空间配置、包含配置;
(2)用户请求处理元素:包含拦截器配置、Action配置、Result配置;
(3)错误处理元素:包含异常配置。
包配置——对一个包中的所有Action和拦截器统一管理。
命名空间——解决重名问题(Action可能有多个,会重名)。为包指定命名空间后,此包下的所有Action处理的URL为“命名空间/actionName.action”。Struts 2框架按照以下顺序来执行Action:
(1)查找指定命名空间下的Action,如果找到则执行;
(2)找不到再到默认命名空间中找指定的Action,找到则执行;
(3)都找不到,报错。
当指定namespace="/"时,表示命名空间为根命名空间,与普通的命名空间一样,该命名空间的包下的Action只能处理“项目名/actionName.action”(即符合“命名空间/actionName.action”),与默认命名空间的区别是,根命名空间不能处理如下的url请求:
http://localhost:8080/项目名/xxx/actionName.action
而默认命名空间不仅能处理http://localhost:8080/项目名/actionName.action,也能处理上述的url请求。