SSH框架学习语录一:学习Struts,先从Servlet编程开始

19 篇文章 0 订阅
12 篇文章 0 订阅

        学习Struts,建议先从 web Servlet编程开始学起,跟着框架发展的轨迹,用心体悟那设计之美的韵味。      

 

       和最初接触java web编程一样,我们乐此不疲的用着Servlet,写着重复度很高的代码,来做那些简单的功能开发。

 

        像现在好多成熟的框架那样,我们在感觉重复编程枯燥无味的同时,有人不甘于此,厉声大呼,“我要轻松高效的编程,不要重复枯燥的劳动”。于是慢慢的演变出了很多框架,也出现了Model1的进阶版Model2,由Model2进阶到Struts1Struts1又进阶到Struts2等等。

     

       Model1:还是男耕女织,落魄的旧时代。那时候的程序猿多数是典型的多体力少脑力的劳动人民,你长得结实 ,肯加班,甚至多吃两口白米饭就能多搞出来几个功能页面。

 


图片摘自 <http://book.51cto.com/art/200708/53966.htm>

 

 

       Model2:时代在进步,MVC的初步应用已经让饱受Model1劳赘的同志们欢呼雀跃不已,MVC带来了盘古开天辟地的感觉,让业务逻辑和页面展示分开了,不用再写强耦合的代码,也不用修改的时候在代码堆里翻来找去的了。Model2中用Servlet来做控制器,接受Web请求,再来调用JavaBean,这就有了一种层次和高度的体现。

 


图片摘自 <http://book.51cto.com/art/200708/53966.htm>

 

        Model2Struts1的过渡,也是那些“偷懒的”设计者做的好事,当Model2Servlet里的众多if else 被大家厌恶的时候,配置文件+反射,就此跳出来拯救世界了,从繁杂的业务逻辑或者功能开发中,找出结构化、近模板化的东西,把这些带有分支气味的代码拿出来,放到了配置文件中,用反射技术来动态获取任何你想要得到的东西,也使得需求变更,代码维护更方便。

 

        大家可以跟着网上的系列文章,把这几个过程的Demo做一下,更能感受到其中的设计之美,变化之味。

 

        Struts1:框架之路的开始,在Struts1中,将ActionServlet封装成了Struts1的核心类,同样也作为了很重的Controller控制器在配置文件中随着WebProject的启动而加载,并且根据配置的映射信息会把相应的Action实例化一遍,在页面发送http请求的时候会被ActionServlet处理,进而 调用映射的Action对象来处理相关逻辑,处理结束根据配置中的跳转信息,跳转到相应页面。

 

        struts1中执行页面请求的流程图如下:


 


        struts1的简易脑图.

 

        Struts2:较之Struts1来说,更友好,没有那野蛮的侵入性代码,主要变动的地方就是将自定义action类必须继承Action这一条约束和侵入性很强的一点去掉了,并且将ActionForm(页面实体类)融合到了自定义action类中,可以自由的使用轻便的POJO来承载页面数据。

 

        改进后的struts将原来Actionexecute()方法里的众多核心对象,将HttpServletRequest等对象融合到了ActionContextServletActionContext中,将原来Struts1Action中暴露出来的ActionMappingActionForm等都融合进框架等。

 

      Struts2Struts1进步很多,使之侵入性更小,更轻便高效,从webWork中吸收了好多优秀的框架设计。这也是每个框架进步的动力和源泉,互相借鉴发展。

 

       Servlet的原始编程开始,经历着框架从无到有,开发由繁琐重复到简洁高效,着一步一步走到Struts2框架的产生,都是我们的OO思想作为发散的基点,也是有着那些“懒”人本着不将就的原则在一点点改变着我们的程序设计。

 

     

 


评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一道光_

1分也是爱,鼓励鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值