一,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是一款非常流行的Java Web框架,用于构建企业级应用。然而,随着时间的推移,Struts2在安全方面暴露出了一些重要的漏洞,这给使用该框架的系统带来了潜在的安全风险。"Struts2漏洞检查工具Struts2.2019.V2.3...
Struts2是一个强大的Java EE应用程序框架,主要用于构建企业级的Web应用。它的核心是MVC(Model-View-Controller)设计模式,可以帮助开发者组织代码,提高开发效率,并且提供了丰富的特性来支持表单验证、国际化、...
Struts2 项目开发 Struts2 是一个基于 Java Web 的框架,广泛应用于 Web 应用程序的开发。下面将从 Struts2 项目开发的角度,详细介绍 Struts2 框架的应用、开发流程、技术架构、实践经验等方面的知识点。 项目...
### Struts2核心知识点解析 #### 一、Struts2框架概述 - **定义与特点**:Struts2是一款基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它继承了Struts1的优点,同时在设计上更加灵活、易用,...
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-2.3.20190927\Test\bin\Release\Text.exe 2019-09-25: 优化部分EXP在部分情况下被WAF拦截的问题,提高检测成功率,优化自定义上传路径exp,文件所在目录不存在时自动创建...
Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,旨在简化创建用户交互式、数据驱动的web应用的过程。这个“Struts2接口文档”是开发者的重要参考资料,提供了关于...
Struts2-showcase是一个用于演示和学习Apache Struts2框架功能的开源项目。这个压缩包“struts2-showcase.rar”包含了完整的源代码,旨在帮助开发者深入理解Struts2框架的工作原理及其各种特性。以下是对Struts2和...
从给定的文件信息来看,标题“struts2中文学习文档”和描述“struts2的根本webwork2”表明这是一份关于Struts2框架的学习资料,特别强调了Struts2与WebWork2的关系。Struts2是Apache Struts的一个版本,它是一个用于...
-- 为修复struts2 s2-016、s2-017漏洞,重写DefaultActionMapper --> <bean type="org.apache.struts2.dispatcher.mapper.ActionMapper" name="myDefaultActionMapper" class=...
"struts2 jar"文件包含了Struts2框架的核心库,可能包括struts2-core、struts2-convention、struts2-json-plugin等依赖,这些是开发Struts2应用必不可少的组件。 "Struts2"可能是项目实例代码,包括Action类、视图...
Struts2是一个非常著名的Java Web开发框架,由Apache软件基金会维护。它基于MVC(Model-View-Controller)设计模式,极大地简化了构建基于Java EE的Web应用程序的过程。本资源包含"struts2所有jar包程序文件",是...
Struts2是一个强大的Java web开发框架,用于构建可维护、可扩展且结构良好的应用程序。它在MVC(Model-View-Controller)设计模式的基础上提供了一种实现方式,使得开发者能够更方便地处理用户请求,控制业务逻辑,...
Struts2是Apache软件基金会下的一个开源框架,主要用于构建企业级的Java web应用程序。张龙圣思园的Struts2学习笔记,无疑为Java开发者提供了一份宝贵的参考资料,它可能涵盖了Struts2的基础概念、核心组件、配置...
struts2 chm 程序包 org.apache.struts2 接口概要 接口 说明 StrutsStatics Constants used by Struts. 类概要 类 说明 RequestUtils Request handling utility class. ServletActionContext Web-specific ...
包含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.3.16 + Spring4.1.1 + Hibernate4.3.6。 此外,还有:log4j、slf4j、junit4、ehcache等知识点。 项目...
Struts 2是一款基于Java的开源MVC框架,它在Web应用开发中广泛使用,但同时也因其复杂的架构和历史遗留问题,成为了网络安全的焦点。这个标题提到的是一个全面的Struts 2漏洞检测工具,旨在帮助开发者和安全专家识别...
struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全...
Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试...