您的位置:首页 > 其它

j2ee的web项目文件导出原理,为了分析原理,以导出txt文件文件为例,分两种情况:1导出txt文件到服务器本地上2导出txt文件到个浏览器端(即导出给浏览器用户)

2017-12-04 18:50 731 查看
j2ee的web项目文件导出原理,为了分析原理,以导出txt文件文件为例,分两种情况:1导出txt文件到服务器本地上2导出txt文件到个浏览器端(即导出给浏览器用户)

1导出txt文件到服务器本地

导出txt文件,其实就是往txt文件中写入东西,即写txt,即写txt,即写txt。



原理:

核心是BufferedWriter。

分三步:

1将要写入txt的内容,写入缓冲区(内存中)

2把缓冲区的内容压入txt文件(这就存在内存和外部设备IO了,即内存和硬盘之间的IO了,即将内存中的数据写入到磁盘上)

3关闭文件(一定不要忘记关闭文件)

思考一下,为什么不直接将内容写入文件,而是先写入内存的缓存中,然后再统一写入文件呢?Remark,待思考。

2导出txt文件到个浏览器端(即导出给浏览器用户)

这个就分为两种。

j2ee的web项目,导出excel文件,两种情况下的实现:1前后端不分离 2前后端分离

2.1前后端分离的(前端使用html技术的)

原理:

就是将服务器上的文件,即工程路径下某个文件,输出到浏览器端。

代码实现:

核心是两步:

①读文件,②写给浏览器。



1)情况1:

其实就是最常用的文件下载功能,就是,就是,文件下载,文件下载,文件下载

jf框架的附件下载的代码:





代码怎么写,记忆:

一个input,一个output。

---实例,用IE浏览器的f12查看下载附件功能,http url请求和响应,分别是什么?









2)情况2

但是大多数情况下,不仅仅是文件下载,即固定内容的下载,我还希望实现不固定内容(如我根据需求,查询数据库,然后将查询结果导出到excel中)的下载。

这种情况下就要使用即模板,如vm、xls等格式的模板

步骤如下:

1读取模板,如vm(其实就是xml格式的文件)。

2根据输入的参数(如Map、List类型的参数,及将要输出的数据,放入Map或者List)将模板的vm文件进行解析和改造(即vm模板中类似于EL表达式的东西进行解析)。但是不是直接在vm文件中改造,而是读取到内存变量中,进行改造。

3将改造后的vm文件的内容(就将要输出的vm的内容放入内存的变量中),写入http url请求的response中,返回给浏览器(当然写入response的内容是浏览器能够解析和展示的格式,如①直接展示或者下载的html代码  ②也可以是json格式的数据然后通过前段js技术如jQuery技术进行解析再展现到html页面中)。

3)情况3:

我可以不预先定义模板,而是直接将不固定的内容(即将数据库中查询出来的数据),直接写入http url的response中。

如在没有预先定义模板的情况下,我想将数据库中查询出来的数据,直接写入到http url的response中,供浏览器端下载。也可以通过代码在服务器的某个位置创建一个txt,然后将数据库中查询出来的数据写入到该txt,然后再读取该txt,写入到http url的response中,等写完之后,删除该txt文件即可。

2.2前后端不分离的(如前端使用jsp技术的)

略。

懂了前后端分离的,前后端分离的道理是一样的,只是前后端不分离的(如jsp),很多由框架来做了而已。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐