Struts 2的体系结构主要包括以下几个关键组件和流程过滤器链标准过滤链当Web容器接收到一个请求时filterdispatcher,首先由标准过滤链处理特定过滤器如ActionContextCleanUp过滤器SiteMesh等filterdispatcher,它们会对请求进行预处理核心控制器请求传递请求会被传递给FilterDispatcher,这是Struts 2的核心。
Struts2的工作流程请求接收客户端发出请求,服务器端通过webxml映射请求至StrutsPreparedAndExceuteFilter或FilterDispatcher请求处理如果请求以“action”结尾,Struts2将请求转发至相应的Action进行数据类型转换和处理结果返回根据Action的处理结果,返回相应的视图页面或进行其他处理三大框架。
FilterDispatcher是Struts 2框架的核心控制器,该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求如果用户请求以action结尾,该请求将被转入Struts 2框架处理Struts 2框架获得了*action请求后,将根据*action请求的前面部分决定调用哪个业务逻辑。
1客户端发出一个指向servlet容器的请求tomcat2这个请求会经过图中的几个过滤器,最后会到达FilterDispatcher过滤器3过滤器FilterDispatcher是struts2框架的心脏,在处理用户请求时,它和请求一起相互配合访问struts2 的底层框架结构在web容器启动时,struts2框架会自动加载配置文件里相关参数,并转。
综上所述,Struts1和Struts2之间的主要区别在于控制器的设计和处理用户请求的方式Struts1依赖于ActionServlet来处理请求,而Struts2则使用FilterDispatcher和一系列拦截器来实现这一目标Struts2框架的这种设计使得开发者能够更轻松地实现面向切面的编程,同时提高了代码的灵活性和可维护性。
Struts框架,有两个版本,分别是Struts1和Struts2,目前,更流行的是Struts2,故本人主要是介绍Struts2的框架的工作流程1客户端提交一个。
Struts2的体系与Struts1体系的差别非常大,因为Struts2使用了WebWork的设计核心,而不是Struts1的设计核心Struts2中大量使用拦截器来处理用户的请求,从而允许用户的业务逻辑控制器与Servlet API分离Struts2框架的大概处理流程如下1加载类FilterDispatcher2读取配置struts配置文件中的Action3。
3派发请求客户端发送请求4调用ActionFilterDispatcher从struts配置文件中读取与之相对应的Action 5启用拦截器WebWork拦截器链自动对请求应用通用功能,如验证6处理业务回调Action的execute方法7返回响应通过execute方法将信息返回到FilterDispatcher8查找响应FilterDispatcher。
1手动将Struts2的相关jar包复制到webContentWEBINFlib目录下2Tomcat默认从WEBINF目录下加载资源,Eclipse在发布程序的时候,并没有把User Libraries的相关资源拷贝到WEBINF目录下Eclipse会把src目录下的所有非*java文件复制到WEBINFclasses目录下,所以Tomcat找不到所需要的类非常。
客户端发出一个请求,服务器端StrutsPreparedAndExceuteFilter接收请求如果该请求是一个以 action 结尾请求,则Struts2将请求转发至相应的Action,进行数据类型转换,如果数据类型转换出错,则返回到 input 指定的结果页面如果数据类型转换没有出错,则调用setXX 方法进行设值,如果使用了val。
Struts2流程 1客户端发送请求 客户端初始化一个指向Servlet容器如Tomcat的请求2请求经过一系列过滤器如ActionContextCleanUpSiteMesh等,ActionContextCleanUpFilterDispatcher 3FilterDispatcher通过ActionMapper来决定这个Request需要调用哪个Action 4如果ActionMapper决定调用某个Action,Filter。
1 客户端初始化一个指向Servlet容器例如Tomcat的请求 2 请求经过一系列的过滤器Filter这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如SiteMesh Plugin3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否。
在Struts2框架中的处理大概分为以下几个步骤1客户端初始化一个指向Servlet容器例如Tomcat的请求 2这个请求经过一系列的过滤器Filter这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如SiteMesh Plugin3接着FilterDispatcher。
FilterDispatcher是早期struts2的过滤器,后期的都用StrutsPrepareAndExecuteFilter了,如 216218StrutsPrepareAndExecuteFilter名字已经很能说明问题了,prepare与execute,前者表示准备,可以说是指filter中的init方法,即配制的导入。
这个得从struts2的控制器上说,这个类默认的是导入classes 下的strutsxml,所以你可以修改webxml文件 ltfilter ltfilternamestruts2ltfiltername ltfilterclassfilterclass ltinitparam config lt。
给LZ说一下struts2的主要工作流程吧,你可以下载一下他的流程图,首先我们有个请求request进入,会首先走ActionContext Clearup 清空值栈等,但是会留下我们的session和setgetAttribute等,然后会走一下OtherFilter,其他的一些过滤器什么的,然后就会走到我们的filterDispathcer总控,会询问ActionMapping是否。
struts2框架的执行流程1用户发起请求action结尾的请求表示请求一个Action2struts2框架的主控器FilterDispatcher接收用户发起的请求,然后判断这个请求交给Action处理还是交给web组件处理如果请求的Action或者web组件不存在,那么出现404错误在整个处理 过程中需要一个辅助对象Action映射器ActionMapper。
2依旧struts2是什么,Struts 2框架本身大致可以分为3个部分核心控制器FilterDispatcher业务控制器Action和用户实现的企业业务逻辑组件核心控制器FilterDispatcher是Struts 2框架的基础,包含了框架内部的控制流程和处理机制业务控制器Action和业务逻辑组件是需要用户来自己实现的用户在开发Action和业务。
上一篇: 苹果手机开机慢,手机开机太慢怎么解决
联系电话:18300931024
在线QQ客服:616139763
官方微信:18300931024
官方邮箱: 616139763@qq.com