JavaWeb-文件上传下载-可基于文件内容查询文件(MySQL+Servlet+Hadoop)

代码:

CSDN:https://download.csdn.net/download/qq_38038143/10849113
GitHub:https://github.com/GYT0313/FileUploadDownload

运行示例:

在这里插入图片描述

1. 介绍

目前为止,共写了三个版本的文件上传、下载。
其他版本:

该版本的简要介绍:

  • 后台使用MySQL数据库记录文件名、文件地址
  • 使用Hadoop技术实现“倒排索引”,实现基于文件内容查找文件

2. 项目结构

在这里插入图片描述
如上图:
Java代码共包含8个类:

  1. ClearAll.java,运行该类可以一次清空本地磁盘文件、HDFS文件、数据库记录
  2. DAO.java,调用实际执行SQL语句的类
  3. InvertedIndex.java,倒排索引文件,使用MapRedcuce框架实现
  4. JDBC.java,实际执行SQL语句的类
  5. JDBCExecute.java,SQL的简单封装
  6. LsitFileServelt.java,查询本地文件的Servlet
    主要实现三种查询:
  • listFile(Map<String, String> fileNameMap),查询本地磁盘的所有文件(文件名匹配)
  • listFile(Map<String, String> fileNameMap, String searchKeyWord),根据关键词查询文件(文件名匹配)
  • listByContent(Map<String, String> fileNameMap, String kw, String uploadFilePath),根据关键字查询文件内容,以此返回匹配的文件名
    注:因为第二、三种查询都是基于关键字,所有实际执行中只有两种情况:有关键字、无关键字。
  1. SmartDownloadServlet.java,处理下载文件请求
  2. SmartUploadServlet.java,处理上传文件请求

WebContent结构:
在这里插入图片描述
static目录,包含前端的所有静态文件。
404.jsp,错误请求处理页面。
home-smart.jsp,主页,实现文件展示、上传、查询。
imgUpload.jsp,拖拽图片上传的处理页面。

以及众多的jar包。

注:

如果你在将此项目移植到你的电脑上时,注意修改一些路径。
如:InvertedIndex.java
下图中红框的两个路径时Eclipse的工作,并且是FileSmartHadoop项目的路径,存放的是经过MapReduce处理后的倒排索引文件,你只需要将D:\soft2\javaweb\work_space 改为你的工作目录即可。如果有问题,可以联系我。
在这里插入图片描述

3. 执行环境

执行环环境为:

  • Windows10
  • Eclipse
  • Hadoop2.7.3
  • Tomcat-9.0

4. 简述执行流程

创建数据库:
CREATE DATABASE IF NOT EXISTS smart_uploadDB DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
	
USE smart_uploadDB;
	
CREATE TABLE `smart_upload` (
	`id`  int NOT NULL AUTO_INCREMENT ,
	`filename`  varchar(255) NULL COMMENT 'name' ,
	`filepath`  tinytext NULL COMMENT 'path' ,
	PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARACTER SET=utf8;
  1. 将项目导入Eclipse,加入Tomcat,启动服务
    浏览器访问:http://localhost:8080/FileSmartHadoop/home-smart.jsp ,第一次访问如下图:
    在这里插入图片描述

  2. 上传文件
    上传后,再次访问,如下图:
    在这里插入图片描述

  3. 输入关键字查询
    因为没有上传倒排索引文件,索引只能根据文件名查询:
    Search File栏查询: Linux
    在这里插入图片描述

  4. 生成倒排索引文件:

注:本来想根据两次上传文件的间隔时间来自动判断是否需要生成倒排索引文件,即调用InvertedIndex.java类。但是,实际上设置调用语句后,一上传文件就报错:java.lang.ClassNotFoundException: org.apache.hadoop.conf.Configuration。但是单独执行InvertedIndex.java文件没有任何问题。捣鼓了很久没有成功,目前只能手动执行了。

确保正确安装配置Hadop,并开启服务:start-all.cmd
创建HDFS目录,CMD执行:

hdfs dfs -mkdir -p /data/fileSmartUpload
hdfs dfs -mkdir -p /output/

右键执行InvertedIndex.java文件。

执行结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
part-r-00000内容如下:
在这里插入图片描述

  1. 再次查询
    Search File栏查询: Linux
    在这里插入图片描述

结果原因,查看倒排索索引文件:
含有Linux 内容的文件:

在这里插入图片描述
加上 <Linux下载.txt>,共四个。

  1. 下载示例:
    点击下载
    在这里插入图片描述
执行流程简述完毕。。。

5. 代码

CSDN:https://download.csdn.net/download/qq_38038143/10849113
GitHub:https://github.com/GYT0313/FileUploadDownload

完!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值