import java.io.IOException;
import java.io.PrintWriter;
import java.lang.reflect.Method;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.interceptor.SessionAware;
import org.displaytag.tags.TableTagParameters;
import org.displaytag.util.ParamEncoder;
import com.autocreate.service.BaseService;
import com.autocreate.util.JBeanClass;
import com.autocreate.util.Log;
import com.opensymphony.xwork2.ActionSupport;
/**
* BaseAction
* @author Administrator
*/
public abstract class BaseAction extends ActionSupport implements ServletRequestAware, ServletResponseAware, SessionAware
{
private static final long serialVersionUID = -2252914695328460450L;
/**
* 添加失败
*/
public static final String ADDFAILED = "addfailed";
/**
* 添加成功
*/
public static final String ADDSUCCESS = "addsuccess";
/**
* 每页列表,即每页显示的记录数
*/
@SuppressWarnings("unchecked")
private List list;
/**
* 当前页码,即当前第几页
*/
private int pageNumber = 1;
/**
* 每页记录数,即一页显示多少条
*/
private int pageSize = 20;
/**
* 总记录数
*/
private int fullListSize = 0;
/**
* 页面传递删除的记录集合
*/
private String[] serial;
/**
* 响应URL
*/
private String url;
/**
* 响应内容
*/
private String msg;
/**
* HttpSession
*/
@SuppressWarnings("unchecked")
public Map session;
/**
* HttpServletRequest
*/
public HttpServletRequest request;
/**
* HttpServletResponse
*/
public HttpServletResponse response;
/**
* 跳转到添加页面
* @return
*/
public String add()
{
return SUCCESS;
}
/**
* 查询
* @return
*/
public abstract String find();
/**
* 查询集合
* @return
*/
public abstract String list();
/**
* 添加
* @return
*/
public abstract String insert() throws Exception;
/**
* 修改
* @return
*/
public abstract String modify() throws Exception;
/**
* 删除
* @return
*/
public abstract String delete() throws Exception;
/**
* 根据对象和页面删传递过来的删除数组,反射删除数据库
* @param serial
* @param entityClass
* @return
* @throws Exception
*/
@SuppressWarnings("unchecked")
protected boolean deleteByStrings(Class entityClass) throws Exception
{
if (null != serial && serial.length > 0)
{
BaseService baseService = new BaseService();
Object obj = entityClass.newInstance(); // 创建实例
Method method = entityClass.getMethod("getTablePrimaryKey"); // 执行指定方法
String primaryKey = method.invoke(obj).toString();
for (String str : serial)
{
obj = JBeanClass.setPropertyValueFromString(obj, primaryKey, str);
baseService.delete(obj);
}
}
return false;
}
/**
* 查询一页数据
* @param clazz
* @param tableName
* @param map
* @throws Exception
*/
@SuppressWarnings("unchecked")
protected void queryPageList(String tableName, Class serviceClass, Class entityClass, Map<String, String> map)
{
try
{
String pageIndexName = new ParamEncoder("element").encodeParameterName(TableTagParameters.PARAMETER_PAGE); // 页数的参数名
String value = request.getParameter(pageIndexName);
pageNumber = StringUtils.isEmpty(value) ? 1 : Integer.parseInt(value); // 当前页数
Class classType = serviceClass;
Object obj = serviceClass.newInstance(); // 创建实例
Method method = classType.getMethod("getCount", new Class[] { String.class, Map.class }); // 执行指定方法
fullListSize = Integer.parseInt(method.invoke(obj, new Object[] { tableName, map }).toString());
Method method2 = classType.getMethod("queryPageList", new Class[] { String.class, Class.class, Map.class, int.class, int.class }); // 执行指定方法
list = (List) method2.invoke(obj, new Object[] { tableName, entityClass, map, pageNumber, pageSize });
}
catch (Exception e)
{
Log.getLogger().error("queryPageList error...", e);
}
}
/**
* 输入HTML响应内容用于AJAX
* @param value 要写的值
*/
public void writerHtml(String value)
{
writer(value, 1);
}
/**
* 输入XML响应内容用于AJAX
* @param value 要写的值
*/
public void writerXml(String value)
{
writer(value, 2);
}
/**
* 输入响应内容用于AJAX
* @param value
* @param type
*/
private void writer(String value, int type)
{
PrintWriter out = null;
try
{
out = response.getWriter();
response.setCharacterEncoding("UTF-8");
switch (type)
{
case 1:
response.setContentType("text/html;charset=UTF-8");
break;
case 2:
response.setContentType("text/xml;charset=UTF-8");
break;
}
out.write(value);
out.flush();
}
catch (IOException e)
{
Log.getLogger().error("Out Writer Error...", e);
}
finally
{
out.close();
}
}
public String getUrl()
{
return url;
}
public void setUrl(String url)
{
this.url = url;
}
public String getMsg()
{
return msg;
}
public void setMsg(String msg)
{
this.msg = msg;
}
@SuppressWarnings("unchecked")
public void setSession(Map session)
{
this.session = session;
}
public void setServletRequest(HttpServletRequest request)
{
this.request = request;
}
public void setServletResponse(HttpServletResponse response)
{
this.response = response;
}
@SuppressWarnings("unchecked")
public List getList()
{
return list;
}
@SuppressWarnings("unchecked")
public void setList(List list)
{
this.list = list;
}
public int getPageNumber()
{
return pageNumber;
}
public void setPageNumber(int pageNumber)
{
this.pageNumber = pageNumber;
}
public int getPageSize()
{
return pageSize;
}
public void setPageSize(int pageSize)
{
this.pageSize = pageSize;
}
public int getFullListSize()
{
return fullListSize;
}
public void setFullListSize(int fullListSize)
{
this.fullListSize = fullListSize;
}
public String[] getSerial()
{
return serial;
}
public void setSerial(String[] serial)
{
this.serial = serial;
}
}
import java.util.HashMap;
import java.util.Map;
import com.auto.entity.Roleinfo;
import com.auto.service.BaseService;
public class RoleinfoAction extends BaseAction
{
private static final long serialVersionUID = -128991403689032079L;
private Roleinfo info;
public String find()
{
if(null != info)
{
info = new BaseService<Roleinfo>().query(info);
}
return SUCCESS;
}
@SuppressWarnings("unchecked")
public String list()
{
Map map = null;
if (null != info)
{
map = new HashMap();
map.put("Operatorid", info.getOperatorid());
}
queryPageList("Roleinfo", BaseService.class, Roleinfo.class, map);
return SUCCESS;
}
public String insert() throws Exception
{
try
{
return new BaseService<Roleinfo>().insert(info) ? ADDSUCCESS : ADDFAILED;
}
catch (Exception e)
{
throw e;
}
}
public String modify() throws Exception
{
try
{
if (null != info)
{
new BaseService<Roleinfo>().update(info);
}
return ADDSUCCESS;
}
catch (Exception e)
{
throw e;
}
}
public String delete() throws Exception
{
try
{
deleteByStrings(Roleinfo.class);
return ADDSUCCESS;
}
catch (Exception e)
{
throw e;
}
}
public Roleinfo getInfo()
{
return info;
}
public void setInfo(Roleinfo info)
{
this.info = info;
}
}
分享到:
相关推荐
在Java编程中,`Utils` 类和 `BaseAction` 是两个常见的概念,它们在软件开发中扮演着重要的角色。下面将详细阐述这两个概念及其在实际应用中的作用。 首先,我们来了解一下 `Utils` 类。`Utils`(工具类)通常是...
例如,你可能有一个BaseAction类,其中包含了通用的验证和授权方法,然后所有的具体业务Action类都可继承自这个BaseAction,从而继承这些功能。 案例分析:文件"SHH框架继承 - 魏泽腾.doc"很可能提供了关于如何在...
7. **×××DAO** 和 **×××DaoImpl**:这是自定义的DAO接口和实现类,它们继承自`GenericDao<T>`,并可能包含针对特定业务的额外方法。 8. **×××Rule**:业务逻辑类,实现了具体业务操作。这类类通常会处理...
Action类需要继承Struts2提供的BaseAction或实现Action接口,并定义相应的execute方法。 5. **结果类型Result** 结果类型定义了Action执行后的跳转逻辑。Struts2支持多种Result类型,如dispatcher(默认的,转发到...
BaseAction类中导入了AppContext工具类,该工具类需要从Spring框架中导入,使得继承BaseAction的子类能够通过getXXXService()方法来获取服务的实例,体现了服务定位器的设计模式。这一设计使得业务层的功能得到了...
因此,在对本系统进行架构设计的时候,考虑建立一个抽象的BaseAction类,该类继承LookupDispatchAction,实现LookupDispatchAction类中的getKeyMethodMap方法,在方法中返回本系统中请求参数值与资源文件中参数值的...
首先,我们来看`BaseAction.java`,这是一个基础Action类,通常包含了一些公共方法和属性,如登录验证、权限控制等。开发者可以继承这个基类,减少代码重复,提高代码复用性。BaseAction中的方法会处理来自用户请求...
然后,为了提高代码复用性和模块化,作者创建了一个名为`BaseAction`的类,放在`com.address.struts.action`包中。这个类可以作为其他Action类的基类,封装了一些通用的功能,如对HTTP请求和session的操作。这样做...
- `BaseAction`类或继承自它的其他Action类应该包含处理文件上传的逻辑。例如,读取上传文件并保存到服务器上,同时更新进度信息。 2. **进度更新机制**: - JavaScript中的`process()`函数通过Ajax向`...
在这个例子中,Action需要继承自BaseAction,BaseAction提供了一些基础功能,如增删查改。Action层通过@Autowired注解来注入需要的Service实例,例如UserService。同时,如果要使用BaseAction中的方法,还需要注入...
在实际开发中,开发者通常会创建一个BaseAction类,继承自Struts2的ActionSupport类,并注入必要的Service,这样可以减少重复代码。对于Mapper接口,每个接口对应一个XML文件,其中包含SQL语句和结果映射。当...
- 创建一个基类`BaseAction`,继承自Struts的Action类,主要用于获取Spring的ApplicationContext,以便通过ID获取所需的bean。 11. **Struts配置**: - 使用`struts-config.xml`文件,通过右键向导新建登录动作...
`BaseAction` 类很可能包含了所有后台操作的通用方法和逻辑,如权限验证、数据过滤、日志记录等。开发者可以继承这个基类,创建自己的控制器,从而减少重复代码,提高代码复用性。 其次,`Form.class.php` 文件可能...
3. **定义Action类**:Action类是处理用户请求的核心,它继承自Struts2提供的BaseAction类,或者实现Action接口,并包含处理业务逻辑的方法。 4. **创建结果视图**:Struts2支持多种结果视图,如JSP、FreeMarker、...
- **ResumeAddAction 示例**:这部分展示了一个名为 `ResumeAddAction` 的类示例,该类继承自 `BaseAction` 类,并重写了 `doExecute` 方法。这个例子中使用了依赖注入的方式获取 `ResumeService` 对象,并调用了 `...
- `javax.servlet.http.*`: 包含了处理HTTP请求和响应的相关接口和类。 - `org.apache.struts.*`: Struts框架的核心类库。 - `com.css.*`: 自定义的包,可能包含了一些业务逻辑或自定义的实体类等。 3. **文件...
当Action类继承自`ActionSupport`或`BaseAction`时,实际上已经间接地实现了`execute`方法。`ActionSupport`类中的`execute`方法默认返回"success"视图。因此,如果你的Action类继承了`ActionSupport`,你可以选择...
`AreaAction.java`可能是具体的业务操作类,它继承了`BaseAction.java`,实现了特定领域的分页操作。 `AccNodes.java`可能是表示数据节点的类,包含了分页数据的实体对象。这些节点可能被用于构建分页列表,每个...
在Web应用的底层,BaseAction通常是一个基类,包含了通用的方法和属性,为其他Action提供继承和复用的基础。这可能包括错误处理、请求参数解析、会话管理等功能。这样做可以保持代码的整洁和一致性,减少重复工作。 ...