Java EE实现模拟一个资源管理器
来源:互联网 发布:淘宝美工装修 编辑:程序博客网 时间:2024/06/04 19:24
进项目组,经理给培训。
任务描述:使用Java和JSP作出一个模拟资源管理器的东西,点击指定文件,文件则下载,文件夹则进入下一级目录。
遇到问题:1、使用哪种方式实现点击进入首个文件夹。
思路1:吧文件目录结构做成一颗树,读到内存中,然后在页面逐级显示。但是貌似工程量有点大,所以果断放弃。
思路2:直接使用JavaAPI中File类,在浏览器端显示每个文件名(使用Java内嵌代码或者EL表达式JSTL标签均可,建议EL表达式或者JSTL,因为使用Java内嵌代码报错很难找虽然),读取每个child(比使用数简单好多),然后我选择在JSP页面中添加一个超链接,url后面有一个参数,然后前后台交互。后台依靠url参数path,确认前台点击的是哪个文件,同时也给出了路径(也可以使用post,但是这就要多加一步)。后台向前台传送一个File[] 向前台传送指定目录下所有的file/dir。当前台点击的时候,如果是文件夹isDirectory(),则使用path传到后台,Servlet返回它的childFiles;如果是文件,那么就调用downloadservlet(或许把它写成一个共能方法比做成servlet更好用一点)。
2、在下载已中文名命名的文件的时候总是检测不到文件名。
这个解决方法是从网上找的,说白了就是前后台参数传递的编码问题,挺蛋疼的。我设置参数传递的时候,习惯性忽略掉了通过服务器从前台网后台传参数Tomcat默认为ISO-8859-1。然后就导致读不到中文参数,后来修改代码如下:
在后台处理跳转页面的时候。我吧path重新转成byte格式,制定了编码为"ISO-8859-1",然后又把它指定为一个new String ,指定String编码UTF-8(我的Eclipse默认编码为UTF-8)。
path = new String(path.getBytes("ISO-8859-1"), "utf-8");
然后就是我需要下载文件的文件名,我也是类似上面做了编码方式转换:
// 设置Content-Disposition
response.setHeader("Content-Disposition", "attachment;filename="
+new String(fileName.getBytes("utf-8"),"ISO-8859-1"));
- Java EE实现模拟一个资源管理器
- 一个用Java实现的Windows资源管理器
- 一个用Java实现的Windows资源管理器 - JExplorer.java
- 一个用Java实现的Windows资源管理器 - FileTree.java
- 一个用Java实现的Windows资源管理器 - FileList.java
- 用java实现的资源管理器
- Node 实现一个MVC相册资源管理器
- 一个Java EE培训大纲
- Java资源管理器
- 一个简单的Java EE&Docker示例
- Java EE后台模拟浏览器有状态请求页面
- Java EE中Ajax技术简单实现
- 一个不错的资源管理器
- ASP.NET 模拟Windows资源管理器
- 大型文件资源管理器 模拟电脑
- java swing JTree 实现资源管理器 UIManager.setLookAndFeel 更改外观
- Java 实现"我的电脑"资源管理器(JTree,JTable)
- pb用纯函数实现在数据窗口中模拟资源管理器鼠标单击动
- API Caller,计算机网络和算法
- Python multiprocessing.Pool: when to use apply, apply_async or map?
- C语言学习进程:fseek与ftell函数
- Android Studio 生成的APK位置
- JQuery.Ajax之错误调试帮助信息
- Java EE实现模拟一个资源管理器
- MySQL日志维护策略总结
- android开发环境搭建
- uva11992 Fast Matrix Operations (线段树)
- String.valueOf
- 用命令执行robot framework 中的测试用例
- 《Thinking In Java(3rd)》--一切皆对象
- (ros/navigation)how to build a map using logged data 怎样用记录的数据创建地图
- Pivotal Gemfire gfsh shell的使用(2)