`

struts1工作原理

 
阅读更多

 

二、struts工作原理

来自客户的所有需要通过框架的请求,统一由ActionServlet接收(ActionServlet Struts已经为我们写好了,只要您应用没有什么特别的要求,它基本上都能满足您的要求),根据接收的请求参数和Struts配置(struts-config.XML)ActionMapping,将请求送给合适的Action去处理,解决由谁做的问题,它们共同构成Struts的控制器。

Action则是Struts应用中真正干活的组件,解决的是做什么的问题,它通过调用需要的业务组件(模型)来完成应用的业务,业务组件解决的是如何做的问题,并将执行的结果返回一个代表所需的描绘响应的JSP(或Action)的ActionForward对象给ActionServlet以将响应呈现给客户。

这里要特别说明一下的是:就是Action这个类,它不应该包含过多的业务逻辑,而应该只是简单地收集业务方法所需要的数据并传递给业务对象。实际上,它的主要职责是:

校验前提条件或者声明

调用需要的业务逻辑方法

检测或处理其他错误

路由控制到相关视图

三、struts运行机制

Struts的工作流程:

web应用启动时就会加载,初始化ActionServletActionServletstruts-config.xml文件中读取配置信息,把它们存放到各种配置对象中,当ActionServlet接收到一个客户请求时,将执行如下流程.

    (1)检索和用户请求匹配的ActionMapping实例,如果不存在就返回请求路径无效信息;

(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;

(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionFormvalidate()方法;

(4)如果ActionFormvalidate()方法返回null或返回一个不包含ActionMessageActuibErrors对象, 就表示表单验证成功;

(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的Action实例不存在,就先创建这个实例,然后调用Actionexecute()方法;

(6)Actionexecute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给 ActionForward对象指向的JSP组件;

(7)ActionForward对象指向JSP组件生成动态网页,返回给客户

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics