此文主要来自www.blogjava.net/Max的实例
Struts 2.0 支持更高级的 POJO 访问,先定义一个 User.java 类。把 username 和 password 属性,从 Login 类中分离出来,它可以使系统结构更清晰,对开发多层系统尤其有用。
User.java
package
com.bulktree.struts2;


public
class
User
{
private String username;
private String password;

public String getUsername()
{
System.out.println("******getUsername()******");
return username;
}

public void setUsername(String username)
{
System.out.println("*******setUsername()********");
this.username = username;
}

public String getPassword()
{
System.out.println("******getPassword()*******");
return password;
}

public void setPassword(String password)
{
System.out.println("******setPassword()*********");
this.password = password;
}
}
login2.jsp
<
s:form action
=
"
login2
"
method
=
"
post
"
>
<
s:textfield name
=
"
user.username
"
label
=
"
USERNAME
"
tooltip
=
"
Enter Your UserName
"
></
s:textfield
>
<
s:password name
=
"
user.password
"
label
=
"
PASSWORD
"
tooltip
=
"
Enter Your PassWord
"
></
s:password
>
<
s:submit label
=
"
login
"
></
s:submit
>
</
s:form
>
struts.xml文件中action配置:
<
action
name
="login2"
class
="com.bulktree.struts2.LoginAction2"
>
<
result
name
="success"
>
/welcome.jsp
</
result
>
<
result
name
="input"
>
/login2.jsp
</
result
>
</
action
>
LoginAction2.java:
package
com.bulktree.struts2;

import
com.opensymphony.xwork2.ActionSupport;


public
class
LoginAction2
extends
ActionSupport
{
private User user;
private String message;

public void setUser(User user)
{
System.out.println("********setUser()***********");
this.user = user;
}

public User getUser()
{
System.out.println("*********getUser()*************");
return user;
}


public String getMessage()
{
System.out.println("************getMessage()********");
return message;
}
@Override

public String execute() throws Exception
{
System.out.println("*****execute()******");

if("bulktree".equals(user.getUsername()) && "oakertree".equals(user.getPassword()))
{
message = "Welcome, " + user.getUsername();

} else
{
message = "Error!";
}
return ActionSupport.SUCCESS;
}
@Override

public void validate()
{
System.out.println("******validate()******");

if(null == user.getUsername() || user.getUsername().length() < 5)
{
this.addFieldError("username","USERNAME ERROR");
}

if(null == user.getPassword() || user.getPassword().length() < 5)
{
this.addFieldError("password","PASSWORD ERROR");
}
}
}
welcome.jsp:
YOUR USERNAME:
<
FONT size
=
"
5
"
color
=
"
red
"
><
s:property value
=
"
user.username
"
/></
FONT
><
br
>
YOUR PASSWORD:
<
FONT size
=
"
5
"
color
=
"
red
"
><
s:property value
=
"
user.password
"
/></
FONT
><
br
>
控制台输出及分析:
*********
getUser()
*************
//
得到User类的实例
********
setUser()
***********
//
执行setUser(),准备赋值操作
******
setPassword()
*********
//
set赋值操作,此时是真正的赋值
*********
getUser()
*************
//
得到User类的实例
*******
setUsername()
********
//
set赋值操作,此时是真正的赋值
以上有struts2框架自动执行
******
validate()
******
//
表单验证
******
getUsername()
******
//
表单验证时调用get方法(判断username)
******
getUsername()
******
//
表单验证时第二次调用get方法(判断username)
******
getPassword()
*******
//
表单验证时调用get方法(判断password)
******
getPassword()
*******
//
表单验证时第二次调用get方法(判断password)
*****
execute()
******
//
业务逻辑
******
getUsername()
******
//
调用get方法
******
getPassword()
*******
//
调用get方法
一下由Struts2框架自动执行
*********
getUser()
*************
//
得到User类的实例
******
getUsername()
******
//
自动执行get方法
********
getUser()
*************
//
得到User类的实例
******
getPassword()
*******
//
自动执行get方法
我们可以把类的属性分离出来实现系统架构清晰、明了。
Struts 2.0 支持更高级的 POJO 访问,先定义一个 User.java 类。把 username 和 password 属性,从 Login 类中分离出来,它可以使系统结构更清晰,对开发多层系统尤其有用。
User.java





































































































































我们可以把类的属性分离出来实现系统架构清晰、明了。