Sturts2 三种开发模式 (转)

1、实现与 Servlet API的交互
struts2中提供了Map类型的request、session与application,可以从ActionContext对象中获得。
ActionContext对象位于com.opensymphony.xwork2包中,它是Action执行的上下文。
获取ActionContext对象:
 ActionContext context= ActionContext.getContext();
获得request对象
 Map request = (Map)context.get("request");
通过put()方法把需要传递的数据对象放入request对象中:
 request.put("key",Object);
 
2、域模型DoaminModel
  无论是用户注册逻辑的实现,还是其他的一些表单信息的提交操作,并不是通过操作真正的领域对象进行实现。
  原因是因为将所有的实体对象的属性都封装到了Action对象中,而Action对象只是操作一个实体对象中的属性,
  而不是操作某一个实体对象。这样的操作有些偏离了领域模型设计的思想,比较好的设计是将某一领域的实体
  直接封装成一个实体对象。
  
  struts2的action中使用domain域模型接收参数
    private UserInfo user;
  public void setUser(UserInfo user) {
  this.user = user;
  }
  public void getUser(){
   return user;
  }
      使用DomainModel接收参数    
   a.定义:定义Model类,在Action中定义Model类的对象(不需要new),创建该对象的get和set方法; 
   b.接收:通过对象的属性接收参数,如:user.getUserName(); 
   c.发送:使用对象的属性传递参数,如:user2_add?user.userName=MGC;
      
3、驱动模型ModelDriven
驱动模型ModelDriven:(表单属性必须和实体类属性名称保持一致)
  模型驱动是使用javaBean对象来封装请求参数,在整个MVC流程中可以直接使用这个对象。在发送请求后Struts
  将各个请求参数(javabean的属性)封装到一个JavaBean对象中,Action接收这个实例对象并用该对象进行相关处理返回处理结果。 
  模型驱动的Action中定义javaBean并实例化,并且需要提供该JavaBean的getter和setter方法。Action需要实现ModelDriven接口。
  还是以UserAction为例:
  public class UserAction extends ActionSupport implements ModelDriver<User>{
  private User user= new User();
  /*
   *请求处理方法
   */
   @Override
   public User getModel(){
      return this.user
   }
    }
 getModel()方法返回了明确的实体对象user,所以表单中的元素名称不需要指定明确的实体对象引用,即可成功的将表单参数注入到user对象
   

posted @ 2017-03-15 09:53  滥好人  阅读(157)  评论(0编辑  收藏  举报