分享
 
 
 

JSP单页面网站文件管理器

王朝java/jsp·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

这个文件的开发的设计思想是这样的。有的web 网站,或者B/S 软件的客户,在软件的安装调试阶段,往往对某些细节有特殊要求,也许,是字体的调整,也许是界面方面的小改动意见。面对这样的情况,如果用户没有开放FTP 功能,则开发和维护人员往往就必须亲临现场做一些很小的调试工作。

即浪费了时间,也浪费了人力物力。

在这样的情况下,我开发了这个具有文件管理功能的 JSP 单页面文件。它提供了文件夹的新增,更名,删除;文件的修改,更名,删除和上传的功能。基本能满足在软件的安装调试阶段,小的修改工作。

为了安全原因,该JSP 页面提供了简单的用户登陆功能。

使用前,把该文件置于网站文件,或者B/S 产品的任意目录下。开放文件安装目录的 读写 操作权限。用户远程登陆该JSP 页面,就可以行使管理功能。当安装维护阶段结束以后,请修改文件安装目录的 读写 权限,并删除该文件,以免留下安全隐患。

缺省,登陆用户名为:admin 密码为:oddworld

开发环境 jakarta-tomcat-4.0.3.exe

注意:因为本软件的上传文件功能必须有 smartupload 组件支持。请把smartupload 置于tomcat 对应文件夹web-inf 下。如果你支持上传的组件有所不同,请自行调整。

简要开发说明:因为本文件并不复杂,加上本人自我感觉,文档说明虽然不规范,却也详细,所以只打算简要的关于一些小细节上做说明。

1. 本文件进行文件目录操作的时候,直接把目录当参数来传递,没有进行相应的转换。这是因为在 java 中, “\英文字符”有可能会被认为是转意字符,而引起在字符处理过程中出现无法预期的问题,所以我认为直接把目录来作为参数,在操作上比较合理。

2. 本文件在一些表单的提交方面,使用连接,而不是按钮,是因为 javascript 处理带 “\”的字符串时,也会有处理转意字符的可能,所以,为了防止这样的情况,所以传递目录参数的提交,都使用连接形式。

3. strStat,strErr 两个字符串,贯穿文件始终,前者为页面进行何种操作的判断命令,后者为在所有操作中出错的信息提示。

4. 本文件有可能引起的安全或者其它方面的纠纷,本人不做任何解释。我只是把该文件作为一个免费的工具提供给大家参考,使用。

文件内容 admin.jsp

<%-- oddWorld 网站文件管理系统(简体中文版) 2003年10月10日

copy right by joard Ast

admin.jsp 功能:网站文件后台管理页面。

--%>

<%@ page contentType="text/html;charset=gb2312" %>

<%@ page import="java.io.*" %>

<%@ page import="java.util.Date" %>

<%@ 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;

newstring=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;

newstring=new String(s.getBytes("gb2312"),"ISO8859_1");

return newstring;

}

catch(UnsupportedEncodingException e)

{

return s;

}

}

%>

<%

//刷新问题

response.setHeader("Pragma","No-cache");

response.setHeader("Cache-Control","no-cache");

response.setDateHeader("Expires", 0);

//自定义登陆用密码和用户名

//正确的用户名

String username="admin"

//正确的密码

String userpass="oddworld";

//得到系统路径

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 是上传文件的操作;

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())

&nb

[1] [2] [3] [4] [5] [6] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有