Struts2学习:Overview之Nutshell

        写在前面的话:Struts2的理解一直处于似懂非懂的状态让我很是苦闷,在使用的过程中Struts2的强大已经让我叹为观止,不知道这个用词是否准确。为了更好的理解Struts2,决定拜读下官方的guide,顺便做下翻译,希望自己能够坚持下来,阅读的过程中肯定有很多地方理解不了,但是还是打算直接译出来,也许一段时间以后再毒一遍的话就能够理解的更深刻了。

1.坚果壳中的apache struts2 体系

不知道为什么struts2的官方文档中为什么要使用nutshell这个词语来表述,我只好直译了,也许是要表达一个框架的意思吧,整个struts2框架体系如下图所示:

它的具体流程如下:

a.  首先浏览器发出请求,请求一个服务器端资源,这也许是一个action,也许是别的   什么东西

b.  FilterDispatcher会对每个请求进行检查,然后选择合适的action

c.  拦截器会自动对客户端的亲求进行一些一般化的操作,例如工作流(workflow)、确认(validation)以及文件上传的处理

d.  Action中的方法被执行,它通常都是向数据库中存储数据或者检索数据

e.  Result会将输出返回到浏览器,这通常是一个html文件或者图片等等

2.坚果壳中的struts标签

Struts中的标签库确实为我们程序的编写提供了很大的方便,使用struts标签之后,程序代码的数量确实减少了很多。除了减少代码量之外,struts标签相对于普通的html标签而言功能更加强大,例如有的标签还支持国际化、本地化等等,总之呢,struts标签就是好,^_^,而且容易理解。不过说实话,我在项目中还是很不习惯又这个struts标签,我一般都是采用的普通html标签再加上jstl标签。

3.坚果壳中的struts配置

一个web应用程序通常使用一个部署描述符来初始化诸如过滤器、监听器之类的支援,这个部署描述符通常都是以xml文件的形式存在,并且命名为web.xml。在struts2中你可以通过生命在web.xml中的java类来初始化资源,你还可以通过一个叫struts.xml的文件来完全控制这些配置。下面展示了一个典型的struts.xml配置文件:

 

  <struts>
   
   
    <package name="default" extends="struts-default">
   
   
        <action name="Logon" class="mailreader2.Logon">
   
   
            <result name="input">/pages/Logon.jsp</result>
   
   
            <result name="cancel" type="redirect-action">Welcome</result>
   
   
            <result type="redirect-action">MainMenu</result>
   
   
            <result name="expired" type="chain">ChangePassword</result>
   
   
        </action>
   
   
        <action name="Logoff" class="mailreader2.Logoff">
   
   
            <result type="redirect-action">Welcome</result>
   
   
        </action>
   
   
    </package>
   
   
  </struts>
   
   

3.坚果壳中的Struts MVC

Struts2是一个MVC框架,它提供了控制器(controller)和视图(viewer)组件,并且和其它技术相结合来提供Model组件。框架的控制器可以看作是应用程序的ModelWebview之间的一个桥梁。

为了使动态显示数据更加方便,struts框架还提供了一个标记库。这些标签能够同框架的验证(validation)、国际化(internationalization)特征相互作用,确保输入的正确性和输出的本土化。标签库能同JSPFreeMarker等一起使用,而且不影响其它的标签库如JSTL等的使用,它还支持JSF组件。

当一个请求达到的时候,控制器(Controller)会调用一个Action类。这个Action类会在“咨询”Model组件(代表业务逻辑)后检查或者更新应用程序的状态,为了在Model层和View层之间传输数据,我们可以在Action类中放置属性,或者在一个POJO中放置。

绝大多数时候,Model看起来就像一个JavaBean对象。Model承担了大多数的工作,而Action就像一个交通警察或者适配器一样,只是负责一下监管。框架还提供了非常成熟且自动化的类型转换器,藉此来简化丰富的域对象与纯文本的http请求之间的数据传输工作。

Struts的扩展性非常好,它部署的每一个类都是面向借口的,它提供了一个应用程序可能用到的所有基础类,如果应用还需要别的类,你可以自己去主动的添加,这就是面向接口的好处。尽管struts提供了很多了功能,但是开发人员还是可以以他们自己的方式来开发。

4.总结

    基于已有的行业标准和设计模式,struts2可以帮助我们为企业级开发创建一个可扩展的开发环境,如果我们只是要开发一个小的系统的话,我们完全可以采用JSP Model1开发模式;如果我们要开发的是一个更加复杂的系统,包含很多的页面,并且可能要运行很久的话,使用Struts是一个不错的选择,^_^

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值