struts1.2原理
2010-03-23 22:31
225 查看
Struts应用中包含3种组件:控制器组件(C)、模型组件(M)、和视图组件(V)。
控制器:ActionServlet(核心控制器)、自定义Action(代表一个用户操作)。
模型组件:定义和实现业务逻辑的接口和类。
视图组件:jsp页面、ActionForm和Struts标签。
ActionServet是Struts最核心的组件。在Web容器启动的时候,ActionServlet被初始化,加载struts-config.xml配置文件(这就是为什么当struts配置文件修改后要重启web容器)。
Struts处理请求的详细过程:
1)客户端浏览器发送请求到ActionServlet,ActionServlet根据请求的路径和struts-config.xml的配置信息找到对应的Action Bean 和 Form Bean 。如发送请求http://hocalhost:8080/myweb/register.do到服器,
ActionServlet就会根据struts配置信息找path属性为“/register”的Action Bean,于是找到RegisterAction,并得知RegisterAction的name属性为"memberForm",于是找到MemberForm的实例(如果不存在则创建)。
2)在确定将要调用的Action
Bean 和 对应的Form Bean后,就将请求中的值填充到Form Bean 中(Action可以不关联任何ActionForm,这一步是可选的)。在调用Action的execute方法之前,ActionServlet还要准备好ActionMapping 参数,ActionMapping中包含了该Action的配置信息。
3)然后struts将请求分发至相应的 Action Bean 处理,ActionMapping参数,ActionForm参数,request 和 response都作为参数传给处理请求的Action Bena 的 execute 方法。
4)Action 调用业务逻辑方法,得到返回值,并返回ActionForward对象。
5)控制权重新回到
ActionServlet ,ActionServlet 很据 Action 返回的 ActionForward 对象转发到相应的jsp
6)处理结果返回给浏览器。。
注意的地方:
1) ActionServlet 将控制权转到页面的时候采用的是 转发 的方式
(
request.getRequestDispatcher(url).forward(request,response); ),所以转发到页面的request 和 Action 方法参数中的 request 是同一个请求,数据可以通过 request 对象的 attribute 属性传递。
2)当需要重定向的方式转到新的页面的时候,可以再 Action 代码中使用
( response.sendRedirect(url); ) ,并返回 null 。
3)ActionForm 很据对应 Action 的 scope 属性配置不同而生命周期有所不同。一般,scope 属性设为
request, 则每次请求开始时
ActionServlet 创建新的
ActionForm 对象,保存在
request 对象的 attribute
属性中。所以可以在
Action 代码中设置
ActionForm 的值 ,在页面中取出。
控制器:ActionServlet(核心控制器)、自定义Action(代表一个用户操作)。
模型组件:定义和实现业务逻辑的接口和类。
视图组件:jsp页面、ActionForm和Struts标签。
ActionServet是Struts最核心的组件。在Web容器启动的时候,ActionServlet被初始化,加载struts-config.xml配置文件(这就是为什么当struts配置文件修改后要重启web容器)。
Struts处理请求的详细过程:
1)客户端浏览器发送请求到ActionServlet,ActionServlet根据请求的路径和struts-config.xml的配置信息找到对应的Action Bean 和 Form Bean 。如发送请求http://hocalhost:8080/myweb/register.do到服器,
ActionServlet就会根据struts配置信息找path属性为“/register”的Action Bean,于是找到RegisterAction,并得知RegisterAction的name属性为"memberForm",于是找到MemberForm的实例(如果不存在则创建)。
2)在确定将要调用的Action
Bean 和 对应的Form Bean后,就将请求中的值填充到Form Bean 中(Action可以不关联任何ActionForm,这一步是可选的)。在调用Action的execute方法之前,ActionServlet还要准备好ActionMapping 参数,ActionMapping中包含了该Action的配置信息。
3)然后struts将请求分发至相应的 Action Bean 处理,ActionMapping参数,ActionForm参数,request 和 response都作为参数传给处理请求的Action Bena 的 execute 方法。
4)Action 调用业务逻辑方法,得到返回值,并返回ActionForward对象。
5)控制权重新回到
ActionServlet ,ActionServlet 很据 Action 返回的 ActionForward 对象转发到相应的jsp
6)处理结果返回给浏览器。。
注意的地方:
1) ActionServlet 将控制权转到页面的时候采用的是 转发 的方式
(
request.getRequestDispatcher(url).forward(request,response); ),所以转发到页面的request 和 Action 方法参数中的 request 是同一个请求,数据可以通过 request 对象的 attribute 属性传递。
2)当需要重定向的方式转到新的页面的时候,可以再 Action 代码中使用
( response.sendRedirect(url); ) ,并返回 null 。
3)ActionForm 很据对应 Action 的 scope 属性配置不同而生命周期有所不同。一般,scope 属性设为
request, 则每次请求开始时
ActionServlet 创建新的
ActionForm 对象,保存在
request 对象的 attribute
属性中。所以可以在
Action 代码中设置
ActionForm 的值 ,在页面中取出。
相关文章推荐
- struts1.2原理:什么是struts,如何处理配置文件的大的问题?
- struts1.2原理
- struts1.2原理
- struts1.2原理
- struts 1.2 原理
- Struts原理、开发及项目实施
- struts1.2配置详细
- struts原理
- MVC框架之—Struts原理简介与简单开发流程部署
- 从零开始创建基于struts1.2 + Hibernate3.0 Web工程
- Spring MVC 与 Struts 对比原理分析.
- Struts1.2应用-批量封装对象
- what changs in struts 1.2
- Spring总结及不同版本间的区别以及 Struts1.2+Spring1.2+Hibernate3.1的整合
- Weblogic8.1 + struts1.2 中使用JSTL标签和EL表达式
- Struts1——从BeanUtils看struts的实现原理2
- 传智播客struts学习,strust标签和formbean的原理及作用
- Struts原理
- Struts原理、开发及项目实施
- 创建基于struts1.2 + Hibernate3.0 Web工程(第一部分)