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中实现文件下载功能,可以为用户提供方便的数据传输服务,例如下载PDF、图片、文档等资源。本程序包含两种实现方式:动态下载和静态下载,下面将详细解释这两种方法。 1. 动态下载: 动态下载是通过...
这里提到的是使用Struts2框架在服务端进行文件接收的场景,而Android客户端则负责发起文件上传请求。Struts2是一个流行的Java web框架,它提供了一套完整的MVC(Model-View-Controller)架构,便于开发和维护Web应用...
标题 "Excel 导出 struts2 spring hibernate" 暗示了这是一个关于使用Java Web开发框架Struts2、Spring和Hibernate实现Excel数据导入导出的教程或项目。这三个框架是Java后端开发中常见的技术栈,Struts2用于控制...
5. **Struts2与JSP的交互**:在Struts2中,Action执行完毕后会返回一个结果类型,该结果类型对应一个JSP页面。例如,一个名为"StudentAction"的Action可能会返回"success"结果,这将导致Struts2加载对应的success....
5. 创建下载文件的 Action,从数据库中读取文件内容并返回给客户端。 6. 编写相应的 JSP 页面,展示上传和下载的界面。 在实际项目中,为了提高性能和安全性,通常会考虑使用文件服务器来存储上传的文件,而不是...
- 创建一个Struts2 Action,该Action负责从数据库中获取数据并使用Apache POI生成Excel文件。 - 在Action中,使用Spring的AOP来管理事务,保证数据操作的完整性和一致性。 - 配置Struts2结果类型为流式结果,将...
在Struts2中,你可以创建一个Action类,该类负责处理导出Word的请求。这个Action通常会接收一些参数,如用户选择的数据范围或导出的格式。 接下来,你需要编写一个方法来生成Word文档。IText提供了一系列API,可以...
Struts和Hibernate是两个在Java Web开发中常用的框架。Struts主要用于MVC(Model-View-Controller)架构,提供了一种组织应用程序的方式,而Hibernate是一个对象关系映射(ORM)工具,用于简化数据库操作。本篇文章...
在导出Excel的场景中,Action通常负责获取数据、创建Excel工作簿并将其转换为流,最后响应到客户端。 2. **JAR包**: 提供了导出Excel功能的库,如JXL。JXL是一个开源的Java库,专门用于读写Excel文件。在这个Demo中...
Struts2和Hibernate是两种非常重要的Java开源框架,它们在Web开发领域中有着广泛的应用。Struts2作为MVC(模型-视图-控制器)框架,主要用于处理HTTP请求,实现业务逻辑与展示层的分离,而Hibernate则是一个对象关系...
文件下载可以通过设置Action的返回结果类型为stream,然后从服务器读取文件内容并将其流式传输到客户端。这样,用户就可以在浏览器中触发文件下载。 **输入验证**: Struts2提供了强大的验证机制,可以使用XML或...
5. **文件下载**:在用户请求下载时,Struts2 Action会根据文件ID从数据库中查询文件信息,然后通过流操作读取文件内容并返回给客户端。注意设置正确的响应头,包括Content-Type(表示文件类型)、Content-...
主要使用了SSH(Spring、Struts2、Hibernate)框架,这是一个常见的Java Web开发组合,而Json则作为数据交换格式。以下是这个项目涉及的关键知识点详解: 1. **SSH框架**: - **Spring**:Spring是核心的Java企业...
Struts2 文件上传是Web开发中的一个重要组成部分,它允许用户从客户端向服务器传输文件,例如图片、文档等。本文将详细讲解Struts2框架中实现文件上传的两种常见方法,并探讨相关的注意事项和技术要点。 首先,我们...
在Struts2中,开发者可以将控制逻辑、事务管理和视图清晰地分开,以实现更高效的开发流程。 当一个HTTP请求到达时,Struts2框架的运作流程如下: 1. **Interceptor(拦截器)**:首先,Struts2的拦截器机制会介入...
在Struts2中,开发者可以定义Action类,这些类对应于特定的URL请求。每个Action类包含多个方法,每个方法对应一个HTTP请求。Struts2通过配置文件(如struts.xml)来映射这些请求和Action方法,并使用拦截器来处理如...
Struts1框架需要在web.xml中配置ActionServlet,这个servlet是Struts框架与Web应用的桥梁。配置中需要指定struts-config.xml的位置,并且可以设置调试参数和详细度。web.xml中的servlet和servlet-mapping定义了如何...
在Struts2中处理文件下载是一项常见的需求,尤其是在处理用户请求获取服务器上的静态或动态生成的文件时。本教程将深入探讨如何使用Struts2来实现一个通用的文件下载功能。 首先,我们来看看核心的组成部分: 1. *...
每个文件的下载信息(如文件名、路径等)可以从数据库、文件系统或其他数据源获取。然后,你可以使用循环遍历这个列表,对每个文件调用类似的方法来生成HTTP响应,设置适当的响应头,然后将文件内容写入响应流。为了...
在这个系统中,Hibernate负责处理数据库交互,而Struts2则负责控制业务逻辑和视图展示。下面将详细介绍这两个框架在学生管理系统中的应用及相关的技术知识点。 一、Hibernate框架 Hibernate是Java领域中最流行的ORM...