首页>代码>SSH+mysql开发电商网站(可直接导入运行)>/E_shop/src/cn/it/shop/action/BaseAction.java
package cn.it.shop.action;

import java.io.InputStream;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import cn.it.shop.model.FileImage;
import cn.it.shop.service.AccountService;
import cn.it.shop.service.CategoryService;
import cn.it.shop.service.ForderService;
import cn.it.shop.service.PayService;
import cn.it.shop.service.ProductService;
import cn.it.shop.service.SorderService;
import cn.it.shop.service.UserService;
import cn.it.shop.utils.FileUpload;
import cn.it.shop.utils.EmailUtil;
import cn.it.shop.utils.MessageUtil;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

/*
 * Struts执行流程:先创建Action,再调用拦截器,拦截器访问成功再调用Action的方法
 * 在项目启动的时候Struts的过滤器,已经把相应的内置对象,和内置对象对应的Map存储到了ActionContext和值栈中
 * 如果实现了相应的xxxAware接口,就会从ActionContext中获取相应的Map进行传入。实现这个的拦截器为:servletConfig
 * servletConfig:有如下代码:判断当前实现什么接口,则会注入相应的对象
 * if (action instanceof ApplicationAware) {
            ((ApplicationAware) action).setApplication(context.getApplication());
        }
        
   if (action instanceof SessionAware) {
            ((SessionAware) action).setSession(context.getSession());
        }
        
   if (action instanceof RequestAware) {
            ((RequestAware) action).setRequest((Map) context.get("request"));
        }
 */
@Controller("baseAction")
@Scope("prototype")
public class BaseAction<T> extends ActionSupport implements RequestAware,SessionAware,ApplicationAware,ModelDriven<T> {

	//封装了图片信息的类
	protected FileImage fileImage;
	
	//用来装有将要被打包成json格式返回给前台的数据,下面要实现get方法
	protected List<T> jsonList = null;
	
	//获取要删除的ids,要有get和set方法
	//流是用来想前台返回数据的,这个数据是让struts获取的,然后通过流的形式传到前台,所以实现get方法即可
	protected String ids;
	protected InputStream inputStream;
	
	//page和rows和分页有关,pageMap存放查询的数据,然后打包成json格式用的
	//page和rows实现get和set方法,pageMap只需要实现get方法即可,因为pageMap不是接收前台参数的,是让struts获取的
	protected Integer page;
	protected Integer rows;
	protected Map<String, Object> pageMap = null;
	
	//service对象
	@Resource
	protected CategoryService categoryService;
	@Resource
	protected AccountService accountService;
	@Resource
	protected ProductService productService;
	@Resource
	protected ForderService forderService;
	@Resource
	protected SorderService sorderService;
	@Resource
	protected UserService userService;
	@Resource
	protected PayService payService;
	@Resource 
	protected EmailUtil emailUtil;
	@Resource 
	protected MessageUtil messageUtil;
	
	//上传文件工具类
	@Resource
	protected FileUpload fileUpload;

	//域对象
	protected Map<String, Object> request;
	protected Map<String, Object> session;
	protected Map<String, Object> application;
		
	@Override
	public void setApplication(Map<String, Object> application) {
		this.application = application;
	}
	@Override
	public void setSession(Map<String, Object> session) {
		this.session = session;
	}
	@Override
	public void setRequest(Map<String, Object> request) {
		this.request = request;
	}
	
	//ModelDriven
	protected T model;
	@Override
	public T getModel() {
		ParameterizedType type = (ParameterizedType)this.getClass().getGenericSuperclass();
		Class clazz = (Class)type.getActualTypeArguments()[0];
		try {
			model = (T)clazz.newInstance();
		} catch (Exception e) {
			throw new RuntimeException(e);
		}	
		return model;
	}
	
	//get和set方法
	public Integer getPage() {
		return page;
	}
	public void setPage(Integer page) {
		this.page = page;
	}
	public Integer getRows() {
		return rows;
	}
	public void setRows(Integer rows) {
		this.rows = rows;
	}
	
	public Map<String, Object> getPageMap() {
		System.out.println("--getPage--");
		return pageMap;
	}
	public String getIds() {
		return ids;
	}
	public void setIds(String ids) {
		this.ids = ids;
	}
	public InputStream getInputStream() {
		return inputStream;
	}
	public List<T> getJsonList() {
		return jsonList;
	}
	public FileImage getFileImage() {
		return fileImage;
	}
	public void setFileImage(FileImage fileImage) {
		this.fileImage = fileImage;
	}
	
}
最近下载更多
an7654  LV1 2023年10月9日
陆程江  LV2 2023年5月29日
jierffff  LV2 2023年4月20日
天下无敌啦啦啦啦啦  LV2 2023年2月3日
反复发烧  LV1 2023年1月28日
wuying8208  LV15 2023年1月1日
二十一画  LV10 2022年6月25日
wanglinddad  LV54 2022年4月18日
1358677997  LV2 2021年12月27日
最近浏览更多
jiemomo  LV12 2023年11月6日
微信网友_6707371254878208 2023年10月25日
暂无贡献等级
an7654  LV1 2023年10月9日
我是高手  LV1 2023年9月17日
SDLFJL  LV6 2023年7月23日
include  LV8 2023年6月20日
yemmmm666  LV1 2023年6月12日
陆程江  LV2 2023年5月23日
3516569014  LV5 2023年5月8日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友