JSP后台文件管理源代码的示例分析
发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,这篇文章将为大家详细讲解有关JSP后台文件管理源代码的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在网上找到个实现JSP后台文件管理的,就是Web端浏览器
千家信息网最后更新 2025年01月16日JSP后台文件管理源代码的示例分析
这篇文章将为大家详细讲解有关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+" :
"); else { fileExtfileExt=fileExt.substring(fileExt.lastIndexOf("\\")+1); //取文件扩展名 File files=new File(path,fileExt); item.write(files); //以时间命名 out.print(count+" : "+files.getName()+"
"); 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后台文件管理源代码的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
文件
文件夹
名称
管理
文件名
错误
选择
后台
篇文章
源代码
示例
分析
信息
功能
动作
单位
参数
大小
字节
就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库查询字段合并
德尚网络技术有限公司
学生网络技术服务成交价
宝塔数据库没有备份数据库怎么办
岳麓电脑城服务器专营
微信后台服务器存储期限
邮政银行软件开发岗位面试
禹展互联网科技有限公司
天津特色软件开发质量服务
宁德app软件开发
文史哲数据库
外贸商业数据库
计算机网络技术第八版答案
快吧我的世界厄运之塔服务器
涟水立创互联网科技
餐饮数据库菜名代码
上海企业软件开发定制收费
北京服务器迁移企业云服务器
数据库应用基础是什么专业
微信小程序开发绑定服务器
服务器防护系统价格
德尚网络技术有限公司
北网络安全基地
多台服务器组建虚拟化
软件开发专科本科区别
亚马逊数据库事件
如何添加数据库时间
杭州互动安全教育展馆软件开发
架设传奇服务器
浪潮服务器红灯