|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你希望java的IDE整合。这个是没有必要的,重要的是你理解java有多深以及怎么组织你的代码,即使没有IDE,代码照样能够编译运行的。js|页面<p>
这个文件的开辟的计划头脑是如许的。有的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日
copyrightbyjoardAst
admin.jsp功效:网站文件背景办理页面。
--%>
<%@pagecontentType="text/html;charset=gb2312"%>
<%@pageimport="java.io.*"%>
<%@pageimport="java.util.Date"%>
<%@pageimport="com.jspsmart.upload.SmartUpload"%>
<%@pageimport="javax.servlet.http.HttpSession"%>
<%@pageimport="javax.servlet.http.HttpServletRequest"%>
<%@pageimport="java.lang.reflect.*"%>
<%//中笔墨符转换%>
<%!
publicstaticStringUnicodeToChinese(Strings){
try{
if(s==null||s.equals(""))return"";
Stringnewstring=null;
newstring=newString(s.getBytes("ISO8859_1"),"gb2312");
returnnewstring;
}
catch(UnsupportedEncodingExceptione)
{
returns;
}
}
publicstaticStringChineseToUnicode(Strings){
try{
if(s==null||s.equals(""))return"";
Stringnewstring=null;
newstring=newString(s.getBytes("gb2312"),"ISO8859_1");
returnnewstring;
}
catch(UnsupportedEncodingExceptione)
{
returns;
}
}
%>
<%
//革新成绩
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires",0);
//自界说上岸用暗码和用户名
//准确的用户名
Stringusername="admin"
//准确的暗码
Stringuserpass="oddworld";
//失掉体系路径
ServletContextapp=(ServletContext)pageContext.getServletContext();
StringstrSysPath=app.getRealPath("/");
//处置对象物理路径
StringstrDealPath="";
//显现毛病信息
StringstrErr="";
//代表页面的显现形态,login是显现上岸页面;show是一般的显现文件信息;edit是显现编纂文件的页面;editDo是编纂文件的写进操纵
;createF是显现创立文件夹的页面;createFDo是创立文件夹的操纵;renameFold是显现变动文件夹称号的页面;renameFoldDo是变动文
件夹称号的操纵;delFoldDo是删除文件夹的操纵;renameFile是显现变动文件称号的页面;renameFileDo是变动文件称号的操纵;
delFileDo是删除文件的操纵;uploadFile是显现上传文件的页面;uploadFileDo是上传文件的操纵;
StringstrStat="login";
//用于show形态下显现文件的数组
File[]fileArr=null;
//依据传送的路径参数失掉要处置对象的物理路径
if(request.getParameter("path")==null||request.getParameter("path").equals("")){
strDealPath=strSysPath;
}else{
//失掉路径参数
strDealPath=UnicodeToChinese(request.getParameter("path"));
}
//反省session的值是不是存在,假如不存在着显现毛病信息
//HttpSessionsession=request.getSession(false);
if(session.getValue("loginIn")==null||!session.getValue("loginIn").equals("pass"))
{
strStat="login";
strErr="你还没有上岸大概上岸超时,请从头上岸!";
}
//创立file对象,反省目次是不是存在
FilemyFile=newFile(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加密的暗码
//Stringuserpass="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="你还没有上岸大概上岸超时,请从头上岸!";
}
}elseif(request.getParameter("act").equals("show")){
//缺省,页面一般显现文件的信息statStat="show"
strStat="show";
//创立文件列表数组
fileArr=myFile.listFiles();
}elseif(request.getParameter("act").equals("edit"))
{
//编纂文件内容的页面
//依据是不是有request.getParameter("file"),和响应文件是不是存在,假如有,则举行编纂操纵,假如没有,则显现毛病提醒信息
if(!(request.getParameter("file")==null||request.getParameter("file").equals(""))){
FilefileEdit=new
File(UnicodeToChinese(request.getParameter("path"))+UnicodeToChinese(request.getParameter("file")));
if(fileEdit.exists())
//文件编纂操纵,实践就是变动页面的显现,用一个textarea显现文件的信息,来做编纂
strStat="edit";
else
//显现毛病信息
strErr="你选择的文件不存在,请从头选择!";
}else{
strErr="你没有选择要编纂的文件,请从头选择!";
}
}elseif(request.getParameter("act").equals("editDo"))
{
//把修正的内容写进文件,而且前往修正页面
if(!(request.getParameter("file")==null||request.getParameter("file").equals("")))
{
FilefileEdit=new
File(UnicodeToChinese(request.getParameter("path"))+UnicodeToChinese(request.getParameter("file")));
if(fileEdit.exists())
{
//文件编纂操纵,实践就是在修正文件内容今后,再于页面上用一个textarea显现文件的内容,持续来做编纂大概
检察修正的效果
if(!(request.getParameter("fileData")==null))
{
try{
PrintWriterpwEdit=null;
pwEdit=newPrintWriter(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(Exceptione){
strErr="文件写进毛病,请从头选择!";
}
}else{
strErr="短少修正文件内容的参数,请从头选择!";
}
}else
//显现毛病信息
strErr="你选择的文件不存在,请从头选择!";
}else{
strErr="你没有选择要编纂的文件,请从头选择!";
}
}elseif(request.getParameter("act").equals("createF"))
{
//创立新的文件夹的页面显现
strStat="createF";
}elseif(request.getParameter("act").equals("createFDo"))
{
//创立新的文件夹
StringstrFoldName=strDealPath+UnicodeToChinese(request.getParameter("foldName")).trim()+"";
//out.println(strFoldName);
//out.close();
FilefileCreateF=newFile(strFoldName);
if(!fileCreateF.exists())
{
try{
fileCreateF.mkdir();
response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show");
return;
}catch(Exceptione){
strErr="创立新文件夹失利!";
}
}
else
{
strErr="指定的文件夹称号和现有的文件夹称号反复,请从头指定一个新的文件夹称号!";
}
}elseif(request.getParameter("act").equals("delFoldDo"))
{
//删除操纵
try{
StringstrFileDelF=strDealPath+UnicodeToChinese(request.getParameter("fold"))+"";
FilefileDelF=newFile(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(Exceptione)
{
strErr="文件夹删除操纵毛病!";
}
}elseif(request.getParameter("act").equals("renameFold"))
{
strStat="renameFold";
}elseif(request.getParameter("act").equals("renameFoldDo"))
{
//文件夹改名操纵
//依据参数判别是不是关于文件夹称号有变动举措产生
if(request.getParameter("changeDo").equals("true"))
{
//有文件名,改名产生
try{
StringstrFileRenameF=strDealPath+UnicodeToChinese(request.getParameter("fold"))+"";
FilefileRenameF=newFile(strFileRenameF);
StringstrFileRenameToF=strDealPath+UnicodeToChinese(request.getParameter("newFoldName"))+"";
FilefileRenameToF=newFile(strFileRenameToF);
//判别改名的文件夹是不是存在
if(fileRenameF.exists()){
//判别新的文件夹称号是不是与现存的文件夹重名
if(!fileRenameToF.exists())
{
fileRenameF.renameTo(fileRenameToF);
response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show");
return;
}else
{
strErr="指定的文件夹称号和现有的文件夹称号反复,请从头指定一个文件夹称号!";
}
}else{
strErr="要改名的文件夹不存在,请从头选择";
}
}catch(Exceptione)
{
strErr="文件夹改名操纵毛病!";
}
}
}elseif(request.getParameter("act").equals("renameFile"))
{
strStat="renameFile";
}elseif(request.getParameter("act").equals("renameFileDo"))
{
//文件改名操纵
//依据参数判别是不是关于文件称号有变动举措产生
if(request.getParameter("changeDo").equals("true"))
{
//有文件名,改名产生
try{
StringstrFileRenameFi=strDealPath+UnicodeToChinese(request.getParameter("file"));
FilefileRenameFi=newFile(strFileRenameFi);
StringstrFileRenameToFi=strDealPath+UnicodeToChinese(request.getParameter("newFileName"));
FilefileRenameToFi=newFile(strFileRenameToFi);
//判别改名的文件是不是存在
if(fileRenameFi.exists()){
//判别新的文件称号是不是与现存的文件重名
if(!fileRenameToFi.exists())
{
fileRenameFi.renameTo(fileRenameToFi);
response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show");
return;
}else
{
strErr="指定的文件称号和现有的文件称号反复,请从头指定一个文件称号!";
}
}else{
strErr="要改名的文件不存在,请从头选择";
}
}catch(Exceptione)
{
strErr="文件改名操纵毛病!";
}
}
}elseif(request.getParameter("act").equals("delFileDo"))
{
//删除操纵
try{
StringstrFileDelFi=strDealPath+UnicodeToChinese(request.getParameter("file"));
FilefileDelFi=newFile(strFileDelFi);
if(fileDelFi.exists())
{
fileDelFi.delete();
response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show");
return;
}else{
strErr="要删除的文件不存在,请从头选择";
}
}catch(Exceptione)
{
strErr="文件删除操纵毛病!";
}
}elseif(request.getParameter("act").equals("uploadFile"))
{
strStat="uploadFile";
}elseif(request.getParameter("act").equals("uploadFileDo"))
{
%>
<jsp:useBeanid="mySmartUpload"scope="page"class="com.jspsmart.upload.SmartUpload"/>
<%
//上传文件操纵
mySmartUpload.initialize(pageContext);
mySmartUpload.setTotalMaxFileSize(1000000);
try{
mySmartUpload.upload();
mySmartUpload.save(strDealPath);
response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show");
return;
}catch(Exceptione){
strErr="文件上传堕落,请反省是不是凌驾1M的文件巨细限定!";
}
}
%>
<%
out.println(strStat);
%>
<HTML><HEAD><TITLE>DirectoryListingFor/</TITLE>
<METAcontent="text/html;charset=utf-8"http-equiv=Content-Type>
<METAcontent="MSHTML5.00.2920.0"name=GENERATOR></HEAD>
<BODYbgColor=white>
<divalign="center">
<tableborder=0cellpadding=5cellspacing=0width="90%">
<tbody>
<tr>
<tdalign=leftbgcolor=#000066valign=bottom><fontcolor=#ffffffface=宋体
size=4Roman?New,?times><b>网站文件办理器</b></font></td>
<tdalign=rightbgcolor=#000066valign=bottom><fontcolor=#ffffffface=宋体
size=4Roman?New,?times><b><strong><%=request.getContextPath()%></strong></b></font></td>
</tr>
</tbody>
</table>
<tablewidth="90%"border="0"cellspacing="0"cellpadding="5">
<tr>
<td><fontsize="2"><b>物理路径:</b><%=strDealPath%></font></td>
</tr>
</table>
<br>
<%if(strStat.equals("login")){%>
<tablewidth="300"border="0"cellspacing="1"cellpadding="0">
<tr>
<tdheight="200"valign="top"align="center">
<palign="center">
<tablewidth="100%"border="0"cellspacing="1"cellpadding="5"bgcolor=#999999class=a9px>
<tr>
<tdbgcolor="#cccccc"><fontsize=+2>登录</font></td>
</tr>
<tr>
<tdbgcolor="#FFFFFF"valign="top"align="center">
<tablewidth="100%"border="0"cellspacing="0"cellpadding="0">
<formname=dataformmethod=postaction=<%=request.getRequestURI()%>?act=login>
<tr>
<tdwidth="100"><b><fontsize="-1">登录名:</font></b></td>
<td>
<inputmaxlength=16
name="username"value="">
</td>
</tr>
<tr>
<tdwidth="100"><b><fontsize="-1">暗码:</font></b></td>
<td>
<inputclass=steditmaxlength=16
name="userpass"value="">
</td>
</tr>
</form>
</table>
<br>
<tableborder=0cellpadding=0cellspacing=0>
<tbody>
<tr>
<td>
<inputname=updatetype=buttonvalue="登录">
</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
<br>
</td>
</tr>
</table>
</td>
</tr>
</table>
<%//毛病信息显现
}elseif(strErr!=""){
%>
<tablewidth="90%"border="0"cellspacing="0"cellpadding="5">
<tr>
<td><fontsize=+2><strong>操纵毛病</strong></font></td>
</tr>
</table>
<tablealign=centercellpadding=5cellspacing=0width="90%">
<formname=dataForm2
action="<%=request.getRequestURI()%>?path=<%=UnicodeToChinese(request.getParameter("path"))%>&fold=<%=UnicodeToChinese(reques
t.getParameter("fold"))%>&act=renameFoldDo"method="post">
<tbody>
<trbgcolor=#cccccc>
<tdalign=leftbgcolor="#cccccc"><strong><fontsize="-1">毛病缘故原由:</font></strong></td>
</tr>
<tr>
<tdalign=left><TT><fontcolor="red"><%=strErr%></font></TT>
</td>
</tr>
<tr>
<tdbgcolor=#ccccccalign="center"><TT>[<ahref="javascript:history.go(-1);">前往操纵</a>]</TT><tt>[<a
href="<%=request.getRequestURI()%>?path=<%=UnicodeToChinese(request.getParameter("path"))%>&act=show">前往目次</a>
]<inputtype=hiddenname="changeDo"value="false"></tt></td>
</tr>
</tbody>
</form>
</table>
<%
}elseif(strStat.equals("show")){
//一般显现页面
%>
<tablewidth="90%"border="0"cellspacing="0"cellpadding="5">
<tr>
<td><fontsize=+2><strong>目次列表:</strong></font></td>
</tr>
</table>
<tablealign=centercellpadding=5cellspacing=0width="90%">
<tbody>
<trbgcolor=#cccccc>
<tdalign=left><fontsize=+1><strong><fontsize="-1">称号</font></strong></font><TT>(单击进进响应目次)</TT></td>
<tdalign=center><fontsize=+1><strong><fontsize="-1">修正工夫</font></strong></font></td>
<tdalign=center><b><fontsize="-1">重定名</font></b></td>
<tdalign=center><b><fontsize="-1">删除</font></b></td>
</tr>
<%
//显现表格行的初始色彩
StringbgColor="";
//假如不是根目次,则显现一个回到下层目次的毗连
if(!(strDealPath.equals(strSysPath))){%>
<trbgcolor=<%=bgColor%>>
<tdalign=left><tt><fontcolor=#000066face=WingDings
size=4>0</font><atitle="单击进进下层目次"
href="<%=request.getRequestURI()%>?path=<%=(myFile.getParent())+"&act=show>"%>&act=show">下层目次</a></tt></td>
<tdalign=right></td>
<tdalign=center></td>
<tdalign=center></td>
</tr>
<%}
for(inti=0;i<fileArr.length;i++){
//假如是文件夹则显现
if(fileArr[i].isDirectory()){
//色彩隔行变更
bgColor=bgColor.equals("#eeeeee")?"":"#eeeeee";
%>
<trbgcolor=<%=bgColor%>>
<tdalign=left><tt><FONTcolor=#000066face=WingDings
size=4>0</FONT><atitle="单击进进响应目次"
<P>href="<%=request.getRequestURI()%>?path=<%=strDealPath+fileArr[i].getName()+"&act=show"><%=fileArr[i].getName()%> |
|