`
run_wang
  • 浏览: 168387 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

Struts2

阅读更多
一,Struts2做什么的?
二,Struts2怎么处理一个用户请求的?
三,Struts2与Struts1有什么区别?
四,Struts2的拦截器?


一,Struts2做什么的?
Struts2是属于MVC框架中的视图层,它是在webwork的基础上发展起来的,也可以说Struts2是webwork的升级版,因此Struts2的稳定性,性能等各方面都有很好的保证。

二,Struts2怎么处理一个用户请求的?
1,
首先用户发出一个请求,通过filterDispatcher拦截器拦截下来。

2, filterDispatcher会询问ActionMapper来决定这个请求是否需要调用某个Action。

3, 这个ActionMapper封装了请求的信息。如果ActionMapper决定需要调用某个Action,FilterDispatcher会按信息(action的名字,调用的方法名)创建一个Action的代理对象。实际上对Action的调用就是通过这个代理对象来实现的。

4,
把请求交给这个代理,如果用户提交的请求没有指定方法,那么Struts2则默认excute方法。这个代理会创建一个调度器的实例。
这个调度器里面定义了一个invoke方法,这个方法就实现了拦截器的交互和执行Action里的excute方法。

5, 拦截器是以value栈的形式调用。
Struts2默认的有18个拦截器。第一个拦截器是一个异常拦截器,这样的话,我第一个拦截器把异常捕获到,那么以后就不用捕获其他拦截器出现的异常了。

6, 当Action执行完以后,调度器就会负责根据struts.xml中的配置找到对应的返回结果。

7, 然后调度器就返回所有的拦截器,通过response把结果集返回给客户。


三,Struts2与Struts1有什么区别?
Struts1是一个老牌的框架,比较稳定,拥有的客户也比较多,减小开发的风险。
Struts2是一个基于webWork开发的一个框架,相对于Struts1来说,还不够成熟,使用Struts2来开发项目风险比较的打。
Struts1的前台控制器是一个servlet,名字叫ActionServlet。
Struts2的前台控制器是一个filter,名字叫FilterDispatcher。
Struts1对所有在同一路径下发出的请求值创建一个Action实例,所以这个Action需要同步。
Struts2对用户的每一个处理请求都会创建一个Action实例,所以Struts2就不用关心同步的问题了。
Struts1是通过formBean来封装数据的。
Struts2是通过action里的属性来封装数据的。
Struts1进行验证的时候,会对action里所有的方法都进行验证。
Struts2进行验证的时候,可以只对单个方法进行验证。比如说当一个Action继承了ActionSupport,在Action类里写validateXxx方法名,这样Struts2验证的时候就只验证Xxx方法。
Struts1的action必须要继承Action类。
Struts2可以不继承任何类,只需要写个execute方法就行了。


四,Struts2的拦截器?
拦截器主要用于在某个方法或字段被访问之前,进行拦截,然后在访问之前或之后加入某些操作。它也算是AOP的一种实现策略。我们一般做的权限管理就是通过拦截器来实现的,比如说一个用户要访问方法时,则
判断这个用户是否登录,然后还要判断这个是否有权限进入这个方法,这些一般都是拦截器来完成的。


strusts2的拦截器底层采用的是动态代理机制实现的。而我们只是需要在struts.xml配置文件中配置拦截器就可以实现了。
谈到拦截器,就要说一下拦截器栈了,拦截器栈就是将拦截器按一定的顺序组成的一条链,在访问被拦截的方法或字段时,拦截器栈中的拦截器会按之前定义好的顺序被调用。像Struts2里就有一个拦截器栈,它里面有18个拦截器,第一个拦截器是处理异常的。

Struts2的拦截器实现原理:当请求到达Struts2的ServletDispatcher时,Struts2会查找配置文件(struts.xml),并根据这个配置文件的配置实例化相对的拦截器对象,然后生成一个列表,最后一个一个的调用列表中的拦截器。

自定一个拦截器:在Struts2里面,自定义一个拦截器是很简单的,写一个普通的java类直接或间接实现
Interceptor接口,然后再重写里面的三个方法:
init():这个方法在该拦截器被初始化之后,该拦截器执行拦截之前,系统调用该方法,这个方法只执行一次。
destroy():这个方法在拦截器实例被销毁之前,系统调用该方法。
intercept(ActionInvocation invocation):这个方法里面写我们要实现的拦截动作。

然后就是在struts.xml里的interceptors节点里通过interceptor元素配置拦截器名字和指定该拦截器的路径。再在action节点里通过interceptor-ref元素来使用拦截器。
分享到:
评论

相关推荐

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

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

    struts2jar包

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

    struts1和struts2的区别

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

    struts2项目开发

    Struts2 项目开发 Struts2 是一个基于 Java Web 的框架,广泛应用于 Web 应用程序的开发。下面将从 Struts2 项目开发的角度,详细介绍 Struts2 框架的应用、开发流程、技术架构、实践经验等方面的知识点。 项目...

    留言板留言板struts2留言板struts2

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

    Struts2视频教程

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

    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,...

    Struts2VulsTools-Struts2系列漏洞检查工具

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

    Struts2接口文档

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

    struts2-showcase.rar

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

    struts2的各种jar包

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

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

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

    Struts2+Jquery+Ajax

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

    struts2所有jar包程序文件

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

    Struts2教学视频

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

    张龙圣思园struts2学习笔记word

    Struts2是Apache软件基金会下的一个开源框架,主要用于构建企业级的Java web应用程序。张龙圣思园的Struts2学习笔记,无疑为Java开发者提供了一份宝贵的参考资料,它可能涵盖了Struts2的基础概念、核心组件、配置...

    struts2 chm 帮助文档

    struts2 chm 程序包 org.apache.struts2 接口概要 接口 说明 StrutsStatics Constants used by Struts. 类概要 类 说明 RequestUtils Request handling utility class. ServletActionContext Web-specific ...

    Struts2开发常用jar包

    包含struts2-core-2.5.10.1.jar,struts2-jfreechart-plugin-2.5.10.1.jar,struts2-json-plugin-2.5.10.1.jar,struts2-junit-plugin-2.5.10.1.jar,struts2-bean-validation-plugin-2.5.10.1.jar,struts2-cdi-...

    最新版本的Struts2+Spring4+Hibernate4框架整合

    整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...

    全网最全Struts 2 全版本漏洞检测工具,最新struts漏洞更新

    Struts 2是一款基于Java的开源MVC框架,它在Web应用开发中广泛使用,但同时也因其复杂的架构和历史遗留问题,成为了网络安全的焦点。这个标题提到的是一个全面的Struts 2漏洞检测工具,旨在帮助开发者和安全专家识别...

Global site tag (gtag.js) - Google Analytics