Struts是一个开源的框架,通过采用JavaServlet/JSP技术,实现了基于Java EEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品。
Struts中主要的类有一下几种:
ActionServlet:核心控制类,导航流,负责截取URL和分发,中央控制器
ActionForm:收集表单数据
Actiont:业务层控制器(和模型层打交道的桥梁),获得表单数据,调用业务逻辑,返回转向信息
ActionFoward:包装了转向信息
大致的流程图如下:
下面用一个具体的实例分析Struts的工作流程:
流程分析:
1、首先客户端的请求以http方式发送到Tomcat服务器,通过创建httprequest和httpresponse调用ActionServlet
2、ActionServlet是一个中央控制器,它会根据请求截取URL,然后通过URL读取struts-config.xml文件中的配置信息,将配置信息封装到ActionMapping中,同时将表单数据保存到ActionForm中。并将该对象传递给请求的对象Action
3、Action可以根据传过来的ActionForm得到相应的数据,调用Model层。得到返回数据之后再返回到ActionServlet
4、ActionServlet会返回到对应的视图
使用struts和不是用struts的区别是什么?
(1)采用struts框架实现servlet的统一控制。传统的servlet开发中每写一个servlet都要在配置文件中,这就导致了当servlet很多的时候我们所看到的配置文件凌乱不堪。难于管理。采用struts框架,所有符合规范的请求将会统一交给ActionServlet进行处理,在struts-config.xml文件中根据配置决定由那个RealAction进行处理。
(2)在传统的servlet开发中,当处理完业务逻辑后具体的页面跳转是由每个servlet自己决定的,也就是说几乎每个servlet都有一条页面跳转代码,这样的话如果有N个servlet需要跳转到同一个页面,那相同的跳转语句需要重复写N次,更为重要的是如果后期需求变更,需要跳转到新的页面那么需要改动的代码也就有N次。采用struts框架能够解决这个问题,我们所需要做的仅仅是把跳转页置到<forward>标签中,需求变更的话只需改变配置文件即可。
(3)数据采集。Servlet开发中数据的采集是servlet接收到request,采用getParameter()方法取得表单数据,并且不能实现格式的自动转换。如果采用struts框架,定义好ActionForm后,ActionServlet会自动将表单数据加载到相应的ActionForm中并且实现数据类型的自动转换。
Struts是web前端开发的一个经典框架,很好的继承了MVC模式,并且进行了很多扩展,简化了web 程序的开发。对于Struts的学习才刚刚开始,很多细节的地方还是把握的不到位,在后边的学习中去专研。