java面试题_简单说明hibernate、Struts2、Spring、springMVC、mybatis的执行流程或者原理_2_Struts2

系列文章目录

百度说的

Struts2是一个基于MVC设计模式的Web应用框架,
它本质上相当于一个servlet,
在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。
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就是一个框架,它是属于web层的一个框架,是Struts1的一个升级版,但是它和Struts1来相比,提供了太多的增强和改进,怎么运行的呢,就是实现了Servlet的功能,来进行控制页面跳转。
同时这也是基于MVC设计模式的Web应用框架,Struts2的控制功能就相当于MVC中的Controller的功能,用来控制页面的转向
总结一下
其实我感觉Struts2,就是实现了页面的转向,转到该转的地方,不要转到不该转的地方,取代了Servlet的功能。
再看看别人的

1、Struts2一句话说明其原理

众所周知,Struts2是个非常优秀的开源框架,我们能用Struts2框架进行开发,同时能快速搭建好一个Struts2框架,但我们是否能把Struts2框架的工作原理用语言表达清楚,你表达的原理不需要说出底层是怎么实现的,我估计大多数的人也听不懂。当面试官问到我们Struts2的工作原理时,我们该怎么回答这个问题呢?回答什么才能让自己说的与众不同,先看看其他朋友总结的

工作流程

1、客户端浏览器发出HTTP请求.
2、根据web.xml配置,该请求被FilterDispatcher接收
3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton
4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面
6、返回HTTP响应到客户端浏览器

疑问

1、客服端发起一个请求,通过HTTP协议指向Tomcat容器,tomcat拿到请求她干了什么?
2、我们web.xml配置

struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter


struts2
/

我们从web配置文件中可以看到org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter,这个Filter这个类有什么用?
这个 / 是拦截所有的请求,他拦截了请求做了什么处理? /*
3.我们struts.xml配置

    <action name="hello">
        <result>
            /Hello.jsp
        </result>
    </action>
    
</package>
谁负责根据struts.xml配置,找到需要调用的Action类和方法呢?

4。最后根据struts.xml中的配置找到对应的返回结果result再返回HTTP响应到客户端浏览器

工作原理

在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

总结

不光死记硬背资料上的写的原理,还要带着这些问题去做总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值