Java EE实现模拟一个资源管理器

进项目组,经理给培训。

            任务描述:使用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"));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值