一、项目整体架构
二、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);
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.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.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")
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 disposition = part.getHeader("Content-Disposition");
String fileName =disposition.substring(disposition.lastIndexOf("=")+2,disposition.length()-1);
String upPath=PATH+"/"+fileName;
InputStream in = part.getInputStream();
System.out.println(disposition.substring(disposition.lastIndexOf("=")+2,disposition.length()-1));
try {
HdfsOper.copyFile(upPath, in);
System.out.println("上传成功");
FileStatus[] list = HdfsOper.ShowDirFiles(PATH);
request.setAttribute("list", list);
request.setAttribute("filePath", PATH);
request.getRequestDispatcher("index.jsp").forward(request, response);
} catch (IllegalArgumentException | IOException e) {
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")
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();
ho.CrDir(PATH, dir);
FileStatus[] list=ho.ShowDirFiles(PATH);
request.setAttribute("list", list);
request.setAttribute("filePath", PATH);
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")
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 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")
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();
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")
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");
UserDao dao= new UserDaoImpl();
User user = dao.login(username, userpwd);
if (user!=null) {
HttpSession session = request.getSession();
HdfsOper ho=new HdfsOper();
FileStatus[] list=ho.ShowFiles(username);
request.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")
public class UserRegisterServlet 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");
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 ;
}
User user = new User(0, username,userpwd );
HdfsOper ho=new HdfsOper();
ho.mk(username);
dao.addUser(user);
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}