`

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,更大程度上代表了种设计思想

分享到:
评论

相关推荐

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

    Struts2是一款非常流行的Java Web框架,用于构建企业级应用。然而,随着时间的推移,Struts2在安全方面暴露出了一些重要的漏洞,这给使用该框架的系统带来了潜在的安全风险。"Struts2漏洞检查工具Struts2.2019.V2.3...

    struts2jar包

    Struts2是一个强大的Java EE应用程序框架,主要用于构建企业级的Web应用。它的核心是MVC(Model-View-Controller)设计模式,可以帮助开发者组织代码,提高开发效率,并且提供了丰富的特性来支持表单验证、国际化、...

    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

    这个"留言板留言板struts2"项目,显然是一个基于Struts2实现的简单留言板系统,旨在展示Struts2的核心功能和开发流程。下面将详细介绍Struts2框架以及在该项目中可能涉及的关键知识点。 1. **Struts2框架概述**:...

    struts2 最新漏洞 S2-016、S2-017修补方案 .docx

    Struts2 最新漏洞 S2-016、S2-017 修补方案 Struts2 是一个基于 Java 的 Web 应用程序框架,由 Apache 软件基金会维护。最近,Struts2 发生了两个严重的漏洞,分别是 S2-016 和 S2-017,这两个漏洞可能会导致攻击者...

    Struts2视频教程

    ### Struts2核心知识点解析 #### 一、Struts2框架概述 - **定义与特点**:Struts2是一款基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它继承了Struts1的优点,同时在设计上更加灵活、易用,...

    Struts2接口文档

    Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,旨在简化创建用户交互式、数据驱动的web应用的过程。这个“Struts2接口文档”是开发者的重要参考资料,提供了关于...

    struts1和struts2的区别

    ### Struts1与Struts2的主要区别 #### 概述 Apache Struts 是一个用于构建企业级Java Web应用的开源框架。它分为两个版本:Struts1 和 Struts2。虽然两者都基于模型-视图-控制器(MVC)设计模式,但它们之间存在...

    Struts2漏洞测试

    Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试...

    struts2jar.zip

    Struts2是一个强大的Java web应用程序框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护性、可扩展性良好的企业级应用的工具。这个"struts2jar.zip"压缩包包含了Struts2学习和研究的基础...

    Struts2教学视频

    Struts2是一个强大的Java web开发框架,用于构建可维护、可扩展且结构良好的应用程序。它在MVC(Model-View-Controller)设计模式的基础上提供了一种实现方式,使得开发者能够更方便地处理用户请求,控制业务逻辑,...

    Struts2VulsTools-Struts2系列漏洞检查工具

    该工具的打开路径为:\Struts2VulsTools-2.3.20190927\Test\bin\Release\Text.exe 2019-09-25: 优化部分EXP在部分情况下被WAF拦截的问题,提高检测成功率,优化自定义上传路径exp,文件所在目录不存在时自动创建...

    struts2所有jar包程序文件

    Struts2是一个非常著名的Java Web开发框架,由Apache软件基金会维护。它基于MVC(Model-View-Controller)设计模式,极大地简化了构建基于Java EE的Web应用程序的过程。本资源包含"struts2所有jar包程序文件",是...

    struts2-showcase.rar

    Struts2-showcase是一个用于演示和学习Apache Struts2框架功能的开源项目。这个压缩包“struts2-showcase.rar”包含了完整的源代码,旨在帮助开发者深入理解Struts2框架的工作原理及其各种特性。以下是对Struts2和...

    struts2的各种jar包

    Struts2是一个强大的Java web应用程序框架,用于构建和管理MVC(模型-视图-控制器)架构的应用程序。它在Java社区中广泛使用,因其灵活性、可扩展性和丰富的插件库而受到赞誉。Struts2的核心是Action类,它处理HTTP...

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

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

    struts2项目部署

    Struts2是一个流行的Java web框架,它为开发者提供了一种模型-视图-控制器(MVC)架构,便于创建结构清晰、可维护性高的企业级应用程序。本教程将详细介绍如何部署一个基于Struts2的项目,特别适合初学者。由于实际...

    Struts2+Jquery+Ajax

    "struts2 jar"文件包含了Struts2框架的核心库,可能包括struts2-core、struts2-convention、struts2-json-plugin等依赖,这些是开发Struts2应用必不可少的组件。 "Struts2"可能是项目实例代码,包括Action类、视图...

Global site tag (gtag.js) - Google Analytics