大多数导出数据都用EXCEL吧,但是数据量过大的时候 导出EXCEL是个头疼的事,所以这时候选择直接导出文本文件,为了便于使用,此方法程序员只需要设置一下响应头格式,传递对象集合 和 列标题 即可
ACTION 里面的一部分:
response.setCharacterEncoding("UTF-8");
response.setContentType("application/octet-stream");//可以对文件进行另存为操作
response.addHeader("Content-Disposition","attachment; filename="+fileName+".txt");
TxtExport exp = new TxtExport();
String[] titles = {"时间","所在分公司","所在区域","客户经理","Boss工号","集团编码","产品名称","号码数量","单价"
,"计量奖金","封顶值","奖金"};
exp.export(fileName,titles,list,response.getOutputStream());
现在是导出方法 很简单
public class TxtExport<T> {
public void export(String title, String[] headers,
Collection<T> dataset, OutputStream out){
StringBuilder content = new StringBuilder();
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(out));
try{
for(String tip:headers){
content.append(tip).append("||");
bw.append(tip).append("||");
}
bw.newLine();
content.append("\n");
Iterator<T> it = dataset.iterator();
int index = 0;
while (it.hasNext())
{
index++;
content.append(index).append(" ");
bw.append(String.valueOf(index)).append(" ");
T t = (T) it.next();
Field[] fields = t.getClass().getDeclaredFields();
for (int i = 0; i < fields.length; i++)
{
Field field = fields[i];
String fieldName = field.getName();
String getMethodName = "get"
+ fieldName.substring(0, 1).toUpperCase()
+ fieldName.substring(1);
Class tCls = t.getClass();
try{
Method getMethod = tCls.getMethod(getMethodName,new Class[]{});
Object value = getMethod.invoke(t, new Object[]{});
if(value ==null){
value = " ";
}
content.append(String.valueOf(value)).append("||");
bw.append(String.valueOf(value)).append("||");
}catch(Exception e){
e.printStackTrace();
}
}
content.append("\n");
bw.newLine();
}
System.out.println(content.toString());
bw.flush();
bw.close();
}catch(Exception e){
e.printStackTrace();
}finally {
try {
bw.close();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
分享到:
相关推荐
对java泛型以及反射机制进行原理和应用上的讲解,帮助初学者对这两个概念进行更轻松的掌握
但是需要注意,由于类型擦除,泛型信息在运行时并不直接存在,因此在使用反射处理泛型时,必须格外小心,防止类型安全问题。 在实际开发中,泛型和反射的应用非常广泛。例如,Spring框架就大量使用了这两种技术。...
同时,因为反射会带来性能损失,因此,可根据自己需求,针对每个类型轻松在两种模式之前切换,本例源码,测试实例俱全,而且代码浅显易懂,只要对泛型、反射、三层架构有一定了解的人都能轻松学习
在Java编程语言中,泛型和反射是两个非常重要的特性,它们可以极大地提高代码的复用性和灵活性。本文将深入探讨如何结合这两种技术实现一个通用的DAO(Data Access Object)设计模式。 首先,我们来看“泛型”。...
泛型主要是为了解决在编程中频繁进行类型转换的问题,而反射则允许程序在运行时动态地获取类的信息和调用方法。 泛型类型: 在 Java 5 之前,像 `Hashtable` 这样的集合类只能存储 `Object` 类型的数据,这意味着在...
泛型是C#的一个核心特性,它允许我们编写类型参数化的代码,即代码可以在多种数据类型上工作,而无需进行显式的类型转换。这提高了代码的复用性和安全性。在C#中,我们可以定义泛型类、泛型接口、泛型方法等。例如,...
鉴于使用三层架构的过程中,数据库变动造成大量代码改动的问题,特意对三层架构进行了改进,数据库变动只需要简单修改model即可,同时,因为反射会带来性能损失,因此,可根据自己需求,针对每个类型轻松在两种模式...
NPOL网上有返回DataTable,我自己编写了个泛型版的。
反射和泛型是一种重要的解决途径。 此代码是一个生成泛型对象的类。 比如: Pool<Point> pool = new Pool(){}; Point p = pool.get(x, y); //在此构造Point对象 ... pool.put(p); 希望能帮助那些为查找泛型构造器、...
在Java编程语言中,泛型和反射是两个非常重要的特性,它们在软件开发中有着广泛的应用。本篇文章将深入探讨这两个概念以及它们在实际开发中的小运用。 首先,我们来看泛型(Generics)。泛型是在Java SE 5.0引入的...
2. **自动转换**:通过泛型,我们可以直接在 Dao 中返回所需类型的对象,无需手动进行强制类型转换。 3. **代码复用**:一个泛型 Dao 类可以用于多种实体,减少了代码重复,提高了代码的可维护性。 **反射...
泛型+反射:泛型 笔记 ,课后作业
Java泛型和反射机制
为了让JSP页面能够支持泛型,我们需要对Tomcat的`web.xml`文件进行相应的配置。具体操作如下: - 打开MyEclipse,找到项目对应的服务器配置。 - 定位到Tomcat的`web.xml`文件,通常位于`conf`目录下。 - 在`...
Java中的泛型和反射是两种强大的编程工具,它们各自提供了不同的能力,并且在某些情况下可以相互补充。泛型引入了类型安全,使得在编译时就能检测到类型错误,而反射则允许在运行时动态地获取和操作类、接口、字段和...
总结来说,这个项目展示了如何结合使用泛型、XML和反射来实现数据的持久化和恢复,这对任何需要在不同场景间传输或存储复杂数据的应用都是非常有价值的。通过熟练掌握这些技术,开发者可以构建出更加灵活和强大的...
先说一下遇到的问题:通过使用GSON泛型进行报文转换的时候想要对部分关键字段加密,发现在封装好的方法中,对个别字段的加密满足不了。 解决过程:首先通过反射获取到bean下的对象名称。 对象名称获取到了之后需要...
总结来说,这个案例展示了如何结合Java的泛型和反射机制来实现高效、灵活的数据层封装,同时利用MSSQL JDBC 3.0驱动来与SQL Server数据库进行通信。这样的设计有助于简化数据库操作,提高代码的可扩展性和维护性,...
在C#中通过反射操作一个List泛型。。