SSH-BOS项目:重构BaseAction以及工具类抽取
2018-04-02 22:51
477 查看
重构后(请对照SSH-BOS项目:底层代码抽取(BaseDao、BaseAction)):点击打开链接
package com.xushuai.bos.web.action; import java.io.IOException; import java.lang.reflect.ParameterizedType; import java.util.List; import javax.servlet.http.HttpServletResponse; import org.hibernate.criterion.DetachedCriteria; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; import com.xushuai.bos.utils.BOSUtils; import com.xushuai.bos.utils.PageBean; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; public class BaseAction<T> extends ActionSupport implements ModelDriven<T> { //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ protected PageBean pageBean = new PageBean(); protected DetachedCriteria criteria = null; //接收分页参数 protected int page; protected int rows; //直接将接收到的参数赋给pageBean public void setPage(int page) { pageBean.setCurrentPage(page); } public void setRows(int rows) { pageBean.setPageSize(rows); } //↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ public final static String HOME = "home"; public final static String LIST = "list"; protected T model; //获取运行时期实际类型,并对其进行实例化 public BaseAction() { ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass(); Class entityClass = (Class) type.getActualTypeArguments()[0]; //↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ //对查询条件进行初始化,并赋给pageBean criteria = DetachedCriteria.forClass(entityClass); pageBean.setCriteria(criteria); //↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ try { model = (T) entityClass.newInstance(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } @Override public T getModel() { return model; } }
BOSUtils:
package com.xushuai.bos.utils; import java.io.IOException; import java.util.List; import java.util.UUID; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.struts2.ServletActionContext; import com.xushuai.bos.entity.User; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; public class BOSUtils { /** * 获取session对象 * @return */ public static HttpSession getSession(){ return ServletActionContext.getRequest().getSession(); } /** * 获取response对象 * @return */ public static HttpServletResponse getResponse(){ return ServletActionContext.getResponse(); } /** * 获取当前登录的用户 * @return */ public static User getLoginUser(){ return (User) getSession().getAttribute("user"); } /** * 生成32位uuid * @return */ public static String uuid() { return UUID.randomUUID().toString().replace("-", "").toUpperCase(); } /** * 将制定对象转换为json对象,并向页面回写 * @param o * @param exclude */ public static void writerJson(Object o,String[] exclude){ HttpServletResponse response = getResponse(); response.setContentType("text/json;charset=UTF-8"); //将PageBean转换为JSON串,返回给页面 JsonConfig jsonConfig = new JsonConfig(); //去除不需要返回的值 jsonConfig.setExcludes(exclude); //将查询结果转换为json串 String json = JSONObject.fromObject(o, jsonConfig).toString(); //返回json数据 try { response.getWriter().print(json); } catch (IOException e) { e.printStackTrace(); } } /** * 将指定的List转换 * @param list * @param exclude */ public static void writerJson(List list,String[] exclude){ HttpServletResponse response = getResponse(); response.setContentType("text/json;charset=UTF-8"); //将PageBean转换为JSON串,返回给页面 JsonConfig jsonConfig = new JsonConfig(); //去除不需要返回的值 jsonConfig.setExcludes(exclude); //将查询结果转换为json串 String json = JSONArray.fromObject(list, jsonConfig).toString(); //返回json数据 try { response.getWriter().print(json); } catch (IOException e) { e.printStackTrace(); } } }
相关文章推荐
- SSH-BOS项目:底层代码抽取(BaseDao、BaseAction)
- 【SSH网上商城项目实战02】基本增删查改、Service和Action的抽取以及使用注解替换xml
- 【SSH网上商城项目实战02】基本增删查改、Service和Action的抽取以及使用注解替换xml
- 【SSH项目实战】国税协同平台-3.资源文件分类&log4j&抽取BaseAction
- 【SSH网上商城项目实战02】基本增删查改、Service和Action的抽取以及使用注解替换xml
- 【SSH网上商城项目实战02】基本增删查改、Service和Action的抽取以及使用注解替换xml
- 【SSH项目实战】国税协同平台-3.资源文件分类&log4j&抽取BaseAction
- 【SSH项目实战】国税协同平台-23.抽取BaseService
- 框架 day48 BOS项目练习2(base dao/action,登陆,消息提示框,菜单按钮,修改密码,登陆拦截器)
- JAVA_WEB项目之Action层利用ModelDriven抽取BaseAction
- 85-002-11 在web项目中对Action层进行公共方法的抽取放入到BaseAction中
- BOS项目练习(base dao/action,登陆,消息提示框,菜单按钮,修改密码,登陆拦截器)
- SSH-BOS项目相关配置文件以及目录结构创建
- ssh中的BaseDao与BaseAction
- SSH-BOS项目:定区管理模块
- SSH整合(spingmvc,spring,hibernate)以及Dao层抽取方法
- SSH项目中创建action、service和serviceImpl步骤
- 纳税服务系统【异常处理、抽取BaseAction】
- SSH开发使用BaseAction<T>做为所有Action抽象父类。这段代码啥意思?
- SuperBaseAdapter以及BaseHolder的抽取封装