JSP后台文件管理源代码的示例分析

发布时间:2021-11-22 10:03:12 作者:小新
来源:亿速云 阅读:153

这篇文章将为大家详细讲解有关JSP后台文件管理源代码的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

在网上找到个实现JSP后台文件管理的,就是Web端浏览器实现类似文件管理的功能(多了上传文件)。有源代码提供,就是写得乱了点。经整理改进,增加了文件下载功能,以及对大文件上传的支持(用commons.fileupload包,解决了smartupload包传输大文件就报错的Bug)。不过还没改下载(有时间改过来)。

<%-- 根据oddWorld 网站文件管理系统(简体中文版)修改    copy right by joard Ast,kliis     admin.jsp 功能:网站文件后台管理页面。    admin.jsp 特点:单页面实现服务器后台文件的各项管理    转载敬请注明出处!  --%>   <%@ page contentType="text/html;charset=gb2312" %> <%@ page import="java.io.*" %> <%@ page import="org.apache.commons.fileupload.*" %> <%@ page import="java.util.Date" %> <%@ page import="java.util.*" %> <%@ page import="com.jspsmart.upload.SmartUpload" %> <%@ page import="javax.servlet.http.HttpSession" %> <%@ page import="javax.servlet.http.HttpServletRequest" %> <%@ page import="java.lang.reflect.*" %>  <% //中文字符转换%> <%!  public static String UnicodeToChinese(String s)  {    try{    if(s==null || s.equals("")) return "";    String newstring=null;    newnewstring=new String(s.getBytes("ISO8859_1"),"gb2312");    return newstring;    }    catch(UnsupportedEncodingException e)    {    return s;    }  }   public static String ChineseToUnicode(String s)  {    try    {    if(s==null||s.equals("")) return "";    String newstring=null;    newnewstring=new String(s.getBytes("gb2312"),"ISO8859_1");    return newstring;    }    catch(UnsupportedEncodingException e)    {    return s;    }  }   public String getTime(String formats)    {      //取得自定义格式的时间 ("yyyyMM") ("yyyy_MM_dd_HHmmssSSS") 大S为毫秒 HH为24小时制,hh为12小时制    return new java.text.SimpleDateFormat(formats).format(java.util.Calendar.getInstance().getTime());    }  %>  <%  //刷新问题  response.setHeader("Pragma","No-cache");   response.setHeader("Cache-Control","no-cache");   response.setDateHeader("Expires", 0);   //自定义登陆用密码和用户名   //正确的用户名,可以另外添加连接数据库  String username="admin";   //正确的密码  String userpass="admin";   //得到系统路径,路径得到后加一杠,表示文件夹下  ServletContext app=(ServletContext)pageContext.getServletContext();  String strSysPath = app.getRealPath("/");    //处理对象物理路径  String strDealPath="";   //显示错误信息  String strErr="";   //代表页面的显示状态  //login 是显示登陆页面  //show 是正常的显示文件信息;  //edit 是显示编辑文件的页面;  //editDo是编辑文件的写入操作  //createF 是显示创建文件夹的页面;  //createFDo 是创建文件夹的操作;  //renameFold 是显示更改文件夹名称的页面;  //renameFoldDo是更改文件夹名称的操作;  //delFoldDo 是删除文件夹的操作;  //renameFile 是显示更改文件名称的页面;  //renameFileDo 是更改文件名称的操作;  //delFileDo 是删除文件的操作;  //uploadFile 是显示上传文件的页面;  //uploadFileDo 是上传文件的操作;   //添加的功能 uploadFile是显示下载文件的页面  //uploadFileDo是下载文件的操作   String strStat="login";  //用于show 状态下显示文件的数组   File[] fileArr=null;  //根据传递的路径参数得到要处理对象的物理路径   if (request.getParameter("path")==null || request.getParameter("path").equals(""))  {    strDealPath=strSysPath;    //如果从网页传来的路径为空,则默认采用  }  else  {    //得到路径参数    strDealPath=UnicodeToChinese(request.getParameter("path"));  }  //检查session 的值是否存在,如果不存在着显示错误信息  //HttpSession session = request.getSession(false);   if (session.getValue("loginIn")==null || !session.getValue("loginIn").equals("pass"))  {     strStat="login";    strErr="你还没有登陆或者登陆超时,请重新登陆!";  }   //创建file 对象,检查目录是否存在  File myFile=new File(strDealPath);   //检验文件夹是否存在   if(!myFile.exists())  {    strErr="你选择的文件夹不存在,请重新选择!";  }  //根据参数的不同,进行对应的操作  if(request.getParameter("act")==null ||     request.getParameter("act").equals("") ||     request.getParameter("act").equals("login")    )  {    if(request.getParameter("username")!=null && request.getParameter("userpass")!=null)    {     //正确的经过MD5 加密的密码    //String userpass="OEEO99107DC8C1EE2E06666B965601EF";     if( request.getParameter("username").equals(username)     && (request.getParameter("userpass")).equals(userpass)    )    {    session.putValue("loginIn","pass");    response.sendRedirect(request.getRequestURI()+"?act=show");    }    }     else    {    strStat="login";    strErr="你还没有登陆或者登陆超时,请重新登陆!";    }  }  else if(request.getParameter("act").equals("show"))  {    //缺省,页面正常显示文件的信息 statStat="show"   strStat="show";     //创建文件列表数组    fileArr=myFile.listFiles();   }  else if(request.getParameter("act").equals("edit"))  {    //编辑文件内容的页面    //根据是否有request.getParameter("file")    //以及相应文件是否存在,如果有,则进行编辑操作,如果没有,则显示错误提示信息         if (!(request.getParameter("file")==null || request.getParameter("file").equals("")))    {     File fileEdit= new File(UnicodeToChinese(request.getParameter("path"))    +UnicodeToChinese(request.getParameter("file")));         if(fileEdit.exists())    //文件编辑操作,实际就是更改页面的显示,用一个textarea 显示文件的信息,来做编辑    strStat="edit";    else     //显示错误信息    strErr="你选择的文件不存在,请重新选择!";         }else    {    strErr="你没有选择要编辑的文件,请重新选择!";    }  }else if(request.getParameter("act").equals("editDo"))  {    //把修改的内容写入文件,并且返回修改页面    if (!(request.getParameter("file")==null || request.getParameter("file").equals("")))    {     File fileEdit= new File(UnicodeToChinese(request.getParameter("path"))    +UnicodeToChinese(request.getParameter("file")));     if(fileEdit.exists())    {     //文件编辑操作,实际就是在修改文件内容以后,再于页面上用一个textarea 显示文件的内容,    //继续来做编辑或者查看修改的效果    if(!(request.getParameter("fileData")==null))    {     try{    PrintWriter pwEdit =null;         pwEdit=new PrintWriter(new FileOutputStream(UnicodeToChinese(request.getParameter("path"))    +UnicodeToChinese(request.getParameter("file"))));         pwEdit.println(UnicodeToChinese(request.getParameter("fileData")));    pwEdit.close();         response.sendRedirect(request.getRequestURI()+"?path="+     UnicodeToChinese(request.getParameter("path")) +"&file="+UnicodeToChinese(request.getParameter("file")) +"&act=edit");     return;    }catch(Exception e)    {    strErr="文件写入错误,请重新选择!";    }    }     else    {    strErr="缺少修改文件内容的参数,请重新选择!";    }    }else     //显示错误信息    strErr="你选择的文件不存在,请重新选择!";    }else    {    strErr="你没有选择要编辑的文件,请重新选择!";    }  }else if(request.getParameter("act").equals("createF"))  {    //创建新的文件夹的页面显示    strStat="createF";  }else if(request.getParameter("act").equals("createFDo"))  {    //创建新的文件夹    String strFoldName=strDealPath+UnicodeToChinese(request.getParameter("foldName")).trim()+"\\";    //out.println(strFoldName);    //out.close();    File fileCreateF=new File(strFoldName);     if(!fileCreateF.exists())    {    try{    fileCreateF.mkdir();    response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show");     return;    }catch(Exception e)    {     strErr="创建新文件夹失败!";    }    }    else    {     strErr="指定的文件夹名称和现有的文件夹名称重复,请重新指定一个新的文件夹名称!";    }  }   else if(request.getParameter("act").equals("delFoldDo"))  {    //删除操作    try{    String strFileDelF=strDealPath+UnicodeToChinese(request.getParameter("fold"))+"\\";    File fileDelF=new File(strFileDelF);     if(fileDelF.exists())    {    File[] fileArrCheck=fileDelF.listFiles();    if(!(fileArrCheck.length>0))    {    fileDelF.delete();    response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show");     return;    }else    {    strErr="文件夹下面还包含着文件,请把文件都删除,再删除文件夹";    }    }else    {    strErr="要删除的文件夹不存在,请重新选择";    }    }catch(Exception e)    {    strErr="文件夹删除操作错误!";    }  }    else if(request.getParameter("act").equals("renameFold"))  {    strStat="renameFold";  }   else if(request.getParameter("act").equals("renameFoldDo"))  {    //文件夹更名操作    //根据参数判断是否对于文件夹名称有更改动作发生    if(request.getParameter("changeDo").equals("true"))    {    //有文件名,更名发生    try{    String strFileRenameF=strDealPath+UnicodeToChinese(request.getParameter("fold"))+"\\";    File fileRenameF=new File(strFileRenameF);         //先用strFileRenameF获得当前的文件路径    String strFileRenameToF=strDealPath+UnicodeToChinese(request.getParameter("newFoldName"))+"\\";         File fileRenameToF=new File(strFileRenameToF);     //判断更名的文件夹是否存在    if(fileRenameF.exists())    {    //判断新的文件夹名称是否与现存的文件夹重名    if(!fileRenameToF.exists())    {    fileRenameF.renameTo(fileRenameToF);    response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show");     return;    }else    {    strErr="指定的文件夹名称和现有的文件夹名称重复,请重新指定一个文件夹名称!";    }    }else    {    strErr="要更名的文件夹不存在,请重新选择";    }     }catch(Exception e)    {    strErr="文件夹更名操作错误!";    }  }  }   else if(request.getParameter("act").equals("renameFile"))  {    strStat="renameFile";  }   else if(request.getParameter("act").equals("renameFileDo"))  {    //文件更名操作    //根据参数判断是否对于文件名称有更改动作发生    if(request.getParameter("changeDo").equals("true"))    {    //有文件名,更名发生    try{    String strFileRenameFi=strDealPath+UnicodeToChinese(request.getParameter("file"));    File fileRenameFi=new File(strFileRenameFi);         String strFileRenameToFi=strDealPath+UnicodeToChinese(request.getParameter("newFileName"));    File fileRenameToFi=new File(strFileRenameToFi);         //判断更名的文件是否存在    if(fileRenameFi.exists())    {    //判断新的文件名称是否与现存的文件重名    if(!fileRenameToFi.exists())    {    fileRenameFi.renameTo(fileRenameToFi);    response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show");     return;    }else    {    strErr="指定的文件名称和现有的文件名称重复,请重新指定一个文件名称!";    }    }else    {    strErr="要更名的文件不存在,请重新选择";    }     }catch(Exception e)    {    strErr="文件更名操作错误!";    }     }  }   else if(request.getParameter("act").equals("delFileDo"))  {    //删除操作    try{    String strFileDelFi=strDealPath+UnicodeToChinese(request.getParameter("file"));    File fileDelFi=new File(strFileDelFi);     if(fileDelFi.exists())    {    fileDelFi.delete();    response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show");     return;    }    else    {    strErr="要删除的文件不存在,请重新选择";    }     }catch(Exception e)    {    strErr="文件删除操作错误!";    }   }   //上传文件,用到smartupload组件  else if(request.getParameter("act").equals("uploadFile"))  {    strStat="uploadFile";  }  else if(request.getParameter("act").equals("uploadFileDo"))  {  %>  <%    //上传文件操作    //mySmartUpload.initialize(pageContext);    //mySmartUpload.setTotalMaxFileSize(100000000);    //try     //{    // mySmartUpload.upload();    // mySmartUpload.save(strDealPath);     // response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show");     // return;     //} catch (Exception e)     //{     // strErr="文件上传出错,请检查是否超过100M 的文件大小限制!";    //}         //重新用commons.fileupload包传输文件       %>  <%     String type="upload";     String fileExt=null;     long fileSize=0;     int count=0;     String fileName=getTime("yyyyMMdd_HHmmssSSS");     String dateDir=getTime("yyyyMMdd")+"/";     String path=getServletContext().getRealPath("/")+type;     File dir=new File(path);    if(!dir.exists())    {     dir.mkdir();    }     pathpath=path+"/"+dateDir;       dir=new File(path);         if(!dir.exists())    {     dir.mkdir();    }    try{     DiskFileUpload fu=new DiskFileUpload();     fu.setSizeMax(1024*1024*500); // 设置允许用户上传文件大小,单位:字节     fu.setSizeThreshold(1024); // 设置最多只允许在内存中存储的数据,单位:字节     fu.setRepositoryPath("C:\\");      //设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的临时文件夹     List fileItems=fu.parseRequest(request); //开始读取上传信息     Iterator iter=fileItems.iterator(); // 依次处理每个上传的文件     while(iter.hasNext())     {         FileItem item=(FileItem) iter.next();     if(!item.isFormField())    {      //判断是否是文件框,忽略其他不是文件域的所有表单信息    count++;         fileExt=item.getName();      //取得文件名,是客户端的文件路径,晕         fileSize=item.getSize();         if(fileExt==null||fileExt.equals("")||fileSize==0)          out.print(count+" : <hr size=1>");     else    {    fileExtfileExt=fileExt.substring(fileExt.lastIndexOf("\\")+1);      //取文件扩展名         File files=new File(path,fileExt);         item.write(files);      //以时间命名         out.print(count+" : "+files.getName()+"<hr size=1>");    response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show");    //out.print(fileExt);         }    }       }   }catch(Exception e){    out.print("Error!");  }   }  else if(request.getParameter("act").equals("downloadFile"))  {    strStat="downloadFile";            }  else if(request.getParameter("act").equals("downloadFileDo"))  {  %>

关于“JSP后台文件管理源代码的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

推荐阅读:
  1. jsp到servlet后台服务通信过程的示例分析
  2. JSP语法的示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

jsp

上一篇:KAFKA中的Replica是什么

下一篇:c语言怎么实现含递归清场版扫雷游戏

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》