根据《Java高手真经》整理的学习笔记
Struts是一种基于MVC(Model,View,Controller)模式的软件框架。
一、Struts体系结构
Struts是一种开源代码的应用框架,也就是把Servlet,JSP,JavaBean,自定义标签和信息资源整合到一个统一的框架中,为Web开发提供可配置型的MVC开发模式。
具体过程为:
- 当用户提出Request请求,被ActionServlet接受,依据struts-config.xml的配置文件来决定将用户的请求发给具体哪个Action对象。在struts-config.xml中每个action映射信息都通过一个action元素配置,这些配置信息在系统启动的时候被读入内存,每个action元素都对应一个actionMapping实例
- Model模型通过Action更新系统的状态,调用业务逻辑
- View主要由Jsp建立,并且struts自己本省有自定义标签库可以用来创建用户界面
二、关于Struts的核心组件和相关配置文件
ActionServlet:核心组件,接受用户请求和状态改变,发出视图的选择——Controller
ActionMapping:状态改变事件
Action:用于模型交互、执行状态改变或状态查询告诉ActionServlet下一个选择的视图
ActionForward:用户指向或视图的选择
ActionForm:状态改变的数据
ApplicationResources.properties:存储本地化信息和标签
struts-config.xml:包含用户请求路径和Action映射关系的配置信息
struts-html.tld:创建struts输入表达的tag和html相关的tag
struts-bean.tld:访问bean和bean属性时使用的tag
struts-logic.tld:生成输出文本和其他一些控制信息
struts-tiles.tld:进行站点也没布局
struts-nested.tld:增强struts标签嵌套使用的能力
三、Struts请求处理流程
- 检索和用户请求相匹配的ActionMapping实例,如果不存在,就返回用户请求路径无效。
- 如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中。
- 根据配置信息决定是否需要表单验证,如果需要验证,就调用ActionForm的Validate()方法
- 如果ActionForm的Validate()方法返回null或返回一个ActionErrors对象,就表示表单验证成功
- ActionServlet根据ActionMapping实例包含的映射信息决定将请求转发给哪个Action,如果不存在,就先创建这个实例,然后调用Action的execute()方法
- Action的execute()方法返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指向的JSP组件
- ActionForward对象指向的JSP组件生产动态网页,返回给客户。