哦,不用什么JAVA技术,你把他作成个打包文件,到时连接再他上面时,他就自动下载了。你试试。

解决方案 »

  1.   

    可以用:
    reponse.sendRedirect(pathname+filename);
    pathname+filename 需要下载的文件全路经。实施
      

  2.   

    多谢各位的关心,我自己已经将其解决,用的是url,和InputStream!
      

  3.   

    呵呵,如果你需要界面的话,可以使用editpane控件,如果只需要内容的话就无所谓了
      

  4.   

    1.java
    package dsgl.file; import java.sql.*;
    import java.util.*;
    import dsgl.basic.*;
    import dsgl.database.*;
    import dsgl.include.*; /**
     *  数据导出模块.
     * <p>CreateTime:2003-7-6
     * @author Avenger
     * @version 1.0
     */ public class ExportFile extends dsgl.database.LinkSQL {   private String strNr=new String();
      ResultSet rs=null;
      OutString os=new OutString();   /**
       * 构造函数
       * @throws SQLException
       */
      public ExportFile() throws SQLException {  }
      /**
       * 表内容导出
       * @param sql sql语句
       * @return 执行成功返回表内容,否则返回空
       */
      public String ExportNr(String sql) {
        try {
    openConnect();
    rs=executeQuery(sql);
    //ResultSetMetaData rsmd = rs.getMetaData();
        //int intCols = rsmd.getColumnCount();
    String strTemp="";

    while (rs.next())
    {
    //for (int i=1;i<=intCols;i++)
    //{
    //switch (rsmd.getColumnType(i))
    //{
    //case Types.DATE:
    // strTemp=rs.getDate(i).toString();
    // break;
    //default:
    strTemp=rs.getString(1);
    //} //end switch
    strNr+=strTemp;
    //if (i==intCols)
    //{
    strNr+="\r\n";
    //}else{
    //strNr+=",";
    //} //end if 
    //}//end for

    } //end while

    rs.close();      
          
        } catch (Exception e) {
          System.out.println(sql);  
      
        } finally {
          return strNr;
        }
      }   }
    2.index.jsp
    <%@ page import="java.sql.*"%>
    <%@page contentType="text/html; charset=gb2312"%>
    <jsp:useBean id="conn" scope="page" class="dsgl.database.LinkSQL"/>
    <jsp:useBean id="jsp" scope="page" class="dsgl.include.OutString"></jsp:useBean>
    <html> <head>
    <meta http-equiv="Content-Language" content="zh-cn">
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <LINK href="/include/css.css" REL="stylesheet" type="text/css">
    <script language="Javascript" src="/include/mydate.js"></script>
    <title>预算收入日报表查询</title> </head>
    <%
    ResultSet rsA=null;
    String strSql="";
    String yhbm=(String)session.getAttribute("yhbm");
    String ksbm=(String)session.getAttribute("ksbm");
    %>
    <body>
    <H3 ALIGN="CENTER">预算收入日报表查询</H3>
    <form method="POST" action="cx_resule.jsp">
    <table border="0" width="500" cellspacing="0" cellpadding="0" ALIGN="CENTER">
      <tr>
        <td width="100" align="right">收款国库:</td>
        <td>
        <select size="1" name="skgk">
        <%
        String strDw="";
        strSql="select * from dm_jg order by jg_dm";
        rsA=conn.executeQuery(strSql);
        while (rsA.next()) {
    strDw+="<option value='"+rsA.getString("jg_dm")+"'>"+jsp.convert(rsA.getString("jg_mc"))+"</option>";
    out.println("<option value='"+rsA.getString("jg_dm")+"'>"+jsp.convert(rsA.getString("jg_mc"))+"</option>");
        }
        rsA.close();
        %>
        </select>
        </td>
      </tr>
      <tr>
        <td width="100" align="right">目的国库:</td>
        <td>
        <select size="1" name="mdgk">
        <option selected value="all">全部</option>
        <%
        out.println(strDw);    
        %>
        </select>
        </td>
      </tr>
      <tr>
        <td width="100" align="right">所属国库:</td>
        <td>
        <select size="1" name="ssgk">
        <option selected value="all">全部</option>
        <%
        out.println(strDw);    
        %>
        </select>
        </td>
      </tr>
      <tr>
        <td width="100" align="right">预算级次:</td>
        <td>
        <select size="1" name="ysjc">
        <option selected value="all">全部</option>
        <option value='0'>0</option>
        <option value='1'>中央</option>
        <option value='2'>省</option>
        <option value='3'>市</option>
        <option value='4'>县</option>
        <option value='5'>乡</option>
        </select>
        </td>
      </tr>
      <tr>
        <td width="100" align="right">预算科目:</td>
        <td>
        <select size="1" name="yskm">
        <option selected value="all">全部</option>
        <%
        strSql="select * from dm_yskm order by yskm_dm";
        rsA=conn.executeQuery(strSql);
        while (rsA.next()) {
    out.println("<option value='"+rsA.getString("yskm_dm")+"'>"+jsp.convert(rsA.getString("yskm_mc"))+"</option>");
        }
        rsA.close();
        %>
        </select>
        </td>
      </tr>
      <tr>
        <td width="100" align="right">预算种类:</td>
        <td><select size="1" name="yszl">
      <option selected value="all">全部</option>
      <option value="1">预算内</option>
      <option value="2">预算外</option>
      </select></td>
      </tr>
    <tr>
        <td width="100" align="right">报表范围:</td>
        <td><select size="1" name="bbfw">  
      <option value="0">本级</option>
      <option value="1">全辖</option>
      </select></td>
      </tr>
      <tr>
        <td width="100" align="right">帐务日期:</td>
        <td><input type="text" name="zwrq_s" size="10"><input type="button" value="↓" onclick="dateShow(zwrq_s);"> 至 <input type="text" name="zwrq_e" size="10"><input type="button" value="↓" onclick="dateShow(zwrq_e);"></td>
      </tr>
      <tr>
        <td colspan="2">
          <p align="center">&nbsp;</p>
        </td>
      </tr>
      <tr>
        <td colspan="2">
          <p align="center"><input type="submit" value="提交" name="B1">&nbsp;&nbsp; 
          <input type="reset" value="全部重写" name="B2"><input type="button" value="返 回" onclick="history.back();"></p>
        </td>
      </tr>
    </table>
    <%
    conn.close();
    %>
    </form> </body>
    </html>
      

  5.   

    3.result.jsp
    <%@page contentType="text/html; charset=gb2312"%>
    <%@page language="java" import="java.sql.*" %>
    <jsp:useBean id="jsp" scope="page" class="dsgl.include.OutString"></jsp:useBean>
    <jsp:useBean id="conn" scope="page" class="dsgl.database.LinkSQL"/>
    <html>
    <head>
    <title>Untitled Document</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <LINK href="/include/css.css" REL="stylesheet" type="text/css">
    <script language="Javascript" src="/include/mydate.js"></script>
    </head>
    <%  int i=0;
        ResultSet rsA;
    String strSql="";
        String strSqlTemp=""; 
        String strSqlCd="";   //传递用     String strskgk  =request.getParameter("skgk");      //收款国库 
        String strmdgk  =request.getParameter("mdgk");      //目的国库
        String strssgk  =request.getParameter("ssgk");      //所属国库
        String strysjc  =request.getParameter("ysjc");      //预算级次
        String stryskm  =request.getParameter("yskm");      //预算科目
        String stryszl  =request.getParameter("yszl");      //预算种类 1预算内,2预算外
        String strbbfw  =request.getParameter("bbfw");      //报表范围 0本级 1全辖
        String strzwrq_s=request.getParameter("zwrq_s");    //帐务日期 S
        String strzwrq_e=request.getParameter("zwrq_e");    //帐务日期 E    
        
    java.util.Date date=new java.util.Date(); 
    java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd"); 
    strSql="select a.*,b.gkf_mc as skgk,c.gkf_mc as mdgk,d.gkf_mc as ssgk,e.yskm_mc from sk_bb_1 a,dm_gkbm b,dm_gkbm c,dm_gkbm d,dm_yskm e where a.skgkdm=b.gkf_dm(+) and a.mdgkdm=c.gkf_dm(+) and a.ssgkdm=d.gkf_dm(+) and a.kmdm=e.yskm_dm(+)";     strSqlTemp+=" and a.skgkdm='"+strskgk+"'";
        strSqlTemp+=""; //预留附属条件
        //out.println(strSql);
        if (strmdgk!=null && !strmdgk.equalsIgnoreCase("all")) strSqlTemp+=" and a.mdgkdm='"+strmdgk+"'";
        if (strssgk!=null && !strssgk.equalsIgnoreCase("all")) strSqlTemp+=" and a.ssgkdm='"+strssgk+"'";
        if (strysjc!=null && !strysjc.equalsIgnoreCase("all")) strSqlTemp+=" and a.ysjc='"+strysjc+"'";  
        if (stryskm!=null && !stryskm.equalsIgnoreCase("all")) strSqlTemp+=" and a.kmdm='"+stryskm+"'";  
        if (stryszl!=null && !stryszl.equalsIgnoreCase("all")) strSqlTemp+=" and a.yszl="+stryszl+"";
        if (strbbfw!=null && !strbbfw.equalsIgnoreCase("all")) strSqlTemp+=" and a.bbfw="+strbbfw+"";
        if (strzwrq_s!=null && strzwrq_s.length()>0 && strzwrq_e!=null && strzwrq_e.length()>0) strSqlTemp+=" and a.zwrq between to_date('"+strzwrq_s+"','yyyy-mm-dd') and to_date('"+strzwrq_e+"','yyyy-mm-dd')";
        strSql+=strSqlTemp;
        strSqlCd="select a.skgkdm||','||a.mdgkdm||','||a.ssgkdm||','||a.ysjc||','||a.jgdm||','||a.kmdm||','||to_char(a.zwrq,'YYYY-MM-DD')||','||a.yszl||','||a.rlj||','||a.ylj||','||a.nlj from sk_bb_1 a where 1=1" + strSqlTemp;
        //out.println(strSql);
        //out.println(strSqlCd);
    rsA=conn.executeQuery(strSql);
    %>
    <body bgcolor="#FFFFFF" text="#000000">
      <H3 ALIGN="CENTER">预算收入日报表查询结果</H3>
      <table border="1" width="98%" bordercolorlight="#000000" bordercolordark="#000000"  cellspacing="0" cellpadding="0" align="center">
        <tr class="tr" align="center">
          <td>收款国库</td>
          <td>目的国库</td>
          <td>所属国库</td>
          <td>预算级次</td>
          <td>预算科目</td>
          <td>预算种类</td>
          <td>帐务日期</td>
          <td>日累计</td>
          <td>月累计</td>
          <td>年累计</td>
        </tr>
    <% while (rsA.next()) { i=i+1; %>
        <tr>
         
          <td nowrap><%=jsp.convert(rsA.getString("skgk"))%></td>
          <td nowrap><%=jsp.convert(rsA.getString("mdgk"))%></td>
          <td nowrap><%=jsp.convert(rsA.getString("ssgk"))%></td>
          <td nowrap ALIGN="CENTER"><%=rsA.getString("ysjc")%></td>
          <td nowrap><%=rsA.getString("kmdm")+" "+jsp.convert(rsA.getString("yskm_mc"))%></td>
          <td nowrap ALIGN="CENTER"><%=(rsA.getInt("yszl")==1?"预算内":"预算外")%></td>
          <td nowrap ALIGN="CENTER"><%=rsA.getDate("zwrq")%></td>
          <td nowrap ALIGN="RIGHT"><%=rsA.getString("rlj")%></td>
          <td nowrap ALIGN="RIGHT"><%=rsA.getString("ylj")%></td>
          <td nowrap ALIGN="RIGHT"><%=rsA.getString("nlj")%></td>
        </tr>
        <%}%>
      </table>
      <%
      rsA.close();
      conn.close();
      %>
    <FORM METHOD=POST ACTION="export.jsp"  target="frameExp">
    <input type="hidden" value="<%=strbbfw%>" name="fw">
    <input type="hidden" value="<%=strskgk%>" name="dw">
    <input type="hidden" value="<%=strSqlCd%>" name="sql">
    <p align="center"><input type="submit" value="下 载" ><input type="button" value="返 回" onclick="history.back();"></p>
    </FORM>
    <iframe name="frameExp" width=200 height=200 style="display:none" border=0 frameborder=0 framespacing=0 marginheight=0 marginwidth=0></iframe>
    </body>
    </html>
    4.export.jsp
    <%@ page import="java.sql.*"%>
    <%@ page import=" java.io.*"%>
    <jsp:useBean id="Exp" scope="page" class="dsgl.file.ExportFile"/>
    <%
    String strSql=request.getParameter("sql");
    String res=Exp.ExportNr(strSql);
    String strskgk=request.getParameter("dw");
    String strbbfw=request.getParameter("fw");
    String headpath=request.getRealPath("/");
    java.util.Date date=new java.util.Date(); 
    java.text.SimpleDateFormat rq = new java.text.SimpleDateFormat("yyyyMMdd");  String filename = "s"+strskgk; // 收款国库
    //报表定义
    //0、总额分成报表
    //1、预算收入报表
    //2、支出报表
    //3、调拨收入报表
    //4、共享分成报表
    //6、收入退库报表
    //7、预算收入对帐报表
    //8、收入税票
    //y、月调整期报表
    //c、财政库存报表
    //f、分户对帐单
    //t、退库凭证
    //z、支出凭证
    filename+="_1";                // 报表名称 
    filename+=strbbfw;                  // 报表范围
    filename+=rq.format(date);     // 日期
    filename+=".txt";
    File file=new File(headpath+"/tempfile/"+filename);
    file.delete();
    if (res!=null) {
        FileWriter fw=new FileWriter(headpath+"/tempfile/"+filename,true);
    String writeStr="";
        writeStr=res;    
        fw.write(writeStr,0,writeStr.length());
    fw.flush();
    response.reset(); fw.close();     response.setContentType("application/octet-stream");
        response.setHeader("Content-disposition", "attachment; filename=" + filename);
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try
        {
    FileInputStream fis = new FileInputStream(headpath+"/tempfile/"+filename);
    bis = new BufferedInputStream(fis);
    bos = new BufferedOutputStream(response.getOutputStream());
    byte abyte0[] = new byte[2048];
    int i;
    while((i = bis.read(abyte0, 0, abyte0.length)) >0) 
        bos.write(abyte0, 0, i);
        }
        catch(IOException ioexception)
        {
    ioexception.getMessage();
    throw ioexception;
        }
        finally
        {
    if(bis != null)
        bis.close();
    if(bos != null)
        bos.close();
    file.delete();
        }    
    }else{
        out.println("<SCRIPT LANGUAGE=\"JavaScript\">");
        out.println("alert('Error');");
        out.println("</SCRIPT>");
    }
    %>