各个Action中共用的方法/变量都抽离到BaseAction中

  针对一些在action中使用到的变量和方法要封装到基础action中, 然后继承过来使用, 比如

public class SysUserGroupAction extends ActionSupport implements ModelDriven<SysUserGroupForm>, ServletRequestAware {}

  这是部门action, 因为要使用到HttpServletRequest 的 request对象接收前端参数, 所以需要实现ServletRequestAware接口, 然后这样写:

	privateHttpServletRequest request;
	@Override
	public void setServletRequest(HttpServletRequest request) {
		this.request = request;
	}

  对于所有的action, 比如订单action/顾客action/菜单action/商品action.....都这样写, 代码的重复率太高, 是在不好维护, 所以需要封装到一个BaseAction.java中,

因为原来的action继承ActionSupport, 所以这个BaseAction也要继承ActionSupport类, 还要实现ServletRequestAware接口, 而SysUserGroupAction不再去

继承ActionSupport和实现ServletRequestAware 接口, 只需要继承BaseAction即可, 代码改成:

创建BaseAction.java:

package cn.itcast.crm.web.action;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;

import com.opensymphony.xwork2.ActionSupport;

// 基础Action
public class BaseAction extends ActionSupport implements ServletRequestAware {
	private static final long serialVersionUID = 2453074903257305381L;
	
	// protected在继承类中可以调用, private只能在本类中使用
	protected HttpServletRequest request;
	
	@Override
	public void setServletRequest(HttpServletRequest request) {
		this.request = request;
	}

}

原来的SysUserGroupAction.java改成:

public class SysUserGroupAction extends BaseAction implements ModelDriven<SysUserGroupForm> {}

  改成这样之后, 在所有的具体Action中只要继承了BaseAction, 都可以在action中直接使用request对象, 大大减少代码量, 降低代码重复率, 提高代码可维护性,

代码结构变得清晰.

 

posted @ 2017-05-24 23:02  半生戎马,共话桑麻、  阅读(458)  评论(0)    收藏  举报
levels of contents