Struts2继承RequestAware,SessionAware,ApplicationAware,ModelDriven,Preparable等接口

当我们初学struts2时,我们接触最多和用的最多的莫过于ActionSupport接口了,然而我们也知道,struts2还整合了其他很优秀的接口,下面我以一个具体的实例展示这些用法----------大神勿喷

BaseAction:

import java.lang.reflect.ParameterizedType;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.opensymphony.xwork2.Preparable;

/**
 * 抽象的action超类,专门用于继承
 */
public abstract class BaseAction<T> extends ActionSupport implements ModelDriven<T>,
		Preparable {

	private static final long serialVersionUID = -1314560516485837572L;
	public T model ;
	
	@SuppressWarnings("unchecked")
	public BaseAction(){
		try {
			ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass();
			Class<T> clazz = (Class<T>) type.getActualTypeArguments()[0];
			model = clazz.newInstance();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public void prepare() throws Exception {
	}

	public T getModel(){
		return model ;
	}
}

TestAction:

@Controller
@Scope("prototype")
public class TestAction extends BaseAction<User>implements UserAware,RequestAware,ApplicationAware,ServletContextAware,SessionAware{

	private static final long serialVersionUID = -1642353237166273131L;

	//注入userService
	@Resource
	private UserService userService ;
	
	private Integer currentPage;
	
	//接受session的user对象
	private User user;
	//接受request对象
	private Map<String, Object> request;
	//接受application对象
	private Map<String, Object> application;
	//接受ServletContext对象
	private ServletContext sc;
	//接受session对象
	private Map<String, Object> session;
 
	public void validate(){
	//===============
	}
	
	/**
	 * 分页显示所有用户
	 */
	public String allUsers(){
		
		Page page = new Page();
		User users = new User();
		//设置每页显示条数
		page.setEveryPage(3);
		if(currentPage == null) {
			currentPage = new Integer(1);
		}
		page.setCurrentPage(currentPage);
		
		Result result = userService.findByPage(page,users);
		
		request.put("users", result.getList());
		request.put("page", result.getPage());
		
		return SUCCESS;
	}
	
	
	//=============
	public Integer getCurrentPage() {
		return currentPage;
	}

	public void setCurrentPage(Integer currentPage) {
		this.currentPage = currentPage;
	}
	//注入user对象
	public void setUser(User user) {
		this.user = user ;
	}
	public void setRequest(Map<String, Object> request) {
		this.request = request;
	}
	public void setApplication(Map<String, Object> application) {
		this.application = application;
	}
	public void setServletContext(ServletContext context) {
		this.sc = context ;
		
	}
	public void setSession(Map<String, Object> session) {
		this.session = session;
	}
}

在TestAction中,我虽然我只用了request,但是我们却可以发现,这比我们用HttpServletRequest 等代码会简介很多,当然,其他接口也是同样的原理。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值