Struts2部分
1.说明Struts2框架的工作原理。
解析掌握一个框架,首先必须了解这个框架的工作原理,企业非常关注应聘者对常用框架的工作原理的理解程度。
参考答案
(1)客户端向服务器端提交请求,容器初始化HttpServletRequest请求对象。
(2)请求对象被一系列的Servlet过滤器过滤,Struts2中的过滤器有三种。
(3)FilterDispatcher过滤器调用ActionMapper,决定该请求是否需要调用某个Action。(4)如果请求需要调用某个Action,ActionMapper将通知FilterDispatcher过滤器把请求的对象交给ActionProxy来处理。
(5)ActionProxy通过Configuration Manager 解析框架的配置文件l,到需要调用的Action类。
(6)ActionProxy创建一个ActionInvocation实例。
(7)ActionInvocation实例使用命令模式回调Action中的execute()方法,Action调用业务逻辑类完成业务逻辑处理。在调用Action的前后,将调用该Action实际的相关
(Interceptor)。
(8)Action执行完毕,ActionInvocation根据l中的配置招待相应的返回结果(成为Result)。
2.Struts2和Struts1有什么区别?
解析Struts2和Struts1在名字上看是版本升级问题,实际上必不是这样。Struts2是从另外一个优秀的框架WebWork的基础上发展起来的,与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等。
struts框架是干什么的3.Struts2中有哪三层控制器?分别有什么作用?
解析对于MVC框架来说,控制其往往都是核心部分,Struts2的控制器更是如此,共分为三个层次。理解控制器是进一步掌握MVC框架的必要前提。
参考答案(1) 过滤器:过滤器是Struts2控制器的最前端控制器,请求对象首先被过滤器过滤。
(2) :(Interceptor)是Struts2中第二个层次的控制器,能够在Action执行前后运行一些Action类需要的通用功能。
(3) Action: Action 是Struts2的第三个层次的控制器,需要程序员自行开发。Action是Struts2应用中使用数量最多的控制器,调用业务逻辑,执行业务操作,根据执行结果返回结果视图,实现页面导航,被称为业务控制器。
4. 如何设置一个包的默认引用?
解析在Struts2中是非常重要的部分,如果一个包中的所有Action总是需要使用某些或者栈,那么就可以为这个包定义默认的引用、
参考答案为一个包指定默认引用,可以在l中进行如下配置:
5.如何编写并配置自定义的?
解析API中定义了一系列的,可以直接配置使用。同时,Struts2也允许用户自定义,实现自定义的拦截功能。
参考答案自定义的步骤如下:
(1)创建类实现Interceptor接口。
(2)覆盖Interceptor接口中的方法,重点实现intercept方法,定义拦截功能。
(3)在<package>标签中使用<interceptor>元素定义,为类制定一个名字。(4)在需要使用该的Action中使用<interceptor-ref>标签引用的名字即可使用。
6.栈和有什么区别和联系?
解析栈和在使用上完全一样,是整体与部分的关系。
参考答案栈是若干个的集合,如果某些总是按照一定的顺序一起工作,那么就可以把这些组织成一个栈,通过引用栈,就可以使用到栈中的所有。
7.Action接口有什么作用?
解析Struts2的API中有一个Action接口,表面上看应该是Action类实现该接口,实际并不是这样。Action类可以实现这个借口,也可以不实现这个借口。
参考答案Action接口中定义了五个常量和一个方法。五个常量都是字符串类型,分别是ERROR、INPUT、LOGIN、NONE以及SUCCESS,方法的声明形式是public String execute().自定义的Action类可以实现这个接口,使用其中的常量作为execute方法的返回值,实现execute方法实现业务控制逻辑。
8.Action类中进行业务控制的方法有什么编码规范?
解析Action类可以实现Action接口,也可以不实现,但是其中进行业务控制的方法必须遵守一定的编码规范,才能被Struts2框架自动调用。
参考答案Action类中进行业务控制的方法必须遵守一定的编码规范,即返回值为String,权限为public,没有形式参数。方法的名字默认为execute,可以被自动调用,如果不是execute,则需要进行配置或指定才能使用。
9.什么是动态方法调用(DMI)?
解析当Action类中的方法名不是execute时,有很多种方法可以调用,DMI就是其中的一种方法。
参考答案如果Action类中的方法不是execute,可以在JSP中调用Action时指定需要调用的方法名,这种方式称做DMI,即动态方法调用。在JSP中调用Action的语法为:action=“Action 的name!方法名字”,如action=“Account!save”,指定调用名字是Account的Action的save方法。
10.如果Struts2应用中的一个表单,需要同时有两个提交按钮进行不同处理,如何解决?
解析:实际应用中,很可能一个表单有两个提交按钮,例如某个表单对应“保存“,“放弃”两
个按钮,每个按钮应该调用不同的方法进行处理。Struts2中的提交按钮提供了method属性,能非常方便地解决这个问题。
参考答案:可以使用提交按钮的method属性指定Action中的方法名字,就可以调用到相应的方法。例如:
<s:form action=”Customer”>
<s:submit value=”Login”method=”login”></s:submit>
<s:submit value=”Register”method=”register”></s:submit>
</s:form>
上述代码中的表单将提交到名字为Customer的Action上,使用method=”login”将调用Action中的login方法,使用method=”register”将调用Action中的register方法。
11.如果一个Action类中需要处理请求范围属性,使用什么方法实现可以与ServletAPI脱耦?解析:请求属性在web应用开发中经常被使用,在Struts2中,利用ActionContext类可以操作请求属性,同时Action与ServletAPI依然脱耦,可以进行单元测试。
参考答案:如果要与ServletAPI脱耦,同时又要处理请求属性,那么可以使用Struts2API中的ActionContext类实现。该类中的普通方法可以向请求范围存属性,该类中的get方法可以从请求范围返回属性。
12.ActionContext类中的哪个方法可以用来处理会话范围内的属性?
解析:会话属性是Web应用开发中常用的属性,Actioncontext类可以返回会话相关的Map 对象,从而操作会话属性。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。