strust框架思想复习

来源:互联网 发布:红米手机怎么清空数据 编辑:程序博客网 时间:2024/05/19 13:59

很久没有接触这些个web框架,从头儿过一遍

首先,struts 的目的 简单来说,是以servlet为基础的。

如果要说servlet 就不得不说一下 web容器。

什么是web容器,在我的概念中,web容器就是一个复杂的socket 。监听某端口等待别的socket来请求,并返回请求结果字符串/流 给客户机。

那么,web 有两个环节就是最重要了

一,socket是接受请求,并用启用多线程来进行处理。

二,根据不同的请求,返回相应的内容。用socket写回去。

而后来,我们发现,这个监听并接受socket请求的模块,以及因为协议的问题,我们能得到一个规范的request 和 生成一个规范的response

这些内容可以说都是简单并且是重复的。所以,我们将其抽出来,就成了web容器。所以,一旦我们拥有了web容器,我们就得到了一个可启动监听的,并且能将socket封装成request以及response的这么一个工具。然后,我们就可以通过这个根据request的url来找到对应的我们自定义的servlet 来进行处理,并生成相应的文本,然后写回去,从而完成整个web流程。

那么,我们逐渐对我们自定义的servlet不满意了。为什么? 因为,每次在java代码中拼字符串,很狼狈,也不够优雅。同时,根据功能,一部分servlet代码是用来查询数据库,处理逻辑判断。而一部分servlet代码,就是拼接结果字符串。于是,我们就将拼接字符串的这部分代码给拆分出去。用另外一种形式来拼接字符串,比如jsp,比如struts ,比如velocity 目的就是用处理逻辑的servlet得到结果对象,然后将这写结果对象传入jsp页面,或者template里,并按照一定的逻辑或者语法顺序来形成了页面,这个页面,也就是我们拼接好的字符串。最后将这个字符串写回客户端,自此,一个动态的页面就生成了。

当然,针对处理逻辑的servlet我们也进行了拆分。在这里我们先不赘述,等到复习hibernate的时候,自然就会需要拆分这部分代码。

而在这里,我们的struts就应需求而生了,应什么需求,个人认为,需要将逻辑和页面分开,行成MVC模式。。。又见MVC。多少书上对这个MVC进行了强调,再强调。其实,简单来说,就是将代码分离,逻辑业务的就是逻辑和业务,而跟页面有关的诸如生成页面,或者从请求中获取数据,都是页面的事儿。

而且,struts有一个突破。就是单servlet 多action的方式。将很多的servlet集中在了一起。并且通过配置文件来写这些东西,这样,首先,降低了耦合率,成功和失败的跳转页面都写在了配置文件中。这样,如果修改一个jsp的文件名,那么,我们仅仅在一个配置文件中修改了就可以,而不用到各个的servet中去寻找并修改。集中管理,这是好处之一。第二个不错的地方就是,如果我们要用jsp并,按照逻辑代码和页面代码分离的思想,那么,如果一个没有参数的不需要请求数据库的页面,我们也得为其写两个servlet ,而显然,类似这种的adduser.jsp login.jsp 很多,那么,我们可以写一个公共的Action 让他们统统success 来各自在配置文件中找到自己相应的jsp就可以了。 

当然了,struts 是一个工具,一个MVC的工具。里面包含了很多能方便使用的东西,比如ActionForm 比如DynaActionForm等等内容。以及Valider ,便于开发,简便开发。是struts的目的,我们学习工具,不是为了说盲目的,因为公司使用,而去使用它,而是要根据他解决了什么问题,对我们有什么好处而去使用它,这样,我们才能知道什么是优势,什么是劣势。才能让我们更好的使用工具为我们的项目服务。而不是为工具所累。

原文地址:http://blog.csdn.net/kfanning/archive/2011/06/24/6566313.aspx 转载请保留,谢谢