struts2简答题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.Struts1存在的缺点是什么?
答:Struts1的缺点:没有实现model的整合技术;没有与Freemark或velocity等模板技术整合的技术;由于与ServletAPI耦合严重,测试需要web服务器,比较麻烦,属于侵入式设计,系统重构困难。

2.与struts1对比,Struts2 的优点是什么?
答:Action不再与servletAPI耦合,实现B/S向C/S结构的转换;Action不需要和webWork 耦合,代码重用性好;支持更多的表现技术层;测试更加容易。

3.struts2框架的处理流程?
答:浏览器发送请求;FilterDispatcher根据用户的请求调用相应的action;Struts2的拦截器链自动对请求调用通用功能;回调Action的execute方法;Execute方法处理结果将被输出到浏览器中,对应于相应的表现技术。

4.Struts2的web应用如何自动整合其他框架?
答:structs 2框架提供一种类似esclipse的扩展方式,它允许一种“可插拔”的方式安装插件,提供类似Structs2-xxx-plugin.jar的文件,只要该文件放在web应用的WEB-INF/lib路径下,struts2框架将自动加载该框架。

5.Struts2中如何匹配后缀为.action的请求的,是否可以改成.do?
答:可以,还可以改成/*任何其他URL pattern形式
6.在struts.xml中,包含配置的作用是什么?
答:采用<include>标签,将较大struts.xml分而治之
7.什么是拦截器?拦截器的作用,拦截器栈与拦截器的区别,拦截器的配置
答:拦截器可以动态的拦截发送到指定Action的请求,通过拦截器机制,可以在Action的执行前插入某些代码,通过这种方式,就可以把多个action中需要重复指定的代码提取出来,就在拦截器是定义而提供了更好的代码重用。

拦截器是AOP的编程思想,允许在Action处理之前和处理之后,加入用户自定义代码;它的作用:进行权限控制,跟踪日志,跟踪系统瓶颈区别:一个拦截器栈可以包含多个拦截器,一个拦截器可以完成一组特殊功能。

配置:先定义拦截器,再定义拦截器栈,使用拦截器。

8.Action接口和ActionSupport类有什么作用?为什么我们写Action类时要实现Action接口?
答:actionsuppot是struts2框架的一个默认的Action类,该类里已提供许多默认方法;Actionsupport可以作为struts应用的actionsupport可以作为struts 应用的action处理类,继承该类可以简化action的开发。

9.在Action中用什么方法可以调用ServletAPI?
答:ServeletContentAware ServletResponseAware ServletRequestAware
10.在程序中使用直接访问ServletAPI的优缺点?
答:struts2 提供了一个ActionContext类来访问serletAPI使得用户应用不需要考虑那么多servletAPI方面的编程,使得编程更加优雅,并且可以脱离web
11.是否可以在一个action中处理多个动作,如何配置?
答:可以,为action元素指定method属性,让action类调用指定的方法,在struts.xml中配置action标签的method属性。

12.全局结果和局部结果的区别是什么?如果全局结果和局部结果都定义了同名结果,如何处理?
答:1)全局结果作用域为所有Action,局部结果作用域只针对某个action起作用2)局部Action会覆盖全局Action
13.Struts2 内建的结果类型有哪些?什么是默认的结果类型?
答:默认为dispatcher,有dispatcher,freemarker,httpheader,redirect,redirectAction,stream, Velocity,xslt,plainText
14.属性驱动和模型驱动的定义是什么?一般推荐使用的是什么方式?为什么?
答:属性驱动使用Action实例来封装请求参数和处理结果,模型驱动使用单独的VO(值对象)来封装请求参数和处理结果。

推荐属性驱动,编程简洁。

15.什么是声明式异常捕捉?有什么好处?
答:通过在struts.xml中配置<exception-mapping../>元素完成。

需要配置两个属性,exception:指定该异常映射所设置的异常类型result:指定Action 出现该异常时。

系统转入改action 属性指向结果。

16.web应用中,如何让web服务器自动加载struts2框架?
通过web.xml加载struts2,任何MVC框架的web应用都需要加载一个核心控制器,struts2为FilterDispatcher。

17.类型转换的作用是什么?
答:由于B/S系统需要收集用户的请求参数,并将参数传给应用控制组件,所有的请求参数是字符串类,struts2类型转换负责将字符串类型的参数自动转化成java程序中的丰富多彩的数据类型提供强大的数据处理功能。

18.为什么要自定义类型转换器?
答:将字符串转换成复合对象需要自定义转换器。

19.定义局部类型转换器和全局类型转换器的区别是什么?
答:作用域不同,前者为指定Action的制定属性,后者对指定类型的全部属性起作用
20.为了使自定义的action可以自动完成类型转换错误处理,必须继承什么类?如何在输出页面中显示类型转换错误。

答:系统的action类必须继承actionsupport类。

Actionsupport类负责完成类型转换错误处理,数据校验等工作conversionError将错误信息封装到fieldError并保存Actioncontext中在JSP页面中使用<S:fielderror>标签即可输入错误信息。

21.Struts2 校验的流程是什么?
答:1.类型转换器负责对字符串的请求参数执行类型转换,并将这些值设置成Action的属性值。

2在执行类型转换过程中可能出现异常,如果出现异常,将异常信息保存到ActionContext 中,conversionError拦截器负责将其封装到fieldError里,然后执行第3步;如果转换过程没有异常信息,这直接进入第3步。

3 调用Struts 2内置的输入效验规则进行输入效验。

4 通过反射调用validateXxx()方法,其中Xxx是即将处理用户请求的处理逻辑所对应的方法名。

5调用Action类里的validate()方法。

6 如果经过上面5步都没有出现FieldError,将调用Action里处理用户请求的处理方法;如果出现了FieldError,系统将转入Input逻辑是同所指定的视图资源。

22.短路校验器有什么用?
答:将没有必要检验的条件暂时短路掉,使得提示界面比较友好。

23.校验的顺序和短路的规则?
答:效验器的顺序有如下原则:1 所有非字段风格的效验器优先于字段风格的效验器 2 所有非字段风格的效验器中,排在最前免得会先执行。

3 所有字段风格的效验器中,排在前面的会先执行。

效验器的短路原则:1 所有非字段的效验器是最优先执行,如果某个非字段效验器效验失败了,则该字段上所有字段效验器都不会获得效验的机会。

2 非字段效验器的效验失败,不会阻止其他非字段效验的执行。

3 如果一个字段效验器的效验失败后,则该字段下的且排在该效验失败的效验器之后的其他字段都不会获得效验的机会。

4 字段效验器永远都不会阻止非字段效验器的执行。

24.内建效验器有哪些?
答:Regex convesion url email required requiresting int long short
25.Annotation输入校验的好处是什么?
通过在Action中使用Annotation指定各字段的校验规则,避免书写XML校验规则文件26.程序国际化的作用?目的是?
答:根据客户端请求来自的国家、地区语言不同显示不同界面。

提供自适应,更友好的用户界面目的是提供自适友好的用户界面不影响程序的逻辑功能
27.Struts2国际化的运行机制
答:Struts2提供一个名为i18n的拦截器,并将其注册在默认的拦截器栈中。

I18n拦截器在执行Action之前,自动查找请求一个名为request_locale的参数。

若该参数存在,拦截器就将其作为参数,转换成Locale对象,并将其设置为用户默认的Locale
28.如何在JSP的表单中指定临时的国际化资源文件?
答:1)将<s:i18n../>作为<s:text…/>的父标签,则<s:text…/>标签会直接加载<s:i18n../>标签里指定的国际化资源文件2)将<s:i18n../>当成表单标签的父标签,则表单标签的key 属性会从国际化资源文件中加载该消息
29.Spring容器的作用是什么?
答:spring容器的作用是负责生成管理相关的组件的组件工厂容器。

控制器直接创建业务逻辑组件导致控制器也业务逻辑组件的耦合加强,不利于高层次解耦。

控制器是业务逻辑的使用者,不应该是创建者。

每次创建新的业务逻辑组件时,将导致系统的性能下降。

为了避免这种情况在实际开发中采用工厂模式和服务定位模式来取得业务逻辑组件
30.分层概念模型的设计原则?详细说明各个层之间的关系
分层概念模型的设计原则:从上到下是web客户层,业务逻辑层,模型层,持久化层,数据库层。

依赖性下行,数据上行。

业务代表用作客户端的业务抽象,隐藏了实际业务服务的实现方式,可以减少客户端与业务对象之间的耦合。

DAO模式的作用:分离业务逻辑和数据访问逻辑之间的耦合关联。

即使替换持久化框架包,而不对业务逻辑产生负面影响使用DAO和业务代表可以将Action类和业务对象类和数据持久化框架分离。

业务代表实现表现层和业务逻辑层之间的松耦合。

DAO实现数据操作和ORM框架之间的松耦合。

相关文档
最新文档