面试之J2EE主流框架

本文详细介绍了Struts2框架的工作原理、与Struts1的区别、控制器的三层结构以及配置和使用方法。内容涵盖Action接口、拦截器、动态方法调用等关键概念,还提及了Action类中的编码规范和如何处理请求属性。此外,文章还讨论了OGNL的作用和使用场景,如访问非根对象、过滤集合和构造Map。最后,简述了Struts2的校验信息、异常处理以及ActionSupport类的作用。
摘要由CSDN通过智能技术生成


第一部分Struts2框架

 

1.      说明Struts2框架的工作原理。

参考答案

(1)      客户端向服务器端提交请求,容器初始化HttpServletRequest请求对象。

(2)      请求对象被一系列的Servlet过滤器过滤,Struts2中的过滤器有三种。

(3)      FilterDispatcher过滤器调用ActionMapper,决定该请求是否需要调用某个Action。

(4)      如果请求需要调用某个Action,ActionMapper将通知FilterDispatcher过滤器把请求的处理交给ActionProxy来处理。

(5)      ActionProxy通过Configuration Manager解析框架的配置文件struts.xml,找到需要调用的Action类。

(6)      ActionProxy创建一个ActionInvocation 实例。

(7)      ActionInvocation实例使用命令模式回调Action中的execute方法,Action调用业务逻辑类完成业务逻辑处理。在调用Action的前后,将调用该Action涉及的相关拦截器(Interceptor)。

(8)      Action 执行毕业,ActionInvocation 根据struts.xml中的配置找到对应的返回结果(称为Result)。

2.      Struts2和Struts1有什么区别

参考答案

Struts1最初是Apache Jakarta 项目的一部分,后来作为一个开源的MVC框架存在。Struts1曾经被很多Web应用采用,作为构建MVC的基础框架使用。Struts1最大的特点是提供了JSP标记库以及页面导航。Struts2是从WebWork框架上发展起来的,与Struts1没有直接关系。WebWork是一个很优秀的MVC框架,然而,由于是一个新的框架,在一段时间内并没有被广泛使用。后来,Struts和WebWork社区决定将二者合并,推出Struts2框架。Struts2比起Struts1,新增了很多优点,例如,Struts2的Action与Servlet API解耦,能够进行单元测试,Struts2的试图可以支持多种形式,如JSP、Velocity等。

3.      Struts2中的哪三层控制器?分别有什么作用?

参考答案

(1)      过滤器:过滤器是Strut2控制器的最前端的控制器,请求对象首先被过滤器过滤。

(2)      拦截器:拦截器(Interceptor)是Struts2中第二个层次的控制器,能够在Action执行先后运行一些Action类需要的通用功能。

(3)      Action:Action是Struts2的第三层次的控制器,需要程序员自行开发。Action是Struts2应用中使用数量最好的控制器,负责调用业务逻辑,执行业务操作,根据执行结果返回结果视图,实现页面导航,被称为业务控制器。

4.      如何设置一个包的默认拦截器引用?

参考答案

为一个包指定默认拦截器引用,可以在struts.xml中进行如下配置:

<package name=”com.etc.chapter01” extends=”struts-default”>

<default-interceptor-ref name=”basicStack”/>

</package>

其中default-interceptor-ref的 name 值可以是拦截器的名字,也可以是拦截器栈的名字。

5.      如何编写并配置自定义的拦截器?

参考答案 自定义拦截器的步骤如下:

(1)      创建类实现Interceptor接口。

(2)      覆盖Interceptor接口中的方法,重点实现interceptor方法,定义拦截功能。

(3)      在<package>标签中使用<interceptor>元素定义拦截器,为拦截器类指定一个名字。

(4)      在需要使用该拦截器的Action中使用<interceptor-ref>标签引用拦截器的名字即可使用。

6.      拦截器栈和拦截器有什么区别和联系?

参考答案

拦截器栈是若干个拦截器的集合。如果某些拦截器总是按照一定的顺序一起工作࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值