请选择 进入手机版 | 继续访问电脑版
本站特色:极好的技术研究氛围!所有技术发帖,必有回复! 做最受欢迎的Java论坛

疯狂Java联盟

 找回密码
 加入联盟
查看: 132|回复: 0

Java EE面试题集4(Struts 2部分)——轻量级Java EE企业应用

[复制链接]
发表于 2018-2-12 12:04:19 | 显示全部楼层 |阅读模式
本帖最后由 kongyeeku 于 2018-5-2 20:00 编辑

本文档来自《轻量级Java EE企业应用实战(第5版)》光盘
京东购买地址:https://item.jd.com/12327466.html
当当购买地址:http://product.dangdang.com/25245286.html


Struts 2Action中获取request对象有几种方式?
一般来说,Struts 2的Action并不推荐直接获取request对象,这样会导致Action与Servlet API耦合,造成Action不易测试的后果。
如果真的需要在Action中访问Servlet API,通常有如下几种方式:
1. 使用ActionContext的getXxx()方法,该方法可返回parameters、session、application对应的Map,也就是这种方式并没有真正返回Servlet API,它返回的Map对象,开发者可通过这些Map对象操作parameters、session、application范围的属性。
2. 通过ServletActionContext的静态getXxx()获取,这些方法返回的是真正的Servlet API。
3. 通过XxxAware接口注入,让Action类实现这些接口,Struts 2就会把真正的Servlet API注入该Action。
具体来说,如果只是访问request对象,可通过如下方式:
1. 使用ActionContext的get、set方法,用于操作request范围的属性。
2. 通过ServletActionContext的静态getRequest()获取,这些方法返回的是真正的HttpServletRequest对象。
3. 通过ServletRequestAware接口诸如,让Action类实现ServletRequestAware接口,Struts 2就会把request注入该Action。
8、请说说你对Struts 2的拦截器的理解。
Struts 2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts 2拦截器是可插拔的,拦截器是AOP的一种实现.
拦截器栈(Interceptor Stack)就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,拦截器栈的拦截器就会按其之前定义的顺序被调用。
拦截器与拦截器栈又是高度统一的。也就是说,拦截器栈也可当成拦截器使用,区别只是拦截器是细粒度的,而拦截器栈则是粗粒度的。
Struts 2的拦截器在执行Action的execute方法之前,Struts 2会首先执行在struts.xml中引用的拦截器,完成一系列的功能,在执行完所有应用的拦截器的intercept方法后,会执行Action的execute方法。

您需要登录后才可以回帖 登录 | 加入联盟

本版积分规则

小黑屋|手机版|Archiver|疯狂Java联盟 ( 粤ICP备11063141号 )

GMT+8, 2018-5-25 09:23 , Processed in 0.318106 second(s), 6 queries , File On.

快速回复 返回顶部 返回列表