S2SH面试题Word格式文档下载.docx

上传人:b****2 文档编号:14443574 上传时间:2022-10-22 格式:DOCX 页数:17 大小:42.76KB
下载 相关 举报
S2SH面试题Word格式文档下载.docx_第1页
第1页 / 共17页
S2SH面试题Word格式文档下载.docx_第2页
第2页 / 共17页
S2SH面试题Word格式文档下载.docx_第3页
第3页 / 共17页
S2SH面试题Word格式文档下载.docx_第4页
第4页 / 共17页
S2SH面试题Word格式文档下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

S2SH面试题Word格式文档下载.docx

《S2SH面试题Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《S2SH面试题Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。

S2SH面试题Word格式文档下载.docx

在调用Action的前后,将调用该Action实际的相关拦截器(Interceptor)。

(8)Action执行完毕,ActionInvocation根据struts.xml中的配置招待相应的返回结果(成为Result)。

2.Struts2和Struts1有什么区别?

解析Struts2和Struts1在名字上看是版本升级问题,实际上必不是这样。

Struts2是从另外一个优秀的框架WebWork的基础上发展起来的,与Struts1本质上没有太多的联系。

参考答案Struts1最初是ApacheJakarta项目的一部分,后来作为一个开源的MVC框架存在。

Struts1曾经被很多Web应用采用,作为构建MVC的基础构架使用。

Struts1最大的特点是提供了JSP标记库以及页面导航,Struts2是从WebWork框架上发展起来的,与Struts1没有直接关系。

WebWork是一个很优秀的MVC框架,然而,由于是一个新的框架,在一段时间内并没有被广泛使用。

后来,Struts和WebWork社区决定将二者合并,推出Struts2框架。

Struts2比起Struts1,新增了很多优点,例如:

Struts2的Action与ServletAPI解耦,能够进行单元测试,Struts2的视图可以支持多种形式,如JSP、Velocity等。

3.Struts2中有哪三层控制器?

分别有什么作用?

解析对于MVC框架来说,控制其往往都是核心部分,Struts2的控制器更是如此,共分为三个层次。

理解控制器是进一步掌握MVC框架的必要前提。

参考答案

(1)过滤器:

过滤器是Struts2控制器的最前端控制器,请求对象首先被过滤器过滤。

(2)拦截器:

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

(3)Action:

Action是Struts2的第三个层次的控制器,需要程序员自行开发。

Action是Struts2应用中使用数量最多的控制器,调用业务逻辑,执行业务操作,根据执行结果返回结果视图,实现页面导航,被称为业务控制器。

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

解析拦截器在Struts2中是非常重要的部分,如果一个包中的所有Action总是需要使用某些拦截器或者拦截器栈,那么就可以为这个包定义默认的拦截器引用、

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

<

packagename=”com.oracle.chapter01”extends=”struts-default”>

<

default-interceptor-refname=”basicStack”/>

/package>

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

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,方法的声明形式是publicStringexecute().自定义的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:

formaction=”Customer”>

submitvalue=”Login”method=”login”>

/s:

submit>

submitvalue=”Register”method=”register”>

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对象,从而操作会话属性。

ActionContext中的getSession方法可以返回一个与会话对象相关的Map对象,通过使用该Map对象的put方法,可以往会话中存入属性,通过使用Map对象的get方法可以从会话中返回属性。

13.ActionContext类中的哪个方法可以用来处理上下文范围内的属性?

上下文属性是Web应用中可能会用到的属性,ActionContext类可以返回上下文相关的Map对象,从而操作上下文属性。

参考答案ActionContext中的getApplication方法可以返回一个与上下文对象相关的Map对象,通过使用该Map对象的put方法可以往上下文中保存属性,通过使用Map对象的get方法可以从上下文中返回属性。

14.如果一个Action类中需要获得ServletAPI中的对象进行处理,如何解决?

解析如果一个Action类中只处理请求、会话。

上下文中的属性,那么可以通过ActionContext类实现,与ServletAPI脱耦。

然而,有时候Action类中可能必须直接出来ServletAPI中的对象,这种时候就不能够脱耦,无法进行单元测试。

参考答案如果Action类中需要获得ServletAPI中的对象,那么可以使用ServletActionContext类实现。

该类中定义可以下四个方法:

(1)publicstaticPageContextgetPageContext():

获得PageContext对象。

(2)publicstaticHttpServletRequestgetRequest():

获得HttpServletRequest对象。

(3)publicstaticHttpServletResponsegetResponse():

获得HttpServletResponse对象。

(4)publicstaticServloracleontextgetServloracleontext():

获得Servloracleontext对象

(5)

15.Struts2框架有哪两种封装请求参数的方式?

解析Web应用中总是不可避免的需要处理请求参数,而队请求参数的封装是每个MVC框架都试图解决的问题,Struts2框架中有两种方式可以封装请求参数。

参考答案Struts2中封装请求参数的方式有两种,即Field_Driven和Model_Driven。

其中Field_Driven是域驱动,在Action类中定义域请求参数对应的属性,并为之提供getters和setters,Struts2框架将自

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1