struts2基本流程
本文主要说明struts2的主要使用流程和主要配置
概述
struts2是一个基于MVC设计模式的开源框架,本质是一个servlet,在MVC设计模式中里属于控制层,它做到了将业务逻辑控制器和servlet的API分离核心原理?
1.当web应用在启动的时候,会扫描xml文件,由于配置了一个过滤器,这个在实例化的时候会自动扫描struts.xml文件里的配置信息存放到web容器中;
2.当有请求发生的时候,就会按照struts的工作原理处理请求
3..struts2工作原理图
4.原理解读
a. 在用户发送请求的时候会经过ActionMapper,找到映射的servlet
b. 此时的servlet将经过一系列的过滤器,直到FilterDispatcher过滤完成再将请求交给ActionProxy动态代理生成一系列的拦截器
c. 经过调用拦截器处理后的请求若没有问题继续调用目标处理方法完成数据的交互;否则返回input逻辑结果,并且在值栈中会产生错误信息,目标方法也不会被调用,并且必须处理这个逻辑结果
d. 数据完成交互,也会返回一个逻辑结果,返回给struts2去处理
- 如何使用?
配置流程
1).要想使用struts2框架来处理用户的请求,在web.xml中配置一个过滤器:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2)配置struts.xml文件(配置在src根路径下,主要配置)
这是struts2应用框架的总配xml文件,里面可以配置一些常量:比如编码格式、设计模式(开发模式或产品模式)等:
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.devMode" value="false" />
也可以用include标签,可以分不同层次来包含其他基于struts2的xml文件:
<include file="要包含的xml文件路径" />
2)具体配置(主要的配置)
配置一个package标签,一般配置的属性:
name:包名(自定义)
extends:继承的包名
namespace:命名空间(项目名之后,目标请求action名之前)
例如:localhost:8080/stuts2/manage/admin/loginForm
/manage/admin就是命名空间
配置action:
目标请求名action:name(虚拟映射的名字)
目标处理器:class(XxxAction继承ActionSupport的类)
目标处理方法:method(在目标处理器类中定义的方法,名字必须一致),如果没有确定的目标处理方法,那么将默认调用execute()方法进行处理
注意:action名和目标处理方法必须各自对应起来,并且名字要一样,包括大小写
<struts>
<package name="management" extends="struts-default" namespace="/manage">
<action name="userLoginForm" class="sample.s2.web.action.UserAction" method="loginForm">
<result name="success" >/WEB-INF/jsp/manage/user-login.jsp</result>
</action>
</package>
</struts>