专栏首页最新最全的大数据技术体系大数据接私活200元,做个简易的HDFS浏览器(一)

大数据接私活200元,做个简易的HDFS浏览器(一)

大数据接私活200元,做个简易的HDFS浏览器(一)

需求

接到一个单子说是用制作一个简单的HDFS浏览器。

功能包括:基于HDFS的文件浏览、上传和下载。

需求分析

​ 用到的技术包括Java、HDFSAPI、tomcat的配置等

代码实现

项目架构:

Controller层代码:

@Controller
@RequestMapping("/hdfs")
public class hdfsController {
   
   
   
   private hdfsService hdfsService;   
   public hdfsService getHdfsService() {
      return hdfsService;
   }
    @Resource
   public void setHdfsService(hdfsService hdfsService) {
      this.hdfsService = hdfsService;
   }

   @RequestMapping("/delete")  
    public String toDelete(@RequestParam(value="path",required=false) String path)
       throws IOException{  
        hdfsService.delete(path);            
          return "success";       
}


    @RequestMapping(value="/ls",method=RequestMethod.GET)
       public ModelAndView home(@RequestParam(value="path",required=false) String path, HttpServletRequest request, HttpServletResponse response) 
          throws Exception {
          ModelAndView model = new ModelAndView();
           if (StringUtils.isEmpty(path)) {
               path = "/";
           } 
         List<hdfsBean> hdfsFiles =hdfsService.ls(path);
           model.addObject("file", hdfsFiles);
           model.setViewName("/ls");
           return model;
       }
    
    
    @RequestMapping("/download")  
       public String toDownload(@RequestParam(value="path",required=false) String path)
          throws IOException{  
          hdfsService.download(path);           
             return "success";       
   }
    
    
    @RequestMapping(value="/upload")
    public String upLoad(HttpServletRequest request, HttpServletResponse response) 
               throws IllegalStateException, IOException{
           //解析器解析request的上下文
           CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext()); 
           //先判断request中是否包涵multipart类型的数据,
           if(multipartResolver.isMultipart(request)) {
               //再将request中的数据转化成multipart类型的数据
               MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
               Iterator<String> iter = multiRequest.getFileNames();
               while(iter.hasNext()) {
                   MultipartFile file = multiRequest.getFile(iter.next());
                   if(file != null) {
                      String FileName = file.getOriginalFilename();
                      System.out.println(FileName);
                       CommonsMultipartFile cf= (CommonsMultipartFile)file; 
                       DiskFileItem fi = (DiskFileItem)cf.getFileItem(); 
                       File inputFile = fi.getStoreLocation();
                       hdfsService.createFile(inputFile, "hdfs://192.168.88.100:8020/upload/"+FileName);
                   }
               }
           }
           return "success";
       }

前端部分页面:

<%@ page language="java" contentType="text/html; charset=UTF-8"
   pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page isELIgnored="false" %> 
<%String ref = request.getHeader("REFERER");%>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>HDFS文件管理器</title>
</head>
<body>
<table>
   <tr>
      <td>文件名</td>
      <td>文件大小  </td>
      <td>拥有者 </td>
      <td>权限  </td>
      <td>时间  </td>
      <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;操作</td>
   </tr>
     <c:forEach var="file" items="${file}">
     <tr>
          <td><a href="${pageContext.request.contextPath}/hdfs/ls.do?path=${file.fileName}" style="color:#666666;text-decoration:none;">
               ${file.fileName}</a></td>
          <td> ${file.fileSize}</td>    
          <td> ${file.owner}</td>   
          <td> ${file.permission}</td>  
          <td> ${file.modificationTime}</td>    
          
          <td><a href="${pageContext.request.contextPath}/hdfs/delete.do?path=${file.fileName}" style="color:#666666;text-decoration:none;"
           class="button border-dot button-little" onclick="return confirm('确认删除?')" >
                            删除  </a>
          &nbsp;&nbsp;
          <a href="${pageContext.request.contextPath}/hdfs/download.do?path=${file.fileName}" style="color:#666666;text-decoration:none;">
          下载</a></td>
    </tr>
   </c:forEach>
 <input type="button" value="返回"   onclick="javascript:window.location='<%=ref%>'" >
</table>
</body>
</html>

效果演示

HDFS简易Web浏览器

HDFS简易Web浏览器_哔哩哔哩_bilibili

总结

比较轻松的需求,主要是之前做过类似的小项目直接拿来用即可。

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://blog.csdn.net/xianyu120复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 说说程序猿接私活的那些事儿

    现在的程序员大部分肯定不是全能。但移动互联网的火爆,肯给你私活的人,不可能只单单让你做android开发或者ios开发,基本上都是全做,甚至还需要web开发。

    养码场
  • Android程序员接私活完整攻略「建议收藏」

    接私活对程序员这个圈子来说是一个既公开又隐私的话题,不说全部,应该大多数程序员都有过想要接私活的想法,当然,也有部分得道成仙的不主张接私活。但是很少有人在公开场...

    全栈程序员站长
  • 我没学过计算机,是怎么接了四个私活还挣了两个 iPad 的?

    大家看到这篇文章的时候,我和一枝花、Guide哥、Guide哥的妹纸一起恰饭去啦!

    悟空聊架构
  • Netty+MUI从零打造一个仿微信的高性能聊天项目,兼容iPhone/iPad/安卓

    要说到微信,我相信是个人都应该知道,几乎人人都会安装这款社交APP吧,它已经成为了我们生活中不可缺少的一份子。

    风间影月
  • 程序员接私活:一定要注意的几项,你遵守了几条?

    当还没有多少经验的时候,尝试去接项目做,并非坏事,因为在开发过程中,你的成长绝对会比看基本理论书来的快。

    三哥
  • 转行程序员能干嘛?

    2. 可以做一个自由职业开发者,做个网站,开发个app,能不能捞金就看个人了,反正B是装完了。

    王炸
  • 我用免费白拿的服务器搭建了一台基于CentOS7的Hadoop3.x伪分布式环境

    由于我接的私活经常需要使用到Hadoop集群,本地启动有启动速度慢、操作麻烦和占用内存等诟病,

    ChinaManor
  • 我用免费白拿的服务器搭建了一台基于CentOS7的Hadoop3.x伪分布式环境

    由于我接的私活经常需要使用到Hadoop集群,本地启动有启动速度慢、操作麻烦和占用内存等诟病,

    ChinaManor
  • 卧槽!又一个 Python 爬虫神器!

    最近公众号后台收到超多朋友的留言,几乎全是关于爬虫技术的问题咨询。包括数据逆向、请求参数逆向、多重加密解析、逆向登录、AES 算法、RSA 算法、Js 混淆、二...

    崔庆才
  • 看女程序员是如何处理男友出轨,网友回复更精彩

    你知不知道,普通女生梦见男朋友出轨会血液循环加速,造成内分泌失调,内分泌失调就心情就不好,心情不好就压抑,一压抑就打人……最后的结果都是男朋友被暴打一顿。

    良月柒
  • 这才叫高颜值的Markdown编辑神器!

    Markdown 是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。

    好好学java
  • 找到一个 Python 爬数据神器

    在这个万物互联的大数据时代,互联网几乎将世界上所有的人和事物都紧密连接了起来,我们在这个网络世界中的生活与行为,无时无刻不在产生着大量的行为数据。 这些数据对区...

    崔庆才
  • Java私活500元,做个JavaWeb仓储管理网站(二)

    500元做个JavaWeb仓储管理系统作为课设项目,明天中午就得交,时间紧任务重。

    ChinaManor
  • 记一次 Python 私活接单的详细过程

    说个冷知识,当下业界对爬虫技术服务的需求量正在暴增,现在早已供不应求,且有愈演愈烈的趋势。极不平衡的供需关系,使爬虫服务的价格一涨再涨,现已变得极高。于是,几乎...

    崔庆才
  • 工程师文化:正版软件应该公司买吗

    腾讯采购了 JetBrains License server 部署在内网,每几小时自动激活 IDE,离开公司网络无法使用。这种情况下,正版软件属于公司,不用担心...

    腾讯云荐官

扫码关注腾讯云开发者

领取腾讯云代金券