struts2框架

struts2的工作原理

半城伤御伤魂 提交于 2020-02-03 07:24:09
struts2并不是一个陌生的web框架,它是以Webwork的设计思想为核心,吸收struts1的优点,可以说struts2是struts1和Webwork结合的产物。 一个请求在Struts2框架中的处理分为以下几个步骤: 1.客户端发出一个指向servlet容器的请求(tomcat); 2.这个请求会经过图中的几个过滤器,最后会到达FilterDispatcher过滤器。 3.过滤器FilterDispatcher是struts2框架的心脏,在处理用户请求时,它和请求一起相互配合访问struts2的底层框架结构。在web容器启动时,struts2框架会自动加载配置文件 里相关参数,并转换成相应的类。如:ConfigurationManager、ActionMapper和ObjectFactory。ConfigurationManager 存有配置文件的一些基本信息,ActionMapper存有action的配置信息。在请求过程中所有的对象(Action,Results,Interceptors,等)都是通过ObjectFactory来创建的。过滤器会通过询问ActionMapper类来查找请求中需要用到的Action。 4.如果找到需要调用的Action,过滤器会把请求的处理交给ActionProxy。ActionProxy为Action的代理对象

Struts2框架

大兔子大兔子 提交于 2020-02-03 00:42:45
1 , Struts2 框架介绍 Struts2 框架是 MVC 流程框架,适合分层开发。框架应用实现不依赖于 Servlet ,使用大量的拦截器来处理用户请求,属于无侵入式的设计。 2,Struts2 框架的流程原理 1)请求先到达 Filter 中央控制器 2)然后为 Action 创建代理类 3)将各个服务存放在拦截器中,执行完拦截器后再去执行action类行 action 类, action 类调用 service ,再调用 dao 4)得到结果字符串,创建 result 对象 5)转向相应的视图。 程序流程图如下: 3 ,框架的使用 框架为我们做好了封装,使用起来就按照步骤,配置几个xml文件就行拉。 1)导入jar包 2)拷贝struts.xml文件 将拷贝的配置文件放在根目录src下。struts.xml文件主要是配置请求路径对应action类的,以及结果跳转路劲。 [html] view plain copy print ? <? xml version= "1.0" encoding= "UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2

struts2的工作原理

别说谁变了你拦得住时间么 提交于 2020-02-02 21:34:55
详见:https://www.cnblogs.com/zhangxiangguo/p/6582414.html https://duanxx.iteye.com/blog/1662918 众所周知,Struts2是个非常优秀的开源框架,我们能用Struts2框架进行开发,同时能快速搭建好一个Struts2框架,但我们是否能把Struts2框架的工作原理用语言表达清楚,你表达的原理不需要说出底层是怎么实现的,我估计大多数的人也听不懂。当面试官问到我们Struts2的工作原理时,我们该怎么回答这个问题呢?回答什么才能让自己说的与众不同,先看看其他朋友总结的 注:参考文章: http://www.blogjava.net/GavinMiao/archive/2011/08/29/357480.html 一 工作原理 在Struts2框架中的处理大概分为以下几个步骤 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 3 接着FilterDispatcher被调用

Struts1、WebWork、Struts2介绍

喜夏-厌秋 提交于 2020-02-02 21:34:37
一、Struts1 1、Struts1原理简介 Struts1框架以ActionServlet作为控制器核心,整个应用由客户端请求驱动。当客户端向Web应用发送请求时,请求被Struts1的核心控制器ActionServlet拦截,ActionServlet根据请求决定是否需要调用业务逻辑控制器处理用户请求(实际上,业务逻辑控制器还是控制器,它只是负责调用模型来处理用户请求),当用户请求处理完成后,其处理结果会通过jsp呈现给用户。 Struts1,控制器就是它的核心,Struts1的控制器分为核心控制器和业务逻辑控制器。核心控制器就是ActionServlet,由Sturts1框架提供;业务逻辑控制就是用户自定义的Action,由应用开发者提供。 Struts1的运行流程: 2、MVC分析 (1)、Model Struts1的Model部分由底层的业务逻辑组件充当,这些业务逻辑组件封装了底层数据库访问、业务逻辑方法实现。 (2)、View Struts1的View部分采用Jsp实现。不支持FreeMarker、Velocity等模板技术,支持的表现层技术单一。 (3)、Controller 由两个部分组成。 系统核心控制器:由Struts1框架提供,就是系统的ActionServlet。 业务逻辑控制器:由Struts1框架提供,就是用户自己实现的Action实例。 3、优缺点

深入理解Struts2

戏子无情 提交于 2020-02-02 21:29:35
简单介绍 Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构区别巨大。 Struts 2以WebWork为核心,採用拦截器的机制来处理用户的请求,这种设计也使得业务逻辑控制器能够与ServletAPI全然脱离开,所以Struts 2能够理解为WebWork的更新产品。尽管从Struts 1到Struts 2有着太大的变化,但是相对于WebWork。Struts 2的变化非常小。 不管从struts2的设计角度看。还是从struts2在实际项目中的易用性来看,struts2都是一个非常优秀的mvc框架。与struts1相比,struts2同意使用使用普通的Java对象作为action。给予aop思想的烂机器机制。提供了几号的可扩展性。 mvc思想及其优势 mvc并非Java语言所特有的设计思想,也并非web应用所特有的思想,他是全部面向对象程序设计语言都应遵循的规范。mvc是一种设计模式。将应用分为三层:model、view、controller。 这三层以最少的耦合协同工作,从而提高应用的可扩展及可维护性。 从设计模式角度来看,mvc非常相似于观察者模式。但与观察者模式存在少许的区别:观察者模式下的观察者和被观察者能够是两个互相对等的对象

学习Struts--Chap02:Struts2框架各个功能模块和程序执行流程的介绍

不问归期 提交于 2020-02-02 21:24:27
1、Struts2的系统架构: 2、架构中不同Key的作用介绍: servlet Filters: 过滤器链,client的全部请求都要经过Filter链的处理。 Struts Core:Struts2的核心部分,Struts2中已经做好的功能,在实际开发中不需要动它们 Interceptors:Struts2的拦截器。Struts2提供了很多默认的拦截器,可以完成日常开发的绝大部分工作;当然,也可以自定义拦截器,用来实现具体业务需要的功能。 User Created:由开发人员创建的,包括struts.xml、Action、Template,是每个使用Struts2来进行开发的人员都必须会的。 3、各个模块功能的介绍: FilterDispatcher是整个Struts2的调度中心,根据ActionMapper的结果来决定是否要Struts2做出处理,如果ActionMapper指出该URL应该被Struts2处理,那么它将会执行Action处理,并停止过滤器链上还没有执行的过滤器。同时还负责创建ActionProxy对象实例。( 注意:如论什么Struts2应用都要有这个配置,并且要放在过滤链的最后边。 ) ActionMapper简单点说,ActionMapper负责识别当前请求是否应该被Struts2处理,如果需要Struts2处理, ActionMapper 会通知

struts2环境配置

天大地大妈咪最大 提交于 2020-01-28 02:21:28
struts2框架,大多数框架都在使用。由于工作需要,开始做Java项目。先学个struts2。   一、下载struts2   有好多版本,我下载的是struts-2.2.1.1。   二、创建web项目,导入使用struts2所必须的jar包。   我使用的是MyEclipse 7.5。建立web项目,给项目添加外部引用包(project-properties-Java Build Path-Add External Jars...)。添加的包有:commons-fileupload-1.2.1.jar,commons-io-1.3.2.jar,commons-logging-api-1.1.jar,freemarker-2.3.16.jar,javassist-3.7.ga.jar,ognl-3.0.jar,struts2-core-2.2.1.1.jar,xwork-core-2.2.1.1.jar。注意:由于struts2版本的差异性,上面提到的包不一定满足所有版本的需求。配置完struts2后,请部署运行一下。根据运行时的错误提示来添加jar包解决问题。比如,配置struts-2.2.1.1时需要commons-io-1.3.2.jar包和javassist-3.7.ga.jar包,但是2.1版本就不需要这两个包。   三、编写struts.xml文件  

struts2的配置和使用

半世苍凉 提交于 2020-01-25 06:56:54
一:配置stuts2的运行环境,把以下的包放到WEB-INF/lib目录下 1,structs2-core-2.1.6.jar struts的核心库 2,xwork-2.1.2.jar webwork的核心库,需要它的支持 3, ognl-2.6.11.jar ognl表达式语言,struts2支持改EL表达式 4,freemarker-2.3.13.jar 表现层框架,定义了struts的可视组件主题 5,common-logging-1.0.4 .jar 日子管理 6,commons-fileupload-1.2.1.jar 文件上传于下载 二:struts2拦截用户请求,在web.xml里面配置 <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 三:在src目录下配置struts.xml 内容如下 <?xml version=

java三大框架的各自作用

泄露秘密 提交于 2020-01-23 20:28:39
java三大框架的各自作用: hibernate是底层基于jdbc的orm(对象关系映射)持久化框架,即:表与类的映射,字段与属性的映射,记录与对象的映射 数据库模型 也就是Model; struts提供的丰富标签是用于显示层View;同时struts也充当了实现Control的功能(不管是Struts1,还是Struts2),接收参数,视图分发。 Spring是用于降低层与层间耦合度的,就是所有的类都可以由spring统一创建,用时只需注入即可(IOC) 从功能上来说,hibernate为M,struts2 为V,也可以为C,spring可以为C。 但大多数项目中,hibernate为M,struts2 为V+C,spring用来帮助管理类以及实现一些业务无关功能,如日志记录等,大多数都是用struts来做C的。 来源: CSDN 作者: 孙士海 链接: https://blog.csdn.net/weixin_43821182/article/details/104076934

struts2和springmvc的区别

北城余情 提交于 2020-01-17 05:29:00
struts2和springmvc的区别 一、拦截机制的不同   Struts2是类级别的拦截,每次请求就会创建一个Action,和Spring整合时Struts2的ActionBean注入作用域是原型模式prototype,然后通过setter,getter吧request数据注入到属性。Struts2中,一个Action对应一个request,response上下文,在接收参数时,可以通过属性接收,这说明属性参数是让多个方法共享的。Struts2中Action的一个方法可以对应一个url,而其类属性却被所有方法共享,这也就无法用注解或其他方式标识其所属方法了,只能设计为多例。   SpringMVC是方法级别的拦截,一个方法对应一个Request上下文,所以方法直接基本上是独立的,独享request,response数据。而每个方法同时又何一个url对应,参数的传递是直接注入到方法中的,是方法所独有的。处理结果通过ModeMap返回给框架。在Spring整合时,SpringMVC的Controller Bean默认单例模式Singleton,所以默认对所有的请求,只会创建一个Controller,有应为没有共享的属性,所以是线程安全的,如果要改变默认的作用域,需要添加@Scope注解修改。   Struts2有自己的拦截Interceptor机制