• 大数据接私活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";
           }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69

    前端部分页面:

    <%@ 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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    效果演示

    HDFS简易Web浏览器

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

    总结

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

    如果想要接Java和大数据方面私活的,有赚零花钱想法的,可以点下方的小卡片与我联系或者在CSDN私信我。

    我和我的团队能够提供什么?
    1.优质的接单群,一单最低50。
    2.持续终身的售后服务,有任何接单不懂的地方可以问我,提供1v1售后,接单有保障。
    3.针对不怎么懂技术的小白,提供价值大几千的代码生成器,即使是小白也能轻松接私活。
    请添加图片描述

  • 相关阅读:
    操作系统-进程与线程、网络I/O模型
    JAVA毕业设计-酒店管理系统-计算机源码+lw文档+系统+调试部署+数据库
    后端技术栈:Docker容器应用
    微分中值定理—罗尔中值定理
    SPA项目开发之首页导航+左侧菜单
    【无标题】
    Meta收购德国触觉技术公司Lofelt,同时FTC严格要求Meta收购事宜
    Python 04 之变量【列表,元组,集合,字典,字符串】
    关于jQuery_浏览器事件的方法和使用
    【Spring Cloud】新闻头条微服务项目:文章内容安全审核(需求分析及前期准备)
  • 原文地址:https://blog.csdn.net/xianyu120/article/details/125508845