一 工作原理

在Struts2框架中的处理大概分为以下几个步骤 
1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 
2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 
3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action 
4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy 
5 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类 
6 ActionProxy创建一个ActionInvocation的实例。 
7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。 
8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper 

二 工作流程
1、客户端浏览器发出HTTP请求.
2、根据web.xml配置,该请求被FilterDispatcher接收
3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton
4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面
6、返回HTTP响应到客户端浏览器
看到网友的对Struts2的原理总结,我自己也总结以便后续的面试,以下是我的疑问
1、客服端发起一个请求,通过HTTP协议指向Tomcat容器,tomcat拿到请求她干了什么?
2、我们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>

我们从web配置文件中可以看到org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter,这个Filter这个类有什么用?
这个 /* 是拦截所有的请求,他拦截了请求做了什么处理? <url-pattern>/*</url-pattern>
3.我们struts.xml配置
<struts>
 <package name="default" namespace="/" extends="struts-default">
<action name="hello">
<result>
/Hello.jsp
</result>
</action>
</package>
</struts>

谁负责根据struts.xml配置,找到需要调用的Action类和方法呢?
4。最后根据struts.xml中的配置找到对应的返回结果result,在返回HTTP响应到客户端浏览器

转载于:https://www.cnblogs.com/tangxz/p/7742036.html

struts2原理(转)相关推荐

  1. Struts2 原理

    .Struts2原理 .Struts 1 原理 .Struts1 和webwork的关系 .HttpServletRequest Struts2原理 客户端提起一个(HttpServletReques ...

  2. spring原理 struts2原理 hibernate原理 MyBatis原理 SpringMVC

    Spring原理 最核心的就是IOC,动态注入DI,利用java里的反射,让一个对象的创建不用new了,可以自动的生产.Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象,和调 ...

  3. struts2原理分析之反射技术动态获取属性

    反射技术动态获取属性 知道struts2的流程的乡亲们都知道.struts2采用了动态获取属性的方法, 将表单里的数据传给了Action. 例如; 在struts2里有如下配置文件 <actio ...

  4. java面试准备之---Struts2体系知识点,系统复习,struts2原理,ognl,el支持.---随时更新

    1.MVC 和 JSP Model 2 **   a.:M-Model 模型 包含两部分:业务数据和业务处理逻辑   b.V-View 视图:视图(View)的职责是负责显示界面和用户交互(收集用户信 ...

  5. springmvc的原理架构,Struts2运行原理,springmvc和Struts2的区别

    springmvc原理: 1.用户发起请求到控制器 DispatcherServlet(前端控制器) 2.前端控制器去handlerMapper查找Handler对象 3.HandlerMapper返 ...

  6. struts2、hibernate工作原理和流程

    2019独角兽企业重金招聘Python工程师标准>>> struts2原理 在struts2的应用中,从用户请求到服务器返回相应响应给用户端的过程中,包含了许多组件如:Control ...

  7. Struts2漏洞利用原理

    概述: Struts2是apache项目下的一个web 框架,目前web框架中非常流行的都是mvc设计模式.经典例子例如:python的Django.Flask:java的ssm等.因为使用MVC设计 ...

  8. 线程本地数据ThreadLocal

    layout: post title: "线程本地数据ThreadLocal" subtitle: " "每个线程都有自己的数据,互不干扰."&quo ...

  9. charapter 1

    概论 HTTP协议两大障碍: 1).基于文本(需要进行大量的数据绑定操作)  2)无状态(需要进行身份验证) 所有的请求,不论最终指向的哪一个web应用,都必须经过容器处理. http://local ...

最新文章

  1. Java项目:进销存系统(java+Gui)
  2. 入门 Python GUI 开发的第一个坑
  3. SAP SD 基础知识之Cash Sales和Rush Order的区别
  4. webbench 代码阅读
  5. Juniper 210 密码清不掉_三分钟学会如何找回mysql密码
  6. openssl s_server
  7. 数字图像处理技术详解程序_大学专业详解系列135——数字媒体技术(工学学士)...
  8. ASP.NET创建文件并写入内容
  9. Linu系统编程---10(Linux的终端,线路规程,网络终端,进程组)
  10. 双拓扑排序 HDOJ 5098 Smart Software Installer
  11. Web Server监视器 v0.75 - Free tool
  12. spring 事务案例--转账
  13. VUE day_08(7.26)学子商城项目详细版
  14. html滑动验证图片,js插件实现图片滑动验证码
  15. CocCocoa Touch框架和Cocoa
  16. css中reset属性详解,css中如何使用counter-reset属性
  17. 你踩过几个?盘点微信H5小游戏开发中的那些坑
  18. 记录微信小程序web-view页面分享出去之后没有返回首页按钮,微信小程序WebView页面分享出去后没有返回首页按钮,全局使用的自定义导航【解决办法】
  19. Windows——在设备和驱动器界面删除天翼云盘图标的方法
  20. 15.正则表达式以及Data以及Calendar

热门文章

  1. 云原生高可用技术体系的构建
  2. 一眼看穿的最佳图像标记工具!
  3. Java经典面试题整理及答案详解(五)
  4. android 图片长方形_android 相机只拍摄矩形区域图片
  5. 游戏中的方块艺术——从艺术生角度浅谈划时代产品“像素风“
  6. 教你利用工具将单机游戏改造成对战网游
  7. mysql如何获取当前时间
  8. angularjs的一点总结
  9. [Coderforces600E] Lomsat gelral
  10. Unity Editor开发