Struts 2的控制器组件

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

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

下面是Struts 2的Action代码示例:[code]publicclassLoginAction

{

//封装用户请求参数的username属性

privateStringusername;

//封装用户请求参数的password属性

privateStringpassword;

//username属性的getter方法

publicStringgetUsername()

{

	returnusername;

}

//username属性的setter方法

publicvoidsetUsername(Stringusername)

{

	this.username=username;

}

//password属性的getter方法

publicStringgetPassword()

{

	returnpassword;

}

//password属性的setter方法

publicvoidsetPassword(Stringpassword)

{

	this.password=password;

}

//处理用户请求的execute方法

publicStringexecute()throwsException

{

	//如果用户名为scott,密码为tiger,则登录成功

	if(getUsername().equals("scott")

			&&getPassword().equals("tiger"))

	{

		return"success";

	}

	else

	{

		return"error";

	}

}

}[/code]通过查看上面的Action代码,发现该Action比WebWork中的Action更彻底,该Action无需实现任何父接口,无需继承任何Struts 2基类,该Action类完全是一个POJO(普通、传统的Java对象),因此具有很好的复用性。

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

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

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

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