`

Struts2杂谈

阅读更多

看看Struts-2理流程:  

1)   Browser生一个求并提交框架来理:根据配置决定使用哪些截器、action果等。  

2)   经过一系列截器:根据求的级别不同截器做不同的理。Struts-1RequestProcessor很相似。  

3)   Action:       生一个新的action例,业务逻辑方法。  

4)   果:匹配result       class例。  

5)   求再次经过一系列截器返回:程也可配置减少截器数量  

6)   求返回用:从control返回servlet,生成Html  

 

里很明的一点是不存在FormBean的作用域封装,直接可以从Action中取得数据。       里有一个Strut-2配置的web.xml文件:  

<filter>      

   <filter-name>   controller   </filter-name>      

   <filter-class> org.apache.struts.action2.dispatcher.FilterDispatcher   </filter-class>  

</filter>  

<filter-mapping>      

   <filter-name>   cotroller   </filter-name>      

   <url-pattern>   /*   </url-pattern>  

</filter-mapping>  

注意到以往的servlet成了filterActionServlet成了FilterDispatcher*.do成了/*filter 配置定了名称(关联)filterFilter mappingURI匹配成功的的filter。默情况下,展名".action"个是在default.properties文件里的"struts.action.extension"属性定的。default.properties是属性定文件,通classpath路径中包含一个名struts.properties”的文件来置不同的属性。而Struts-2的默配置文件名struts.xml。由于12action展名分别为.do.action,所以很方便能共存。我再来看一个Struts-2action  

        public   class   MyAction   {  

              public   String   execute()   throws   Exception   {      

                      //do   the   work      

                      return   "success   ";  

              }  

        }  

很明的区是不用再承任何和接口,返回的只是一个String,无参数。实际上在Struts-2中任何返回String的无参数方法都可以通配置来action。所有的参数从哪里来得呢?答案就是Inversion of Control(控制反)。笔者尽量以最通俗的方式来解,我试图让这Actionreuqest象,这样可以提取面提交的任何参数。那request设为一个成员变量,然后需要一个它的set方法。由于大部分的action都需要这么做,我set方法作接口来实现  

        public   interface   ServletRequestAware   {  

                public   void   setServletRequest(HttpServletRequest   request);  

        }  

 

        public   class   MyAction   implements   ServletRequestAware   {      

                private   HttpServletRequest   request;      

 

                public   void   setServletRequest(HttpServletRequest   request)  {      

                        this.request   =   request;      

                }  

                               

                public   String   execute()   throws   Exception       {  

                          return       Action.SUCCESS;      

                }      

        }  

么谁set方法呢?也就是说谁来控制action的行,以往我都是自己在适当的地方写上一句 action.setServletRequest(…),也就是控制在程序员这边然而控制反的思想是在哪里用交正在运行的容器来决定,只要利用Java反射机制来Method象然后用它的invoke方法入参数就能做到,这样控制就从程序员这边转移到了容器那。程序可以减很多繁的工作更多的业务逻辑Request可以这样注入到action中,其他任何象也都可以。了保action的成员变线程安全, Struts-2action不是例的,一个新的求都会生一个新的action例。  

有人会,到底来做象的注入工作呢?答案就是截器。截器又是什么东西?笔者再来尽量通俗的解释拦截器的概念。大家要理解截器的,首先一定要理解GOF23种设计模式中的Proxy模式。  

A象要f(),它希望代理B来做,那B就要A象的引用,然后在Bf()中通A象引用A象的f()方法,最达到Af()用的目的。有没有人会这样很麻明明只要A.f()就可以完成的一定要封装到Bf()方法中去?有哪些好呢?  

1)   里我只有一个A,当我有很多个A候,只需要监视B一个象的f()方法就可以从全局上控制所有被用的f()方法。  

2)   另外,既然代理人BA象的引用,那B可以决定在真正A象的f()方法之前可以做哪些前置工作,完返回前可有做哪些后置工作。  

里,大家看出来一点截器的概念了?它截下一f()方法的求,然后一的做理(个的方式可以不同,解析A象就可以辨),理完再放行。这样像不像的河水横切了一刀,所有想通的水分子行搜身,然后再放行?也就是AOPAspect  of  Programming面向切面程)的思想。  

AnywayStruts-2只是利用了AOPIoC来减action和框架的耦合系,力到最大程度重用action的目的。这样的技下,Struts-2action成了一个简单被框架使用的POJOPlain Old Java Object了。事上AOPIoC的思想已遍布新出来的个框架上,他并不是多新的技,利用的也都是JDK早已可以最到的事情,它代表的是更加面向接口程,提高重用,增加展性的一思想。Struts-2只是部分的使用思想来设计完成的,另外一个最近很火的框架 Spring,更大程度上代表了种设计思想

分享到:
评论

相关推荐

    struts1和struts2的区别

    struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别struts1和struts2的区别...

    struts2-core.jar

    struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...

    struts2 总结工程大全

    struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全...

    Struts2视频教程

    Struts2是一套非常优秀的Java WEB应用框架,实现优雅、功能强大、使用简洁。目前已有大量的企业项目采用Struts2来作为Web框架进行开发,掌握Struts2是每个进行Web开发的Java程序员的一项必备技能。 本视频对Struts2...

    struts2 资料struts2 资料struts2 资料struts2 资料

    struts2 资料struts2 资料struts2 资料struts2 资料

    struts2案例 struts2 struts2源码

    struts2源码 struts2案例 struts2使用包

    struts2环境搭建+struts2 新闻发布系统+struts2 留言板

    struts2环境搭建+struts2 新闻发布系统+struts2 留言板 struts2环境搭建:基础框架搭建,简单易上手,适合新手,比你看书强多了,实践源于理论而高于理论,贵在实践 朋友。 struts2 新闻发布系统:struts2+jsp 功能不...

    Struts2 Struts2 超好的Struts2 pdf 文档

    Struts2 Struts2 超好的Struts2 pdf 文档 Struts2 Struts2 超好的Struts2 pdf 文档 Struts2.pdf文档

    struts2讲义 struts2讲义struts2讲义struts2讲义struts2讲义

    一个很好的关于Struts2的讲义!struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义

    Struts2_s2-016&017&ognl2.6.11_patch漏洞补丁

    -- 为修复struts2 s2-016、s2-017漏洞,重写DefaultActionMapper --&gt; &lt;bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="myDefaultActionMapper" class=...

    struts2帮助文档

    struts2的概述struts2下的HelloWord struts2基础 struts2做好准备 struts2的标志 struts2的Action讲解 struts2中的国际化 struts2转化器 struts2实现表单数据校验 struts2的基石-拦截器 struts2中实现IOC struts2中...

    struts2技术内幕+struts2权威指南

    《Struts2技术内幕:深入解析Struts2架构设计与实现原理》以Struts2的源代码为依托,通过对Struts2的源代码的全面剖析深入探讨了Struts2的架构设计、实现原理、设计理念与设计哲学,对从宏观上和微观上去了解Struts2...

    Struts2漏洞检查工具Struts2.2019.V2.3

    Struts2漏洞检查工具Struts2.2019.V2.3

    struts2-scan_struts2-scan_struts2scan_scan_struts2漏洞_

    struts2-scan 检测struts2漏洞,认证检测struts2漏洞

    struts2例子struts2例子

    struts2例子struts2例子struts2例子struts2例子struts2例子struts2例子struts2例子struts2例子

    Struts2Struts2Struts2Struts2

    Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2Struts2...

    struts2官方文档

    struts2官方文档

    struts2jar包

    使用struts2开发之前必须引入struts的包。

    struts2 技术内幕——深入解析struts2架构设计

    《Struts2技术内幕:深入解析Struts2架构设计与实现原理》由国内极为资深的Struts2技术专家(网名:downpour)亲自执笔,iteye兼CSDN产品总监范凯(网名:robbin)以及51CTO等技术社区鼎力推荐。  本书以Struts2的...

    Struts2接口文档

    Struts2的开发文档,学习Struts2时可以用来查阅API相关接口说明,便于分析框架原理

Global site tag (gtag.js) - Google Analytics