点击量:523
今天上海下雨了,阴冷的天让人不想出门,窝在被窝里看到了一本书:《struts2-in-action》。第一感觉是struts2这个词已经被听烂了,大学里面各种web课程项目里几乎都有它的身影,SSH嘛,第一个S就是struts。但仔细一想struts究竟是什么呢?我竟然无法准确回答出来。带着疑问阅读了这本书的第一节:Struts 2: the modern web application framework
在读之前看到作者在书的留白处还写了这样一句话:
To world peace
and a global redistribution of prosperity(为了世界和平,为了全球繁荣的重新分配)
不得不感叹国外的程序员就是逼格高啊。
文章首先介绍了最基本的HTTP通信流程,客户端发送请求到服务器端,服务器返回数据。服务器端接受到的就是HTTP请求,包括一些基本HTTP REQUEST信息还有请求参数等。所以你拿到这一堆数据之后就需要把它们转换为java可用的对象,处理完逻辑之后再把java对象转换为文本返回给客户端。每个请求都这么做实在是太繁琐了,于是java提出了servlet的概念。这些基本的解析步骤servlet帮你做了,你要拿参数只需要调用getRequestParam(“key”)就可以拿到请求参数的值了,返回给客户端的数据也是如此。
如上图所示,servlet是运行在servlet container(tomcat就是这样的角色)里,请求先到container然后再转发到具体的某一个servlet。
servlet解决了一些问题,但是功能明显不够强大。
于是struts2站出来了,它在此基础上增加了如下功能:
■ Binding request parameters to Java types
servlet里保存的都是string类型,比如”age”:”18″,而struts提供了类型转换的功能
■ Validating data
验证数据,struts会验证一些基本的数据是否合法,比如邮编,邮箱等
■ Making calls to business logic
■ Making calls to the data layer
struts可以对请求指定调用到某一个具体的业务逻辑层或者数据层
■ Rendering presentation layer (HTML, and so on)
■ Providing internationalization and localization
表现层,支持国际化和本地化
这是struts2的架构图:
可以看出struts是遵循MVC设计规范的:
CONTROLLER—FILTERDISPATCHER:进行转发分配,把request映射到action
MODEL—ACTION:这里主要是数据模型和业务逻辑
VIEW—RESULT:这个就是结果展示
总结一下:
servlet为HTTP文本转为java环境可用的数据提供了一些基本的功能,而struts在其基础上提供了更多的功能,遵循MVC规范,使得java的web开发更加简单和规范。