`

Struts2框架中 怎么把从数据库中读取的数据生成文件,并在客户端保存

 
阅读更多
TestXL.jsp

<%@page  contentType="text/html;  charset=GBK"%>
<%@taglib  uri="/WEB-INF/struts-html.tld"  prefix="html"%>
<html:html>
   <html:button  property="button"  onclick="printAll()">DownLoad</html:button>
</html:html>
<script  language='javascript'  type="text/javascript">
function  printAll(){
   location.href="<%=request.getContextPath()%>/downloadAction.do";
}
</script>

 

ExcelBean:

import  java.io.*;
import  jxl.*;
import  jxl.write.*;
import  jxl.format.*;
import  java.util.*;
import  javax.servlet.http.HttpServletResponse;

/*
用于Struts结构中的Excel文件写操作,当但击“导出按钮”时可以直接在客户端导出Excel文件并提示保存
使用方法:
在action类中加入:
ExcelBean  eb  =  new  ExcelBean();
if(vect.size()>0){
   eb.exportToExcel(response,  fname,  sheetname,  titles,  vect);  //调用生成excel文件bean
}
参数:
response:action类中的HttpServletResponse;
filename:要生成的保存的缺省的Excel文件名
sheetname:要保存的工作表的名称
titles:工作表中的表格横向标题
vect:数据行
*/

public  class  ExcelBean  {
       public  ExcelBean()  {}
       public  boolean  exportToExcel(HttpServletResponse  response,String  filename,String  sheetname,String[]  titles,Vector  vect)  throws  Exception  {
               OutputStream  os  =  null;
               boolean  b1  =  true  ;
               try  {
                       os  =  response.getOutputStream();  //取得输出流
                       response.reset();  //清空输出流
                       response.setHeader("Content-disposition","attachment;  filename="  +  filename  +  ".xls");  //设定输出文件头
                       response.setContentType("application/msexcel");  //定义输出类型
               }  catch  (IOException  ex)  {
                       b1=  false;
                       System.out.println("流操作错误:"+ex.getMessage());
               }
               WritableWorkbook  workbook  =  null;
               try  {
                       //创建新的Excel  工作簿
                       workbook  =  Workbook.createWorkbook(os);
                       //在Excel工作簿中建一工作表,其名为:第一页
                       jxl.write.WritableSheet  wsheet  =  workbook.createSheet(sheetname,  0);  //sheet();
                       WritableFont  font  =  new  WritableFont(WritableFont.ARIAL,  14,
                                                                                                 WritableFont.BOLD,  false,
                                                                                                 jxl.format.UnderlineStyle.
                                                                                                 NO_UNDERLINE,
                                                                                                 jxl.format.Colour.BLACK);
                       WritableCellFormat  format  =  new  WritableCellFormat(font);
                       for  (int  i  =  0;  i  <  titles.length;  i++)  {
                               Label  wlabel1  =  new  Label(i,  0,  titles[i],  format);  //行、列、单元格中的文本、文本格式
                               wsheet.addCell(wlabel1);
                       }
                       font  =  new  jxl.write.WritableFont(WritableFont.createFont("宋体"),  12,
                                                                                           WritableFont.NO_BOLD,  false,
                                                                                           jxl.format.UnderlineStyle.
                                                                                           NO_UNDERLINE,
                                                                                           jxl.format.Colour.BLACK);
                       format  =  new  jxl.write.WritableCellFormat(font);
                       for  (int  i  =  0;  i  <  vect.size();  i++)  {  //  在索引0的位置创建行(最顶端的行)
                               String[]  sdata  =  (String[])  vect.elementAt(i);
                               for  (int  j  =  0;  j  <  sdata.length;  j++)  {  //在索引0的位置创建单元格(左上端)
                                       Label  wlabel1  =  new  Label(j,  i,  sdata[j],  format);  //行、列、单元格中的文本、文本格式
                                       wsheet.addCell(wlabel1);
                                       System.out.println(sdata[j]  +  ":::"  +  sdata[j]);
                               }
                       }
                       workbook.write();  //写入文件
               }  catch  (WriteException  ex1)  {
                       b1  =  false;
                       System.out.println("WriteException:"+ex1.getMessage());
               }  catch  (IOException  ex2)  {
                       b1  =  false;
                       System.out.println("IOException:"+ex2.getMessage());
               }
               workbook.close();
               os.close();
               return  b1;
       }
}

 

DownloadAction:

import  org.apache.struts.action.*;
import  javax.servlet.http.*;
import  com.segsec.base.ExcelBean;
import  com.segsec.data.basedata;
import  java.util.Vector;

/**
 *  <p>Title:DownloadAction  </p>
 *  <p>Description:  QRRSMMS  </p>
 *  <p>Copyright:  Copyright  (c)  2004  jiahansoft</p>
 *  <p>Company:  jiahansoft</p>
 *  @author  wanghw
 *  @version  1.0
 */

public  class  DownloadAction  extends  Action  {
       public  ActionForward  execute(ActionMapping  mapping,
                                                                 ActionForm  form,
                                                                 HttpServletRequest  request,
                                                                 HttpServletResponse  response)  throws  Exception  {
               basedata  databean  =  new  basedata();
               Vector  vect  =  new  Vector();
               boolean  b1=  false;
               try  {
                       String  fname  =  "test";  //Excel文件名
                       String[]  titles  =  {"车牌号",  "车辆类型",  "用户帐号",  "车台号"};  //标题
                       String  sheetname  =  "车辆列表";
                       ExcelBean  eb  =  new  ExcelBean();
                       vect  =  databean.QuerySimilarVehicleInfoByAdminer();
                       if(vect.size()>0){
                               b1  =  eb.exportToExcel(response,  fname,  sheetname,  titles,  vect);  //调用生成excel文件bean
                       }
               }  catch  (Exception  e)  {
                       System.out.println(e);
               }
               if(b1){
                       return  mapping.findForward("display");
               }else{
                       return  mapping.findForward("failure");
               }
       }
}

 

basedata:

import  java.sql.PreparedStatement;
import  java.util.Vector;
import  java.sql.DriverManager;
import  java.sql.ResultSet;
import  java.sql.Connection;

public  class  basedata  {
       public  Vector  QuerySimilarVehicleInfoByAdminer(){
           Vector  vect  =    new  Vector();
           int  i  =  0;
           Connection  conn  =  null;
           PreparedStatement  pstam  =null;
           ResultSet  rs  =null;
           String  url  =  "jdbc:oracle:thin:@90.0.8.2:1521:ORCL";
           String  username  =  "gisap";
           String  password  =  "1";
           String  drivers  =  "oracle.jdbc.driver.OracleDriver";
 
           String  sqlStr  =  "SELECT    V.NUMBER_PLATE,v.vehicletype,A.ADMINER,U.CALL_LETTER  "
                                       +"  FROM          T_ADMINER_UNIT  AU,T_ADMINER  A,T_VEHICLE  V,T_UNIT  U  "
                                       +"  WHERE        A.ADMINERID=AU.ADMINERID"
                                       +"    AND        A.ADMINER  ='master'  "
                                       +"    AND        AU.UNITID  =  U.UNITID  "
                                       +"    AND        U.UNITID  =  V.UNITID  "
                                       +"  ORDER  BY  V.NUMBER_PLATE  ";
           try{
               Class.forName(drivers);
               conn  =  DriverManager.getConnection(url,  username,  password);
               pstam  =  conn.prepareStatement(sqlStr);
               rs  =  pstam.executeQuery();
               int  collength  =  rs.getMetaData().getColumnCount();
               while  (rs.next())  {
                   collength  =  rs.getMetaData().getColumnCount();
                   String[]  rowdata  =  new  String[collength];
                   for  (int  k  =  1;  k  <=  collength;  k++)  {
                       rowdata[k  -  1]  =  rs.getString(k);  //new  String(rs.getString(k).getBytes("ISO-8859-1"),  "GBK");  //
                   }
                   vect.add(rowdata);
               }
           }catch(Exception  e){
               System.out.println("QuerySimilarVehicleInfoByAdminer  Error!"+e.getMessage());
           }
           finally{
               try{
                   rs.close();
                   pstam.close();
                   conn.close();
               }catch(Exception  e){}
           }
           return  vect;
       }
       public  static  void  main(String[]  args)  {
               basedata  basedata  =  new  basedata();
       }
}

 

 

在struts-config.xml文件的<action-mappings></action-mappings>段中加入:

       <action  type="com.segsec.action.DownloadAction"  path="/downloadAction">
           <forward  name="display"  path="/welcome.jsp"  />
       </action>  

 

分享到:
评论

相关推荐

    Struts2文件下载程序使用框架实现

    在Struts2中实现文件下载功能,可以为用户提供方便的数据传输服务,例如下载PDF、图片、文档等资源。本程序包含两种实现方式:动态下载和静态下载,下面将详细解释这两种方法。 1. 动态下载: 动态下载是通过...

    android客户端上传文件源码,struts2服务端接收源码。.zip

    这里提到的是使用Struts2框架在服务端进行文件接收的场景,而Android客户端则负责发起文件上传请求。Struts2是一个流行的Java web框架,它提供了一套完整的MVC(Model-View-Controller)架构,便于开发和维护Web应用...

    Excel 导出 struts2 spring hibernate

    标题 "Excel 导出 struts2 spring hibernate" 暗示了这是一个关于使用Java Web开发框架Struts2、Spring和Hibernate实现Excel数据导入导出的教程或项目。这三个框架是Java后端开发中常见的技术栈,Struts2用于控制...

    struts2+jdbc+jsp增删改查

    5. **Struts2与JSP的交互**:在Struts2中,Action执行完毕后会返回一个结果类型,该结果类型对应一个JSP页面。例如,一个名为"StudentAction"的Action可能会返回"success"结果,这将导致Struts2加载对应的success....

    spring+struts+hibernate实现文件的上传和下载

    5. 创建下载文件的 Action,从数据库中读取文件内容并返回给客户端。 6. 编写相应的 JSP 页面,展示上传和下载的界面。 在实际项目中,为了提高性能和安全性,通常会考虑使用文件服务器来存储上传的文件,而不是...

    Spring + struts2 + hibernate excel生成

    - 创建一个Struts2 Action,该Action负责从数据库中获取数据并使用Apache POI生成Excel文件。 - 在Action中,使用Spring的AOP来管理事务,保证数据操作的完整性和一致性。 - 配置Struts2结果类型为流式结果,将...

    Struts2+IText动态导出Word示例源码

    在Struts2中,你可以创建一个Action类,该类负责处理导出Word的请求。这个Action通常会接收一些参数,如用户选择的数据范围或导出的格式。 接下来,你需要编写一个方法来生成Word文档。IText提供了一系列API,可以...

    struts与hibernate实现文件的上传与动态下载

    Struts和Hibernate是两个在Java Web开发中常用的框架。Struts主要用于MVC(Model-View-Controller)架构,提供了一种组织应用程序的方式,而Hibernate是一个对象关系映射(ORM)工具,用于简化数据库操作。本篇文章...

    Struts2+Excel导出Demo,测试可用带JAR包

    在导出Excel的场景中,Action通常负责获取数据、创建Excel工作簿并将其转换为流,最后响应到客户端。 2. **JAR包**: 提供了导出Excel功能的库,如JXL。JXL是一个开源的Java库,专门用于读写Excel文件。在这个Demo中...

    struts2+hibernate小项目

    Struts2和Hibernate是两种非常重要的Java开源框架,它们在Web开发领域中有着广泛的应用。Struts2作为MVC(模型-视图-控制器)框架,主要用于处理HTTP请求,实现业务逻辑与展示层的分离,而Hibernate则是一个对象关系...

    Struts2+spring2+hibernate3.2 集成

    文件下载可以通过设置Action的返回结果类型为stream,然后从服务器读取文件内容并将其流式传输到客户端。这样,用户就可以在浏览器中触发文件下载。 **输入验证**: Struts2提供了强大的验证机制,可以使用XML或...

    SSi(Struts2+Spring+iBatis)实现文件上传下载功能

    5. **文件下载**:在用户请求下载时,Struts2 Action会根据文件ID从数据库中查询文件信息,然后通过流操作读取文件内容并返回给客户端。注意设置正确的响应头,包括Content-Type(表示文件类型)、Content-...

    源代码和数据库皆上传。此项目为SSH框架的服务器端与Android的客户端通过Json进行数据交互,适合新手,简单易学

    主要使用了SSH(Spring、Struts2、Hibernate)框架,这是一个常见的Java Web开发组合,而Json则作为数据交换格式。以下是这个项目涉及的关键知识点详解: 1. **SSH框架**: - **Spring**:Spring是核心的Java企业...

    Struts2 文件上传总结

    Struts2 文件上传是Web开发中的一个重要组成部分,它允许用户从客户端向服务器传输文件,例如图片、文档等。本文将详细讲解Struts2框架中实现文件上传的两种常见方法,并探讨相关的注意事项和技术要点。 首先,我们...

    pb 数据库struts2 课堂讲稿

    在Struts2中,开发者可以将控制逻辑、事务管理和视图清晰地分开,以实现更高效的开发流程。 当一个HTTP请求到达时,Struts2框架的运作流程如下: 1. **Interceptor(拦截器)**:首先,Struts2的拦截器机制会介入...

    Java Struts2+poi插件 实现导出Excel

    在Struts2中,开发者可以定义Action类,这些类对应于特定的URL请求。每个Action类包含多个方法,每个方法对应一个HTTP请求。Struts2通过配置文件(如struts.xml)来映射这些请求和Action方法,并使用拦截器来处理如...

    struts1教程.pdf

    Struts1框架需要在web.xml中配置ActionServlet,这个servlet是Struts框架与Web应用的桥梁。配置中需要指定struts-config.xml的位置,并且可以设置调试参数和详细度。web.xml中的servlet和servlet-mapping定义了如何...

    struts2通用下载文件例程

    在Struts2中处理文件下载是一项常见的需求,尤其是在处理用户请求获取服务器上的静态或动态生成的文件时。本教程将深入探讨如何使用Struts2来实现一个通用的文件下载功能。 首先,我们来看看核心的组成部分: 1. *...

    struts2批量下载

    每个文件的下载信息(如文件名、路径等)可以从数据库、文件系统或其他数据源获取。然后,你可以使用循环遍历这个列表,对每个文件调用类似的方法来生成HTTP响应,设置适当的响应头,然后将文件内容写入响应流。为了...

    hibhernate-struts2实现的学生管理系统

    在这个系统中,Hibernate负责处理数据库交互,而Struts2则负责控制业务逻辑和视图展示。下面将详细介绍这两个框架在学生管理系统中的应用及相关的技术知识点。 一、Hibernate框架 Hibernate是Java领域中最流行的ORM...

Global site tag (gtag.js) - Google Analytics