首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

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

2012-09-16 
Struts 2 核心技术----搭建过程以及一个实例(2)?接上!Struts 2 核心技术----搭建过程以及一个实例(1)?三、

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

?

接上!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配置文件有误!

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

每天一点点希望对大家有利!Struts 二 核心技术-搭建过程以及一个实例(2)

热点排行