1 请简述Struts2与Struts1的区别和联系

参考答案

Struts2与Struts1差别巨大,不能理解为Struts1的升级版;

Struts2以Xwork为核心,可以理解为WebWork的升级版。

2 Struts2如何实现MVC,与Spring MVC有什么不同?

参考答案

Struts2采用filter充当前端控制器来处理请求,filter会根据struts.xml的配置,将请求分发给不同的业务控制器Action,再由Action处理具体的业务逻辑。Action处理完业务之后,filter会根据其返回的字符串,从struts.xml中找到对应的result,最终由result将请求转发给页面。

这个实现的思路与Spring MVC基本一致。其差异如下:

  1. Spring采用Servlet充当前端控制器,分发请求。
  2. Spring采用RequestMapping配置请求与业务控制器的关系。
  3. Spring采用Controller充当业务控制器。
  4. Spring采用ViewResolver将请求转发给页面。

3 在Struts2中页面如何向Action传参

参考答案

Struts2中常用的传参方式有2种,分别是基本属性注入和域模型注入。

其中,基本属性注入是将表单中的数据,分别传给Action中声明的基本属性,要求这些属性有set方法,并且名称与表单中框体的name值一致。

域模型注入是将表单中的数据,传给Action中的一个实体对象,要求这个对象具有set方法,并且表单中框体的name中的表达式要有如下格式“对象.属性”。