浅入浅出Struts框架

来源:互联网 发布:域名怎么有免费的吗 编辑:程序博客网 时间:2024/05/19 14:54

   Struts开源框架,是应用在Web层的框架,是个重量级的框架.何为重量级?Struts需要Web服务器的支持才能运行,而不像HibernateSpring,不需要任何容器来支持,直接通过main方法就可以进行测试.这是目前我理解的轻量级框架与重量级框架的含义.

 说到Struts,貌似不能不提MVC,MVC是两种体现形式.一种是Model1一种是Model2.我的博客<<Model1和Model2>>有详细介绍,Struts是基于Model2实现的.在我们的上一个DRP项目中,在用户管理之后,我们都是采用Model2模式来实现的.还记不记得我们在web.xml文件中写了那么多Servlet映射?还记不记得我们手动写了多少个Servlet。手动Servlet编写与Servlet配置是个繁琐的工作,而Struts替我们解决了这个问题。Struts是如何做到的呢,让我们了解一下Struts的内部结构。

 看Struts是如何实现MVC的?

   

Model部分

由JavaBean组成,ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给ActionAction根据ActionForm里面的请求参数处理用户的请求。JavaBean则封装了底层的业务逻辑,包括数据库访问等。

View部分

该部分采用JSP实现。Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。对应上图的JSP部分。

Controller组件

Controller组件有两个部分组成——系统核心控制器,业务逻辑控制器。系统核心控制器,对应上图的ActionServlet。该控制器由Struts框架提供,继承HttpServlet类,因此可以配置成标注的Servlet。该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用Model来完成处理。对应Action部分。


让我们在看一下Struts的工作流程?


1.初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web.xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config.xml)的配置信息,为struts中不同的模块初始化相应的对象。(面向对象思想)

2.发送请求:用户提交表单或通过URL向WEB服务器提交请求,请求的数据用HTTP协议传给web服务器。

3.form填充:struts的总控制器ActionServlet在用户提交请求时将数据放到对应的form对象中的成员变量中。

4.派发请求:控制器根据配置信息对象ActionConfig将请求派发到具体的Action,对应的formBean一并传给这个Action中的excute()方法。

5.处理业务:Action一般只包含一个excute()方法,它负责执行相应的业务逻辑(调用其它的业务模块)完毕后返回一个ActionForward对象。服务器通过ActionForward对象进行转发工作。

6.返回响应:Action将业务处理的不同结果返回一个目标响应对象给总控制器。

7.查找响应:总控制器根据Action处理业务返回的目标响应对象,找到对应的资源对象,一般情况下为jsp页面。


PS:上面总结的内容都是通过上网查资料,以及前端时间的DRP学习与现在的Struts学习结合起来的收获,希望总结出来,能帮助初学者更快更好的理解Struts




原创粉丝点击