接上!Struts 2 核心技术----搭建过程以及一个实例(1)
三、使用Action类控制导航业务数据
Struts2中Action充当着一个关键角色。它解决了如何把JSP页面上的数据,根据实际开发项目中具体的业务逻辑,来进行处理的问题。
技术要点:
1、如何调用execute方法处理业务逻辑
2、如何处理form表单数据
3、HTTP的session对象在Action的主要使用方式
4、ActionMapping对象配置文件中的处理流程
Eg:
LoginAction是一个负责登录的类,主要处理登录过程中用户属性的处理,如获取用户名和密码。代码如下:
package struts.action;
import com.opensymphony.xwork2.ActionContext;
public class LoginAction
{
//Action类公共私有变量,用来做页面导航标志
private static String FORWORD=null;
//用户名
private String username;
//密码
private String password;
//获取用户名
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;
}
public String execute()
{
//JSP页面输入的值
username=getUsername();
password=getPassword();
//判断输入是否是空对象或者没输入
if(username!=null && !username.equals("") && password!=null && !password.equals(""))
{
ActionContext.getContext().getSession().put("user", username);
FORWORD="success";
}
else
{
FORWORD="input";
}
return FORWORD;
}
}
Action类映射配置通过struts.xml文件来完成,具体如下:
<action name="Login" class="struts.action.LoginAction">
<result name="input">/login.jsp</result>
<result name="success">/index.jsp</result>
</action>
四、使用ActionSupport进行校验
如果from数据操作有误,比如输入的不是所需要的数据,或者没有输入等原因,action实例执行execute方法前会使用校验进行控制。
技术要点:
1、Action类中ActionSupport使用,以及validate方法的重写实现。
2、属性文件messageResource.properties定义,以及JSP页面上的错误信息如何显示。
3、导航结果显示。
代码如下EG:
LoginAction.java文件
package struts.action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends ActionSupport
{
//Action类公共私有变量,用来做页面导航标志
private static String FORWORD=null;
//用户名
private String username;
//密码
private String password;
//获取用户名
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;
}
public String execute()
{
//JSP页面输入的值
username=getUsername();
password=getPassword();
//判断输入是否是空对象或者没输入
if(username!=null && !username.equals("") && password!=null && !password.equals(""))
{
ActionContext.getContext().getSession().put("user", username);
FORWORD="success";
}
else
{
FORWORD="input";
}
return FORWORD;
}
//校验方法,用来校验输入值为空或者没有输入返回错误信息
public void validate()
{
if(getUsername()==null || getUsername().trim().equals(""))
{
//返回错误信息键值,user.required包含具体内容见messageResource.properties
addFieldError("username",getText("user.required"));
}
if(getPassword()==null || getPassword().trim().equals(""))
{
//返回错误信息键值,user.required包含具体内容见messageResource.properties
addFieldError("password",getText("pass.required"));
}
}
}
Struts.properties文件
#支持本地化的资源文件名定义
struts.custom.i18n.resources=messageResource
messageResource.properties文件
#用key=value格式定义页面上显示的内容
user.required=请输入用户名!
pass.required=请输入密码!
补充,大家遇到问题有两个:
一个是struts2 标签使用异常 The Struts dispatcher cannot be found.-----原因是web.xml配置文件有误!
另一个是字符集问题-----改变下文件的字符!(文件属性)
每天一点点希望对大家有利!