JavaWeb开发的Hadoop网盘(2)

一、项目整体架构

在这里插入图片描述

二、Controller控制层代码

在这里插入图片描述

1、剪切文件到文件夹内(DirRemoveServlet )

package controller;

import java.io.IOException;
import java.io.InputStream;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.http.Part;

import org.apache.hadoop.fs.FileStatus;

import hdfs.HdfsOper;
@WebServlet("/DirRemoveServlet")
public class DirRemoveServlet extends HttpServlet{
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		String thisPath = request.getParameter("thisPath");
		String fileName = request.getParameter("fileName");
		String filePath1 = thisPath + "/" + fileName;
		HttpSession session = request.getSession();
		String username = (String) session.getAttribute("username");
		String pastePath = request.getParameter("pastePath");
		String pasteName = request.getParameter("pasteName");
		String filePath2 = pastePath + "/" + pasteName;
		if (pastePath != null) {
			String cut = request.getParameter("cut");
			HdfsOper.ReName(cut, filePath2);
			if (pastePath.equals(username)) {
				FileStatus[] documentList = HdfsOper.ShowDirFiles(pastePath);
				request.setAttribute("list", documentList);
				request.getRequestDispatcher("index.jsp").forward(request, response);
			} else {
				response.sendRedirect(request.getHeader("Referer"));
			}
		} else {
			request.setAttribute("cut", filePath1);
			FileStatus[] documentList = HdfsOper.ShowFiles(username);
			request.setAttribute("list", documentList);
			//System.out.println("得到list数据" + documentList);
			request.getRequestDispatcher("index.jsp").forward(request, response);
		}
	}

}

2、展示文件夹下的所有文件(DirShowFilesServlet )

package controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.hadoop.fs.FileStatus;

import dao.UserDao;
import dao.impl.UserDaoImpl;
import hdfs.HdfsOper;
import pojo.User;
@WebServlet("/DirShowFilesServlet") 

public class DirShowFilesServlet extends HttpServlet{
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//处理请求的中文乱码问题
		request.setCharacterEncoding("utf-8");
		//获得文件名与用户名
		String username = request.getParameter("name");
		String filePath = request.getParameter("filePath");
		
		String cut = request.getParameter("cut");
		request.setAttribute("cut", cut);
		
		System.out.println(filePath);
		HdfsOper ho=new HdfsOper();
		if (filePath.equals("/")) {
			filePath="/"+username;
			FileStatus[] list=ho.ShowDirFiles(filePath);
			HttpSession session = request.getSession();
			request.setAttribute("filePath", filePath);
			request.setAttribute("list", list);
			//request.setAttribute("username",username);
			//请求转发
			request.getRequestDispatcher("index.jsp").forward(request, response);

		}else {
			FileStatus[] list=ho.ShowDirFiles(filePath);
			HttpSession session = request.getSession();
			request.setAttribute("filePath", filePath);
			request.setAttribute("list", list);
			//request.setAttribute("username",username);
			//请求转发
			request.getRequestDispatcher("index.jsp").forward(request, response);
		}
		
	}
}

3、本地上传文件(UserCopyServlet)

package controller;
import java.io.IOException;
import java.io.InputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;
import java.util.UUID;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.servlet.http.Part;
import org.apache.hadoop.fs.FileStatus;
import hdfs.HdfsOper;
@MultipartConfig
@WebServlet("/UserCopyServlet") //servlet3.0使用注解  
public class UserCopyServlet extends HttpServlet{
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			request.setCharacterEncoding("utf-8");
			response.setContentType("text/html;charset=utf-8");
		    Part part = request.getPart("file1");
		    HttpSession session = request.getSession();
		    String PATH=request.getParameter("PATH");
			//String PATH = (String) session.getAttribute("PATH");
	        String disposition = part.getHeader("Content-Disposition");
	        String fileName =disposition.substring(disposition.lastIndexOf("=")+2,disposition.length()-1);

	        String upPath=PATH+"/"+fileName;
	        //System.out.println("name:"+PATH);
	        //System.out.println("upPath:"+upPath);
	          //获取上传的文件名
	        InputStream in = part.getInputStream();
	        System.out.println(disposition.substring(disposition.lastIndexOf("=")+2,disposition.length()-1));
	        try {
	        	HdfsOper.copyFile(upPath, in);
				System.out.println("上传成功");
				//String PATH1="/"+PATH;
				FileStatus[] list = HdfsOper.ShowDirFiles(PATH);
				request.setAttribute("list", list);
				request.setAttribute("filePath", PATH);
				request.getRequestDispatcher("index.jsp").forward(request, response);
			} catch (IllegalArgumentException | IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	        in.close();	        
		}
}

4、创建目录(UserCreDicServlet )

package controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.hadoop.fs.FileStatus;

import hdfs.HdfsOper;
@WebServlet("/UserCreDicServlet") //servlet3.0使用注解  
public class UserCreDicServlet extends HttpServlet{

	private static final long serialVersionUID = 1L;
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//处理请求的中文乱码问题
		request.setCharacterEncoding("utf-8");
		//获得传过来的目录名
		String dir=request.getParameter("mkdir");
		System.out.println(dir);
		//获得路径
		HttpSession session = request.getSession();
		String PATH = request.getParameter("PATH");
		System.out.println(PATH);
		HdfsOper ho=new HdfsOper();
		//String PATH11="/"+PATH;
		ho.CrDir(PATH, dir);
		FileStatus[] list=ho.ShowDirFiles(PATH);
		request.setAttribute("list", list);
		request.setAttribute("filePath", PATH);
		//request.setAttribute("username",username);
		//请求转发
		request.getRequestDispatcher("index.jsp").forward(request, response);
	}
}

5、删除文件(UserDeleteServlet )

package controller;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.hadoop.fs.FileStatus;

import hdfs.HdfsOper;
@WebServlet("/UserDeleteServlet") //servlet3.0使用注解  
public class UserDeleteServlet extends HttpServlet{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//处理请求的中文乱码问题
		request.setCharacterEncoding("utf-8");
		//获得传过来的路径与用户名
		String name=request.getParameter("name");
		String deletePath=request.getParameter("deletePath");
		//获得传过来的文件目录名
		String DirPath=request.getParameter("result");
		System.out.println("path:"+DirPath);
		HdfsOper ho=new HdfsOper();
		ho.DeleteFile(DirPath,deletePath);
		//String filepath="/"+DirPath+"/"+deletePath;
		//String DirPath1="/"+DirPath;
		String dirPath1="/"+DirPath;
		FileStatus[] list=ho.ShowDirFiles(dirPath1);
		request.setAttribute("filePath", dirPath1);
		request.setAttribute("list", list);
		request.setAttribute("username",name);
		//请求转发
		request.getRequestDispatcher("index.jsp").forward(request, response);
		
	}
}

6、下载文件(UserDownServlet)

package controller;

import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.hadoop.fs.FileStatus;

import hdfs.HdfsOper;
@WebServlet("/UserDownServlet") //servlet3.0使用注解  
public class UserDownServlet extends HttpServlet{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//处理请求的中文乱码问题
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=UTF-8");
		//获得传过来的路径与用户名
		String name=request.getParameter("name");
		String oldPath=request.getParameter("oldPath");
		String DirPath=request.getParameter("result");
		String isDir=request.getParameter("isDir") ;
		if (isDir.equals("false")) {
			String filePath=DirPath+"/"+oldPath;
			try {
				InputStream in=HdfsOper.down(filePath);
				byte[] b=new byte[in.available()];
				in.read(b);
				response.setCharacterEncoding("utf-8");
				response.setContentType("text/html;charset=UTF-8");
				response.setHeader("Content-Disposition", "attachment; filename="+oldPath+"");
				ServletOutputStream out=response.getOutputStream();
				out.write(b);
				out.flush();
				out.close();
			}catch(IOException e){
				e.printStackTrace();
			}
		}else {
			HdfsOper ho=new HdfsOper();
			//if (DirPath==null) {
			ho.DownloadFile(DirPath,oldPath);
			String DirPath1="/"+DirPath;
			FileStatus[] list=ho.ShowDirFiles(DirPath1);
			request.setAttribute("list", list);
			request.setAttribute("username",name);
			//请求转发
			request.getRequestDispatcher("index.jsp").forward(request, response);
		}

	}
}

7、用户登陆(UserLoginServlet )

package controller;

import java.io.IOException;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.hadoop.fs.FileStatus;

import dao.UserDao;
import dao.impl.UserDaoImpl;
import hdfs.HdfsOper;
import pojo.User;
@WebServlet("/login.do") //servlet3.0使用注解  
public class UserLoginServlet extends HttpServlet{
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//处理请求的中文乱码问题
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=UTF-8");
		//获得用户名与密码
		String username = request.getParameter("username");
		String userpwd = request.getParameter("userpwd");
		//调用loin方法
		UserDao dao= new UserDaoImpl();
		User user = dao.login(username, userpwd);
		//登陆成功或失败
		if (user!=null) {
			//跳转页面index.jsp
			HttpSession session = request.getSession();
			HdfsOper ho=new HdfsOper();
			FileStatus[] list=ho.ShowFiles(username);

			request.setAttribute("list", list);
			//session.setAttribute("list",list);
			request.setAttribute("username",user.getUsername());
			session.setAttribute("username", user.getUsername());
			request.setAttribute("userpwd",user.getUserpwd());
			session.setAttribute("userpwd", user.getUserpwd());
			session.setAttribute("id", user.getUserid());
			//请求转发
			request.getRequestDispatcher("index.jsp").forward(request, response);
		}else {
			response.getWriter().write("<script>alert('用户名或者密码错误!!');window.location='login.jsp';window.close(); </script>");
			response.getWriter().flush();
			return ;
		}

	}
}

8、用户注册(UserRegisterServlet )

package controller;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import dao.UserDao;
import dao.impl.UserDaoImpl;
import hdfs.HdfsOper;
import pojo.User;

@WebServlet("/register.do") //3.0使用注解
public class UserRegisterServlet extends HttpServlet{
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//处理post请求的中文乱码问题
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=UTF-8");
		String username = request.getParameter("username");
		String userpwd = request.getParameter("userpwd");
		String userpwd1=request.getParameter("userpwd1");
		System.out.println(userpwd+","+userpwd1);
		UserDao dao= new UserDaoImpl();
		User user1 = dao.findUserName(username);
		if (user1!=null) {
			response.getWriter().write("<script>alert('该用户已经存在!请重新注册');window.location='login.jsp';window.close(); </script>");
			response.getWriter().flush();
			return ;
		}
		if (username==null||username.trim().isEmpty()) {
			response.getWriter().write("<script>alert('用户名不能为空!请重新输入');window.location='login.jsp';window.close(); </script>");
			response.getWriter().flush();
			return ;
		}
		if (userpwd==null||userpwd.trim().isEmpty()) {
			response.getWriter().write("<script>alert('密码不能为空!请重新输入');window.location='login.jsp';window.close(); </script>");
			response.getWriter().flush();
			return ;
		}
		if (!userpwd.equals(userpwd1)) {
			response.getWriter().write("<script>alert('两次输入的密码不一致。请重新输入!');window.location='login.jsp';window.close(); </script>");
			response.getWriter().flush();
			return ;
		}
		
		//UserDao dao= new  UserDaoImpl();
		User user = new User(0, username,userpwd );
		HdfsOper ho=new HdfsOper();
		ho.mk(username);
		dao.addUser(user);
		//转发到查询功能
		request.getRequestDispatcher("login.jsp").forward(request, response);

			
	}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值