1.请简述Struts2和Struts1的区别和联系
2.Struts2如何实现MVC,与Spring MVC有什么不同
3.Struts2中页面如何向Action传参
4.OGNL表达式有那些用法,你熟悉其中哪几种
5.请简述Struts2中ValueStack组件运行原理
6.请简述Struts2中个组件的作用及调用顺序
7.获取Session的方式
ActionContext
ActionContext.getContext().getSession()
返回类型为Map<String,Object>
ServletActionContext
ServletActionContext.getRequest().getSession()
返回类型为HttpSession
SessionAware
让Action实现SessionAware接口
实现void setSession(Map<String,Object> session)方法,Struts会在实例化Action后调用
该方法,通过方法参数将Session对象注入进来
定义成员变量,接受注入 进来的Session对象
8.各种方法对比
返回类型对比
第1,3中方式,获取Session是Map<String,Object>类型,Struts2采用该类型的目的是简化Session对象
,而Session的存储结构和Map是一致的
第二种方式,获取Session是HttpSession,为了保持兼容性,Struts2提供了获取该类型的方式
获取方式对比
第1,2种方式,是我们主动的获取Session
第三种方式,是采用注入的方式自动注入Session,这种方式是被动的
推荐使用第3种方式
采用注入思想,更为灵活
面向接口编程,符合主流规范
9.什么是Result组件
Result是用于做输出的组件,用于向页面输出一些内容,转发,重定向可以理解为特殊方式的输出
每个Result实际上就是一个类,这些类实现了共同的接口Result
Struts预置了10种类型的Result,他们被定义在struts-default.xml中
10.dispatcher
用于转发的Result,可以请求转发给JSP
此中类型Result对应的类为ServletDispatcherResult
此类Result是Struts2默认的Result类型,该默认行为是定义Result时,通过default="true"指定的
在此之前,我们使用的Result都是这种默认的Result
11.stream
用于向页面输出二进制数据,此类型的Result,可以将二进制数据输出到请求发起端。
此种类型Result对应的类为StreamResult
12.redirectAction
用于将请求重定向给另外一个Action
此种类型Result对应的类为ServletActionRedirectResult
13.json
用于向页面输出json格式的数据,此中类型的Result,可以讲json字符串输出到请求发起端
此种类Result不是Struts2默认的Result,但是却是十分常用的类型
14.stream Result的作用
用于向页面输出二进制数据,此种类型的Result,可以将二进制数据输出到请求发起端
创建输出流,接到Action中定义的输出流将其输出
语法:
<result name="success" type="stream">
<param name="inputName">codeStream</param>
</result>
15.redirectAction Result的作用
用于将请求重定向给另外一个Action
语法:
<result name="login" type="redirectAction">
<param name="namespace">
/命名空间
</param>
<param name="actionName">
action名
</param>
</result>
如果重定向的Action与当前Action在同一个namespace下,则可以省略
<param name="namespace">/login</param>
16.如果只需要给Result的actionName注入值,配置可以进一步的简化,即
<result name="login" type="redirectAction">
action名
</result>
17.请简述Struts2中Result组件的作用,你了解哪些Result组件
18.stream类型的Result有什么用
19.json类型的Result如何使用
20.如何在Struts2项目中实现异步请求的校验
21.Struts2中有哪些UI标签,请简述其作用
22.为甚要做登录检查
23.如何做登录检查
24.登录检查的开发步骤
创建拦截器
创建登录检查拦截器组件,在intercept方法中验证用户是否登录,若没有则不调用action,而是重定向
到登录action
注册拦截器
注册登录检查拦截器
注册拦截器栈,将登录检查拦截器与defaultStack打包
引用拦截器
将新注册的拦截器栈设置为默认拦截器
25.FileUpload拦截器介绍
FileUpload拦截器是Struts2预置的拦截器
FileUpload拦截器被默认拦截器栈defaultStack引用,即我们不需要做任何的配置,即可使用该拦截器
FileUpload拦截器可以用于做文件上传
26.FileUpload拦截器原理
FileUpload拦截器上传文件步骤
首先,FileUpload拦截器将表单中提交的文件,以临时文件的形式保存到服务器临时路径下
之后,FileUpload拦截器将该文件对象注入给Action。Action自主处理该临时文件
FileUpload拦截器删除临时文件。
27.FileUpload拦截器使用步骤
导包
Action
定义File类型属性(如some),接收拦截器注入的临时文件对象。
如果想获取原始文件名,要定义String类型属性,属性名为"File类型属性+FileName"(如someFileName)
,拦截器会自动给该属性注入原始文件名。
表单设置
必须满足method="post"
必须满足enctype="multipart/form-data"
28.注意事项
Struts2上传文件最大值默认限制为2097152B,即2M。
该设置被定义在struts2-core-2.1.8.jar中,包org.apache.struts2下的default.properties中。
struts.multipart.maxSize=2097152
可以在struts.xml中重置该默认值
<constant name="struts.multipart.maxSize" value="5000000" />
29.Struts2中的拦截器有什么用,与Spring中的AOP有什么区别和联系
30.Action默认引用哪个拦截器,如果没有默认引用,会导致什么问题
31.Struts2中如何实现文件上传