package com.file.servlet;import java.io.IOException;
import java.io.UnsupportedEncodingException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import java.io.File;
import java.util.Locale;
public class FileServlet extends HttpServlet {
private int flag=0;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setCharacterEncoding("gb2312");
if(0==flag)
{
flag=1;
File firstFile=new File("");
File[] root=firstFile.listRoots();
StringBuffer sbf=new StringBuffer();
for(int i=0;i<root.length;i++)
{
sbf.append(" <a href=\"./file?name="+root[i]+"\">");
sbf.append(root[i]);
sbf.append("</a> ");
}
resp.getWriter().print(sbf.toString());
}
else
{
req.setCharacterEncoding("gb2312");
String urlString=req.getParameter("name");
if(urlString!=null)
{
File f=new File(urlString);
StringBuffer sbf=new StringBuffer();
String str=Tree(f, sbf, req);
if(str!=null)
{
resp.getWriter().println(str);
}
}
}
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doGet(req, resp);
}
private String Tree(File file,StringBuffer s,HttpServletRequest req) throws UnsupportedEncodingException
{
if(file == null || !file.exists())
{
System.out.println("文件不存在");
return null;
}
File[] subs = file.listFiles();
if(subs==null)
{
System.out.println("没有子目录或者文件");
return null;
}
String urlString=req.getParameter("name");
for (int i = 0; i < subs.length; i++)
{
if(subs[i].isDirectory())
{
s.append(" <a href=\"./file?name="+urlString+subs[i].getName()+"\\\">");
s.append(subs[i].getName());
s.append("</a> ");
}
if(subs[i].isFile())
{
s.append(subs[i].getName());
}
}
return s.toString();
}
}上面是我写的一个显示电脑目录和文件的servlet类似于资源管理器
一开始界面是显示电脑上的几个盘符,可是我刷新一次后就消失了?刷新一次不是相当于从新发送请求吗?
还有个问题是中文下的目录和文件都无法显示.该成英文每问题.
import java.io.UnsupportedEncodingException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import java.io.File;
import java.util.Locale;
public class FileServlet extends HttpServlet {
private int flag=0;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setCharacterEncoding("gb2312");
if(0==flag)
{
flag=1;
File firstFile=new File("");
File[] root=firstFile.listRoots();
StringBuffer sbf=new StringBuffer();
for(int i=0;i<root.length;i++)
{
sbf.append(" <a href=\"./file?name="+root[i]+"\">");
sbf.append(root[i]);
sbf.append("</a> ");
}
resp.getWriter().print(sbf.toString());
}
else
{
req.setCharacterEncoding("gb2312");
String urlString=req.getParameter("name");
if(urlString!=null)
{
File f=new File(urlString);
StringBuffer sbf=new StringBuffer();
String str=Tree(f, sbf, req);
if(str!=null)
{
resp.getWriter().println(str);
}
}
}
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doGet(req, resp);
}
private String Tree(File file,StringBuffer s,HttpServletRequest req) throws UnsupportedEncodingException
{
if(file == null || !file.exists())
{
System.out.println("文件不存在");
return null;
}
File[] subs = file.listFiles();
if(subs==null)
{
System.out.println("没有子目录或者文件");
return null;
}
String urlString=req.getParameter("name");
for (int i = 0; i < subs.length; i++)
{
if(subs[i].isDirectory())
{
s.append(" <a href=\"./file?name="+urlString+subs[i].getName()+"\\\">");
s.append(subs[i].getName());
s.append("</a> ");
}
if(subs[i].isFile())
{
s.append(subs[i].getName());
}
}
return s.toString();
}
}上面是我写的一个显示电脑目录和文件的servlet类似于资源管理器
一开始界面是显示电脑上的几个盘符,可是我刷新一次后就消失了?刷新一次不是相当于从新发送请求吗?
还有个问题是中文下的目录和文件都无法显示.该成英文每问题.
import java.io.UnsupportedEncodingException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import java.io.File;
import java.util.Locale;
public class FileServlet extends HttpServlet {
private int flag=0;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setCharacterEncoding("gb2312");
if(0==flag)
{
flag=1;
File firstFile=new File("");
File[] root=firstFile.listRoots();
StringBuffer sbf=new StringBuffer();
for(int i=0;i<root.length;i++)
{
sbf.append(" <a href=\"./file?name="+root[i]+"\">");
sbf.append(root[i]);
sbf.append("</a> ");
}
resp.getWriter().print(sbf.toString());
}
else
{
req.setCharacterEncoding("gb2312");
String urlString=req.getParameter("name");
if(urlString!=null)
{
File f=new File(urlString);
StringBuffer sbf=new StringBuffer();
String str=Tree(f, sbf, req);
if(str!=null)
{
resp.getWriter().println(str);
}
}
}
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doGet(req, resp);
}
private String Tree(File file,StringBuffer s,HttpServletRequest req) throws UnsupportedEncodingException
{
if(file == null || !file.exists())
{
System.out.println("文件不存在");
return null;
}
File[] subs = file.listFiles();
if(subs==null)
{
System.out.println("没有子目录或者文件");
return null;
}
String urlString=req.getParameter("name");
for (int i = 0; i < subs.length; i++)
{
if(subs[i].isDirectory())
{
s.append(" <a href=\"./file?name="+urlString+subs[i].getName()+"\\\">");
s.append(subs[i].getName());
s.append("</a> ");
}
if(subs[i].isFile())
{
s.append(subs[i].getName());
}
}
return s.toString();
}
}
oracle,tomcat都是这样的
import java.io.UnsupportedEncodingException;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import java.io.File;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Locale;
public class FileServlet extends HttpServlet { @Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException { req.setCharacterEncoding("GBK");
resp.setCharacterEncoding("GBK");
resp.setContentType("text/html; charset=GBK");
String urlString = req.getParameter("name");
if(urlString==null)
{
File firstFile=new File("");
File[] root=firstFile.listRoots();
StringBuffer sbf=new StringBuffer();
for(int i=0;i<root.length;i++)
{
sbf.append(" <a href=file?name="+root[i]+">");
sbf.append(root[i]);
sbf.append("</a> <br>");
}
resp.getWriter().print(sbf.toString());
}
else
{
if(urlString!=null)
{
String newStr = new String(urlString.getBytes("ISO8859_1"), "GBK"); File f=new File(newStr);
StringBuffer sbf=new StringBuffer();
String str=Tree(f, sbf, req);
if(str!=null)
{
resp.getWriter().println(str);
}
}
}
} @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doGet(req, resp);
}
private String Tree(File file,StringBuffer s,HttpServletRequest req) throws UnsupportedEncodingException
{
if(file == null || !file.exists())
{
System.out.println("文件不存在");
return null;
}
File[] subs = file.listFiles();
if(subs==null)
{
System.out.println("没有子目录或者文件");
return null;
}
String urlString=req.getParameter("name");
String newStr=null;
if(urlString != null){
newStr = new String(urlString.getBytes("ISO8859_1"), "GBK");
}
for (int i = 0; i < subs.length; i++)
{
if(subs[i].isDirectory())
{
s.append(" <a href=\"./file?name="+newStr+subs[i].getName()+"\\\">");
s.append(subs[i].getName());
s.append("</a> <br>");
}
if(subs[i].isFile())
{
s.append(subs[i].getName()+"<br>");
}
}
return s.toString();
}
}
已经解决了了!这是改过后的文件.谢谢大家.