java面试题_day21(5道)

126.Struts2中的拦截器有什么用?列举框架提供的拦截器名称?

 1)拦截器是struts2核心组成部分,
它提供了一种机制,使得开发者
可以定义一个特定的功能模块,
这个模块会在Action执行之前或者之后执行
也可以在Action执行之前阻止Action执行。 

 2)常用的拦截器有: 
chain:在不同请求之间将请求参数在不同名字件转换,
请求内容不变 
fileUpload:提供文件上传。 
​i18n:记录用户选择的区域环境 
logger:输出Action的名字
params:将请求中的参数设置到Action中去。

127.Struts2有哪些优点?

 1)在软件设计上Struts2的应用
可以不依赖于Servlet API和struts API。 
Struts2的这种设计属于无侵入式设计; 

 2)拦截器,
实现如参数拦截注入等功能;

 3)类型转换器,
可以把特殊的请求参数转换成需要的类型; 

 4)多种表现层技术,
如:JSP、freeMarker、Velocity等;

 5)Struts2的输入校验
可以对指定某个方法进行校验;

 6)提供了全局范围、
包范围和Action范围的
国际化资源文件管理实现 

 7) 实现MVC模式,结构清晰,
使开发者只关注业务逻辑的实现。
有丰富的tag可以用,
极大提高了开发效率。(简要)

128.ActionContext和ValueStack什么时候创建?是否是线程安全的?

明确:
动作类是多例的,
每次动作访问,
动作类都会实例化。
所以是线程安全的。
与Struts1的区别是,
struts1的动作类是单例的。

在每次动作执行前,
核心控制器StrutsPrepareAndExecuteFilter
都会创建一个ActionContext和ValueStack对象。
且每次动作访问都会创建。

这两个对象存储了整个动作
访问期间用到的数据。
并且把数据绑定到了线程局部变量
ThreadLocal上了。
所以是线程安全的。

129.一个请求在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中的配置
找到对应的返回结果。
返回结果通常是一个需要
被表示的JSP或者FreeMarker的模版。
在表示的过程中可以使用Struts2 框架中
继承的标签。
在这个过程中需要涉及到ActionMapper

130.介绍一下Struts的ActionServlet类

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。