打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
BlogJava - piliskys - struts的轻量架构(新手有用)
用过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;
    }

}
我想这谁都应该清楚,然后我们再写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";
    }

}

就是以上一些代码,简单多了吧,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;
    }

}
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);
}

到此算为结束,可能有为会问,那还有response呢,response的话,一般出现在内部跳转等情况,感觉用

的比较少,所以在此就不把它给大家了,如觉得一定要得到的话,那就跟request一样进行设置吧,不过

万事都应该有个度,自己衡量。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
在Struts和Hibernate之间搭起桥梁
struts1配置文件中action的常用属性
Struts第3天补充
使用Struts的Token机制解决表单的重复提交
享受JAVA的空气: Struts学习笔记(二)
【大学课程设计第二篇】基于SSH框架的人力资源管理系统设计与实现
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服