(2)Action名字是“login”,对应的Class就是“pla.LoginAction”,当用户在浏览器输入http://127.0.0.1/8080/...login.action请求时,Struts 2将调用pla.LoginAction进行业务处理。处理后,返回result值。LoginAction内容如代码1.6所示。
代码1.6 业务控制器LoginAction
package
pla;
public
class
LoginAction
{
//设置属性
private String username,password;
//定义属性的getter和setter方法
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
//Action默认执行方法
public String execute()throws Exception{
if (getUsername().equals("test")){
//返回success字符串
return "success";
}else{
//返回input字符串
return "input";
}
}
}

(3)在Action中,判断getUsername()是否为“test”,如果是,则返回字符串"success",而struts.xml配置文件中定义了对应的视图资源:
<!——配置Action的返回值success视图-->
<result name="success">/welcome.jsp</result>
可以看到,配置文件定义了result,name元素为success,对应视图资源为/welcome.jsp,那么当用户请求参数Username为“test”时,Struts 2会将/welcome.jsp页面展示给用户。
(4)如果系统中还有一个处理Login业务的Action,内容如代码1.7所示。
代码1.7 业务控制器LoginAction01
package
pla;

import
com.opensymphony.xwork2.Action;
import
com.opensymphony.xwork2.ActionContext;
public
class
LoginAction01
implements
Action
{
//设置属性
private String username,password;
//定义属性的getter和setter方法
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
//Action默认执行方法
public String execute() throws Exception {
if (getUsername().equals("test")){
//不同于LoginAction的业务实现逻辑
Dosomething();
return "success";
}else{
return "input";
}
}
}

(5)当用户业务逻辑发生变化时,需要调用LoginAction01来实现,那么通过修改配置文件,可以非常方便、快捷地进行调整,只需要修改Action中的class属性即可:
<action name="login" class="pla.LoginAction01">
★ 提示 ★
通过配置文件来调换Action等模块,类似于灵活的“热插拔”技术。
2.属性资源文件
另一类配置文件是属性资源文件,例如struts.properties文件。资源文件中一般采用固定的Key-Value格式,用于定义Struts 2全局或者局部的资源数据,例如国际化、Struts 2开发模式等信息。Struts.properties文件示例见代码1.8。
代码1.8 struts.properties文件示例
#设置字符集
struts.i18n.encoding=UTF-8
#该属性指定Http的请求后缀
struts.action.extension=do,action
#该属性设置当struts.xml文件改变后,系统是否自动重新加载该文件
struts.configuration.xml.reload=false
#指定当前应用默认的国际化地区信息
struts.locale=en_us
★ 注意 ★
有过Struts 1.X开发经验的读者会发现,Struts 2框架的Action只是一个普通的Java类(POJO),这是同Struts 1.X的重要区别之一。
文章地址: http://blog.youkuaiyun.com/ivorytower/archive/2008/04/23/2318898.aspx
本文详细介绍了Struts2框架中的Action控制器及其工作流程,包括登录验证、配置文件使用和属性资源文件设置。强调了通过修改配置文件轻松调整Action模块的灵活性。

被折叠的 条评论
为什么被折叠?



