欢迎来到天天文库
浏览记录
ID:39510862
大小:27.00 KB
页数:6页
时间:2019-07-04
《struts2面试文档》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Struts2面试问答1.Q:Struts2都有哪几个核心部分,分别介绍一下。A:Struts2有五个核心,分别是,核心控制器StrtusPrepareAndExecuteFilter,Action类(继承自ActionSupport,是开发人员主要编码的部分),result(xml中的结果节点,常用的有dispatcher,redirect,actionRedirect.....以及自定义result,默认的为dispatcher),拦截器Interceptor(内置常用的拦截器有param拦截器,fileUpload拦截器,validation拦截器,workfl
2、ow拦截器,exception拦截器等等),还有ognl表达式(一种帮助前端与后台数据交互的脚本语言)2.Q:你认为的Struts1和Struts2都有哪些主要区别吧?A:我认为2代和1代的最大区别是核心控制器的转变,1代的核心控制器是一个servlet,而2代的核心控制器是filter(前期是DispatcherFilter,后期是StrtusPrepareAndExecuteFilter)。1代在action的execute调用时要将HttpRequest和HttpResponse传入方法中去,因此与ServletAPI强耦合在一起,运行更加依赖web容器,一旦脱
3、离web容器,程序在测试或者其他方面将变得举步维艰。而且在表示层方面,struts1代只支持jsp,但随着网络发展,前端表示层更加多样化,struts1代的能力捉襟见肘。3.Q:你刚说普通Action继承自ActionSupport类,那你说说你了解的ActionSupport类吧。A:ActionSupport类中内置了常用的字符串常量,类似success,input,error,以及execute方法,这些都来自于ActionSupport实现的Action接口。除此之外,还实现了Validateable,ValiedateAware,Serializable等七
4、个接口,主要用于数据校验,本地化等功能。1.Q:Struts2的拦截器的执行过程是什么?你认为可以抽象为什么逻辑结构?A:拦截器围绕action和result的执行而执行,和servletFilter的实现原理差不多,以链式执行,对真正要执行的方法进行拦截。首先执行action配置的拦截器,在action和result执行之后,拦截器再一次执行(和上一次执行的顺序恰好相反),在此链式的执行过程中,任何一个拦截器都可以直接返回,从而终止余下的拦截器,action和result的执行。(见书上91页)2.Q:嗯,那你在开发过程中都实现哪些拦截功能?A:我在项目中负责登陆模
5、块,所以会经常自定义拦截未登陆操作的行为,一般自定义Inteceptor来实现,主要步骤主要实现内置Interceptor接口,之后重写init,destroy,和最重要的intercept方法,或者直接继承AbstractInteceptor类,只重写intetceptor方法。3.Q:Struts2与ServletAPI对象产生互动有几种方式,分别介绍一下A:有解耦和耦合两种方式。解耦:为了避免action类与servletAPI对象耦合在一起,方便action类的测试,struts2提供了普通的map对象来代替传统的request,session,servlet
6、context。通过调用actioncontext来获取到request,session等对象。耦合:虽然直接访问servletAPI会使action类与之强耦合在一起,但是有时候确实需要直接访问这些对象。通过调用ServletActionContext类。此类是ActionContext类的子类,通过调用这个类来实现直接访问ServletAPI对象。4.Q:Struts2怎样实现数据的校验?A:上面说了,由于ActionSupport类实现了Validateable接口,所以可以直接在Action类中重写此接口的validate方法,用于进行简单的数据校验。也可以根
7、据struts.xml中定义的action的名称来定义不同的validateXxx()。执行顺序是先执行自定义的validateXxx(),最后执行validate方法。而这两种方法适用于简单的数据校验,但当验证规则比较复杂时,需要编写大量繁琐的代码实现,容易导致Action类的臃肿,所以,struts2向开发人员提供了丰富的验证框架。常用的数据校验器有required,requiredstring,int,stringlength,regex,date,double等等。使用这些验证框架时,要编写验证文件和校验规则。编写时注意验证文件要和Actio
此文档下载收益归作者所有