Struts 2.x权威指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3.5 Struts2的控制器组件

Struts 2的控制器组件是Struts 2框架的核心,事实上,所有的MVC框架都是以控制器组件为核心的。正如前面提到的,Struts 2的控制器由两部分组成:StrutsPrepareAndExecuteFilter和业务控制器Action。

实际上,Struts 2 应用中起作用的业务控制器不是用户定义的 Action,而是系统生成的Action代理,但该Action代理是以用户定义的Action为目标的。

下面是Struts 2的Action代码示例。

public class LoginAction
{
    // 封装用户请求参数的username属性
    private String username;
    // 封装用户请求参数的password属性
    private String password;
    // 省略username属性的getter、setter方法
    ...
    // 省略password属性的getter方法
    ...
    // 处理用户请求的execute方法
    public String execute() throws Exception
    {
          //如果用户名为crazyit,密码为leegang,则登录成功
          if (getUsername().equals("crazyit")
                && getPassword().equals("leegang") )
          {
                return "success";
          }
          else
          {
                return "error";
          }
    }
}

该Action无须实现任何父接口,无须继承任何Struts 2基类,该Action类完全是一个POJO (普通、传统的Java对象),因此具有很好的复用性。

归纳起来,该Action类有如下优势。

Action类完全是一个POJO,因此具有很好的代码复用性。

Action类无须与Servlet API耦合,因此进行单元测试非常简单。

Action类的execute方法仅返回一个字符串作为处理结果,该处理结果可以映射到任何的视图,甚至是另一个Action。