Struts1学习笔记(Struts的工作原理)
来源:互联网 发布:动感单车音乐 知乎 编辑:程序博客网 时间:2024/05/16 00:28
1.读取配置
Struts框架总控制器(ActionServlet)是一个Servlet,我们在web.xml文件中配置成启动的Servlet。同时配置了struts-config.xml并在web.xml中把此文件作为一个参数配置给总控ActionServlet。也即是说,struts-config.xml最终会被总控ActionServlet使用。总控读取struts-config.xml后并为不同的struts模块初始化ModuleConfig对象(如ActionConfig、ControlConfig、FormBeanConfig、ForwardConfig、MessageResourcesConfig对象)。
2.发送请求
用户提交表单或调用URI向Web应用程序提交一个请求,请求的数据用HTTP协议上传给Web服务器
3.填充Form
结合上例,当派发的请求为*.do时,web服务器会转交给ActionServlet处理(Servlet处理模式)。同样,在交由ActionServlet处理时,会读取到<init-param>下的配置struts-config.xml。从此配置文件中找到Action,而<action>中的属性name属性指定了这个Action所关取的ActionForm. ActonForm被实例化并用HTTP请求的数据填充其属性,并且保存在SevletContext(request或session)中,这样它们就可以被Action调用。 总结:当递交一个*.do的请求时,总控ActionServlet根据请求数据来填充Form。
4.派发请求
完成Form填充后,ActionServlet会继续把这个请求及这个ActionForm(可以想成一个Bean)一并传给Action中的execute()方法。(可以在此方法中看到一个参数:ActionForm form. 而且在此方法中我们使用了LoginForm loginForm = (LoginForm)form;来进行强制转换,其目的就是为了得到ActionForm的子类的对象,以便后面可以直接获取这个实例所保存的属性)
5.处理业务
简单的说,就是Action类(具体表现为它的子类)调用其它业务逻辑模块进行相关处理。处理完成后会返回一个ActionForwad对象(此对象对应一个具体的jsp页面或另一个Action)给总控。
6.查找响应
当返回ActionForward对象给总控时,总控会根据这个返回的对象来找到一个对应的资源对象,通常是一个具体的jsp页面。
7.处理返回响应
把上一步找到的jsp页面处理结果返回给客户端。
8.再总结配置文件struts-config.xml
(1).<form-beans>下的每个<form-bean>就对应于一个ActionForm子类(用type属性指明所对应的ActionForm)
(2).<action-mappings>下的每一个<action>就对应于一个Action子类,同样用type属性指明了对应的Action,并让name属性来关联相应的ActionForm。 特别要注意在<action>元素中必须配置path属性,且要以“/”来开头。在login.jsp中的action=.../login.do,/login和Action配置的path属性对应,“.do”和总控的Servlet映射配置相对应。 可以这样理解:在提交一个.do请求时只能被告知请求要转交给总控处理,而加上/login后,便能保证总控会把请求派发给相应的Action。
9.开发流程
(1)搭建环境(2)编写Form并注册 (3)编写Action并注册 (4)编写jsp页面 (5)发布测试
说明:由于它们在开发中相互有依赖,所以建议在开发前最好有一个整体的构思图。
- Struts1学习笔记(Struts的工作原理)
- struts1学习笔记--工作原理
- 【Struts】--Struts1工作原理
- Struts学习笔记:Struts Framework工作原理
- Struts1 的工作原理
- struts1的工作原理
- struts1的工作原理
- struts1的工作原理
- struts1的工作原理
- struts1的工作原理
- struts1的工作原理
- struts1的工作原理
- struts1的工作原理
- struts1的工作原理
- struts1的工作原理
- struts1的工作原理
- struts1的工作原理
- struts1的工作原理
- Struts2中使用Common-FileUpload实现文件上传
- 【原创】关于s3c24XX系列2.6.35.7内核移植挂在s3c_gpio_setpull的解决方法
- 什么是MVC设计模式
- Struts1学习笔记(Struts模式)
- C#与java利用XML进行通信
- Struts1学习笔记(Struts的工作原理)
- Bash 和 Dash
- 自旋锁和信号量区别
- FORK()函数的理解
- 大家好·~~~
- Windows7开机加速全攻略
- 精通init ramfs构建step by step(三)
- 一个不错的知识管理工具--wiz
- JfreeChart中文乱码解决方案