美文网首页
企业级应用开发的作业1-structs2 的调查

企业级应用开发的作业1-structs2 的调查

作者: MatrixFK | 来源:发表于2017-03-05 15:36 被阅读52次

1412653 杨立

作业要求:

调研Struts 2中对使用MVC框架进行系统开发的支持,建议:
1)从MVC三个方面分别整理Struts 2中的概念及其对应关系;
2)提出一个例子,按照Struts的构建方法讲解MVC实现和各部分之间的关系。

1,从MVC三个方面分别整理Struts 2中的概念及其对应关系

  • 什么是Structs2?

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

  • 什么是MVC?

模型(Model):负责封装应用的状态,并实现应用的功能。通常分为数据模型和业务逻辑模型,数据模型用来存放业务数据,比如订单信息、用户信息等;而业务逻辑模型包含应用的业务操作,比如订单的添加或者修改等。

视图(View):用来将模型的内容展现给用户,用户可以通过视图来请求模型进行更新。视图从模型获得要展示的数据,然后用自己的方式展现给用户,相当于提供界面来与用户进行人机交互;用户在界面上操作或者填写完成后,会点击提交按钮或是以其它触发事件的方式,来向控制器发出请求。

控制器(Controller):用来控制应用程序的流程和处理视图所发出的请求。当控制器接收到用户的请求后,会将用户的数据和模型的更新相映射,也就是调用模型来实现用户请求的功能;然后控制器会选择用于响应的视图,把模型更新后的数据展示给用户。

  • Struct2是如何实现MVC的?

通过调查资料之后,在我看来,struct2 实现的是MVC框架中的C的工作,然后将信息传递给M,再返回给V。

struct2 结构

而Struct2本身是由三部分构成的:

控制器——FilterDispatcher

用户请求首先到达前端控制器FilterDispatcher。FilterDispatcher负责根据用户提交的URL和struts.xml中的配置,来选择合适的动作(Action),让这个Action来处理用户的请求。FilterDispatcher其实是一个过滤器(Filter,servlet规范中的一种web组件),它是Struts2核心包里已经做好的类,不需要我们去开发,只是要在项目的web.xml中配置一下即可。FilterDispatcher体现了J2EE核心设计模式中的前端控制器模式。

动作——Action

在用户请求经过FilterDispatcher之后,被分发到了合适的动作Action对象。Action负责把用户请求中的参数组装成合适的数据模型,并调用相应的业务逻辑进行真正的功能处理,获取下一个视图展示所需要的数据。Struts2 的Action,相比于别的web框架的动作处理,它实现了与Servlet API的解耦,使得Action里面不需要再直接去引用和使用HttpServletRequest与HttpServletResponse等接口。 因而使得Action的单元测试更加简单,而且强大的类型转换也使得我们少做了很多重复的工作。

视图——Result

视图结果用来把动作中获取到的数据展现给用户。在Struts2中有多种优秀的结果展示方式,常规的jsp,模板 freemarker、velocity,还有各种其它专业的展示方式,如图表jfreechart、报表JasperReports、将XML转化为 HTML的XSLT等等。而且各种视图结果在同一个工程里面可以混合出现。

实际上上图完整的MVC框架我觉得还可以再拓展开来,把完整的MVC给画出来。

完整的structs2 的 mvc框架示意图

2,提出一个例子,按照Struts的构建方法讲解MVC实现和各部分之间的关系

下面要举出的例子是一个网站用户注册的例子:

为了介绍用户注册的例子,我们需要假设我们有一个简单的mysql数据库,数据库里面有一张表,是用于存放用户信息的表。
我们假设这个表为:

| 账号 | 密码 |
| : | |
| account1 | password1 |
|account2 | password2 |
| account3 | password3 |

下面开始正式讲解利用structs2构建mvc框架的过程
假设我们的网站注册页面的对应的url是 /login,那么当用户在视图层填写注册信息点击注册之后,会从前端传来一个json数据

{
    "account":"xxxx",
    "password":"xxxxx"
}

这个数据会交给struct2中的Filter Dispatcher 这个过滤器中,过滤器通过url匹配,将这些信息传递给对应的Action类,这个Action类根据上一层调用的方法,执行相应的动作。这里执行注册动作,这个动作需要数据库的配合。

注册类调用model里面的User类提供的添加新用户方法,传入注册时的账号和密码。User类得到参数后,调用数据库接口的sql语句,在数据库中新增一条数据,之后得到数据库执行返回的结果。

接着将这个结果传递给Result,Result发现返回的数据是执行成功后的结果,调用对应的jsp,渲染html界面,传递给前端。用户看到界面,整个过程完成。

3,总结

实际上在structs中的MVC框架还是比较简单容易理解的,也不需要说太多,更多的还是在实践中体会吧。

相关文章

网友评论

      本文标题:企业级应用开发的作业1-structs2 的调查

      本文链接:https://www.haomeiwen.com/subject/roqjgttx.html