离开得太久了今天小毛驴又要重新回归博客了!前段时间一直在团队里打杂,接下来对于系统开发中遇到的些许问题做一些总结。
1、首先javaweb如何从数据库获取数据并从客户端导出csv文件
1)在jsp页面上添加这两个函数,只要设置个button按钮然后click事件即可,用其他颜色标注的是需要的代码,其他的是项目中一些需要的参数可忽略,思路如下:
- download(){ }函数里data{}可以将前端的参数传递到后台(感兴趣的同学可以查一下ajax的用法),这里因为侧重于javaweb的客户端导出csv,所以就不进行传参了,以免使得代码复杂。
- ajax链接到后台 url: "servlet/DownloadTexData",
- 看下DownloadTexData.java里的代码,请理解data.put("context", context);的用法
- 如果后台代码执行完毕,接下来执行ajax的success: function (data) { }
- 然后是function file(filename, data) { }函数
- 这里请注意加上 var BOM = "\uFEFF";(之前用excel打开导出的csv文件,发现中文乱码,在查阅了资料后提示要在文件头部加上这段代码)
- 之前导出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());
}