`
ye_haiqiang
  • 浏览: 88421 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Struts 2 核心技术----搭建过程以及一个实例(2)

阅读更多

 

接上!Struts 2 核心技术----搭建过程以及一个实例(1)

 

三、使用Action类控制导航业务数据

Struts2Action充当着一个关键角色。它解决了如何把JSP页面上的数据,根据实际开发项目中具体的业务逻辑,来进行处理的问题。

技术要点:

1、如何调用execute方法处理业务逻辑

2、如何处理form表单数据

3、HTTPsession对象在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配置文件有误!

另一个是字符集问题-----改变下文件的字符!(文件属性)

每天一点点希望对大家有利!

分享到:
评论
Global site tag (gtag.js) - Google Analytics