浏览 2449 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-16
在struts中,对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成的,其中Action扮演了真正的业务逻辑的实现者,ActionMapping与ActionForward则指定了不同业务逻辑或流程的运行方向。 在struts应用中,每个Action类都需要从 org.apache.struts.action.Action 继承而来。但实际应用中,我们喜欢从Action类中总结出来了一些通用特性。因此,构造一个基类将这些通用特性的代码实现出来,让应用中所用到的所有Action类直接继承我们构造的基类,而不是继承org.apache.struts.action.Action.从总结出来的通用特性中,最常见的是用户是否登陆,判断session失效,用户权限认证,错误日志打印等.这些通用特性都在自己构造的基类中实现,而且不需要在其他Action类中去调用 思路: 我的struts版本是struts1.0 1.定义一个抽象的基类ComAction,该基类继承org.apache.struts.action.Action 2.在ComAction定义一个抽象方法execute,应用中的其他action类都要覆盖这个方法,在这个方法实现具体的业务逻辑. 3.在ComAction中定义一个方法perform,是用来覆盖Action的perform方法,在这个方法中,完成公用的特性 4.在perform调用抽象类execute. 具体实现,以判断session是否失效为例: import javax.servlet.http.*; import org.apache.struts.action.*; public abstract class ComAction extends Action { public ComAction() { } public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response ) { try { HttpSession session=request.getSession(); //判断session是否失效 if(session.getAttribute("userId")!=null) //否,执行业务逻辑 forwardTo = perform(mapping, form, request, response); else //是,跳转到错误页面 forwardTo ="syserr"; } catch (Exception e) { //有异常,也跳转到错误页面 forwardTo = "syserr"; System.out.println("Exception :" + e.getMessage()); } return (mapping.findForward(forwardTo)); } public abstract String execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response); } 文章欢迎转载,但请注明出处和作者 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-11-16
这兄弟的forwardTo变量还没有定义哦,贴的代码被切过把,呵呵
|
|
返回顶楼 | |