系统开发总结第一篇--javaweb导出csv,并且解决用excel打开乱码问题

离开得太久了今天小毛驴又要重新回归博客了!前段时间一直在团队里打杂,接下来对于系统开发中遇到的些许问题做一些总结。

1、首先javaweb如何从数据库获取数据并从客户端导出csv文件

1)在jsp页面上添加这两个函数,只要设置个button按钮然后click事件即可,用其他颜色标注的是需要的代码,其他的是项目中一些需要的参数可忽略,思路如下:

  1. download(){ }函数里data{}可以将前端的参数传递到后台(感兴趣的同学可以查一下ajax的用法),这里因为侧重于javaweb的客户端导出csv,所以就不进行传参了,以免使得代码复杂。
  2. ajax链接到后台  url: "servlet/DownloadTexData",
  3. 看下DownloadTexData.java里的代码,请理解data.put("context", context);的用法
  4. 如果后台代码执行完毕,接下来执行ajax的success: function (data) {  }
  5. 然后是function file(filename, data) { }函数
  6. 这里请注意加上 var BOM = "\uFEFF";(之前用excel打开导出的csv文件,发现中文乱码,在查阅了资料后提示要在文件头部加上这段代码)
  7. 之前导出csv文件,会发现当字符串过大的时候,会导致下载失败,这个情况在function file(filename, data) { }里已经解决了(但我已经忘记了具体改动了什么了)

好了,今天已经做了一个小总结了,该去做其他事了,接下来希望可以定时更新博客,本毛驴太懒了。。。

jsp的代码

<

function file(filename, data) {
            if(window.Blob && window.URL && window.URL.createObjectURL){
                 var BOM = "\uFEFF";
                 var csvData = new Blob([BOM+data], { type: 'text/csv;charset=utf-8,\ufeff'});   //new way
                 var csvUrl = URL.createObjectURL(csvData);
                 var a = document.createElement('a'); 
                 a.href = csvUrl;
                 a.target  = '_blank'; 
                 a.download = filename; 
                 document.body.appendChild(a); 
                 a.click(); 
                
            }else {
                return 'data:text/csv;charset=utf-8,\ufeff' + encodeURIComponent(data);
               }
}
        
function download(){
      var filename='词频分析-'+ID+'.csv';
      $.ajax({
        url: "servlet/DownloadTexData",
        type: "POST",
        data: {
       
        },
        dataType : 'json',
        success: function (data) {
            file(filename,data.context);
            return false;
        },
        error: function (err) {
            alert("词频分析文件下载失败");
        }
    });

  </script> 

DownloadTexData.java的代码

1、利用前端传来的ID名称从数据库读取数据(这里代码省略,主要侧重于如何从客户端导出csv文件)

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("  <BODY>");
        out.print("    This is ");
        out.print(this.getClass());
        out.println(", using the GET method");
        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }
 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

       request.setCharacterEncoding("utf-8");  
        response.setContentType("text/html;charset=utf-8");

       PrintWriter out = response.getWriter();

       String context="";

        context="文本描述"+","+"词频1"+","+"词频2"+","+"词频3"+","+"词频4"+","+"词频5"+","+"词频6"
                +","+"词频7"+","+"词频8"+","+"词频9"+","+"词频10"+","+"词频11"+","+"词频12"+","+"词频13"+","+"词频14"+","+"词频    15"+"\r\n";

      Gson gson=new Gson();
     JSONObject data=new JSONObject();

     data.put("context", context);
      //System.out.println("context"+context);
      String info=gson.toJson(data);
      //System.out.println(data);
      out.write(data.toString());

}

   

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值