struts的轻量架构(新手有用)
发表评论
引用链接
04月18日(星期二)

public class XXXAction extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) throws Exception
{
XXXXForm theform =(XXXXForm) form;//form的强制转型
//这里就是你要处理的业务逻辑了
return mapping.findForward("XXXX");
}
这是一个Action最少的代码了,它没有处理任何逻辑,只是一个跳转,FormBean的话,只要继承ActionForm,代码到没有规定,到时,我们可能会想,每个Action里面都必须写上面那些代码,烦啊,还有在每个FormBean里我们一般都会定义一些常用的属性,如event,根据event的值,我们来决定一些逻辑的处理及页面的跳转,每次要写,也烦啊。
好,烦的话,那我们要开始做点事情了,首先,写一个formBean代码如下:
public class XXXForm extends ActionForm
{
private String event;//事件名

public String getEvent()
{
return event;
}

public void setEvent(String event)
{
this.event = event;
}
}我想这谁都应该清楚,然后我们再写frombean时,就不要extends ActionForm,而是extends XXXForm了,这样,我们省了些代码,我们再来看Action,也这样试试:

public abstract class XXXAction extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response) throws Exception
{
XXXForm theform =(XXXForm) form;
return mapping.findForward(doAction(theform));
}

/** *//**
* 处理一些业务
* @param form
* @return 返回mapping指向的字符串
*/
public abstract String doAction(BaseForm form);//抽象
}这样的话,我们再写Action类时,就不extends Action而是extends XXXAction,代码就像:

public class ***Action extends XXXAction
{

public String doAction(XXXForm form)
{
***Form theform = (***Form) form;//强制转成你真正的formbean
//这里就是你要处理的业务逻辑了
return "success";
}
}

public class BaseForm extends ActionForm
{
private String event;
private HttpServletRequest request;

/** *//**
* 注:这个是得到用户信息,这个只是一个例子,也可不实现,由request得到session,再得到

user,
* 但reguser字符串对一般开发人员可能是不可见的
*/

public User getUser()
{
return (User) getRequest().getSession().getAttribute("reguser");
}

public HttpServletRequest getRequest()
{
return request;
}

/** *//**
* 注:这里用的protected,这样可以就同一包的类可调用,其它类是不可见的
*/

protected void setRequest(HttpServletRequest request)
{
this.request = request;
}

public String getEvent()
{
return event;
}

public void setEvent(String event)
{
this.event = event;
}
}BaseAction代码:

public abstract class BaseAction extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)


throws Exception
{
BaseForm theform =(BaseForm) form;
theform.setRequest(request);//加了这句
return mapping.findForward(doAction(theform));
}

/** *//**
* 处理一些业务
* @param form
* @return 返回mapping指向的字符串
*/
public abstract String doAction(BaseForm form);
}
前篇(06-03-29): Jbdc助手-数据库操作面向对象的实现(oracle)
后篇(06-06-15): 物化视图上用触发器(用于同步)
用过struts都清楚,struts的开发一般要写两个类,FormBean和Action类,通常情况下Action是这样的:

public class XXXAction extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception
{
XXXXForm theform =(XXXXForm) form;//form的强制转型
//这里就是你要处理的业务逻辑了
return mapping.findForward("XXXX");
}这是一个Action最少的代码了,它没有处理任何逻辑,只是一个跳转,FormBean的话,只要继承ActionForm,代码到没有规定,到时,我们可能会想,每个Action里面都必须写上面那些代码,烦啊,还有在每个FormBean里我们一般都会定义一些常用的属性,如event,根据event的值,我们来决定一些逻辑的处理及页面的跳转,每次要写,也烦啊。
好,烦的话,那我们要开始做点事情了,首先,写一个formBean代码如下:

public class XXXForm extends ActionForm
{
private String event;//事件名
public String getEvent()
{
return event;
}
public void setEvent(String event)
{
this.event = event;
}
}
public abstract class XXXAction extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception
{
XXXForm theform =(XXXForm) form;
return mapping.findForward(doAction(theform));
}
/** *//**
* 处理一些业务
* @param form
* @return 返回mapping指向的字符串
*/
public abstract String doAction(BaseForm form);//抽象
}
public class ***Action extends XXXAction
{
public String doAction(XXXForm form)
{
***Form theform = (***Form) form;//强制转成你真正的formbean
//这里就是你要处理的业务逻辑了
return "success";
}
}就是以上一些代码,简单多了吧,return一个字符串就行了,感觉还有点像webwork了,到此完了吗,有没
有什么还没有做呢,对了,这样的话,我们定义的Action都成无会话的bean了,所以request是要得到的
,很多情况下的url是***action.do?id=cctv,而且一般是系统都是把用户的信息放入session中的,所以
request是强烈要求要还给我们的,好,那我们来重构下formbean和action吧,以下我们用BaseForm,及
BaseAction来定义,两个类都放在同一个包中

public class BaseForm extends ActionForm
{
private String event;
private HttpServletRequest request;
/** *//**
* 注:这个是得到用户信息,这个只是一个例子,也可不实现,由request得到session,再得到
user,
* 但reguser字符串对一般开发人员可能是不可见的
*/
public User getUser()
{
return (User) getRequest().getSession().getAttribute("reguser");
}
public HttpServletRequest getRequest()
{
return request;
}
/** *//**
* 注:这里用的protected,这样可以就同一包的类可调用,其它类是不可见的
*/
protected void setRequest(HttpServletRequest request)
{
this.request = request;
}
public String getEvent()
{
return event;
}
public void setEvent(String event)
{
this.event = event;
}
}
public abstract class BaseAction extends Action
{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) 

throws Exception
{
BaseForm theform =(BaseForm) form;
theform.setRequest(request);//加了这句
return mapping.findForward(doAction(theform));
}
/** *//**
* 处理一些业务
* @param form
* @return 返回mapping指向的字符串
*/
public abstract String doAction(BaseForm form);
}到此算为结束,可能有为会问,那还有response呢,response的话,一般出现在内部跳转等情况,感觉用
的比较少,所以在此就不把它给大家了,如觉得一定要得到的话,那就跟request一样进行设置吧,不过
万事都应该有个度,自己衡量。
前篇(06-03-29): Jbdc助手-数据库操作面向对象的实现(oracle)
后篇(06-06-15): 物化视图上用触发器(用于同步)
发表评论
引用链接
- 您可以按照以下步骤引用本文.本站收到您的引用通知后, 将自动链接您的文章, 以方便别人阅览 .
- 1. 启动您自己的博客管理页面, 并进入发表新文章的画面, 输入文章的内容. (如果您是ITPUB的博客请点这里.)
- 2. 复制下面虚线框里的连接字串, 把它们粘贴到您的文章中, 按照您的喜好修改一下表示文字.
- 3. 确认您选择了"发送引用通知"的选项.
- 4. 发表您的文章.
- 好啦, 您的文章就可以被自动链接到本站啦.
<a href="http://piliskys.itpub.net/post/8994/69496">struts的轻量架构(新手有用)</a>
| « | 十一月 2008 | » | ||||
|---|---|---|---|---|---|---|
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| [网站链接] |
|---|
|
|
|
|
|
|
|
|
