哪位大哥帮我将以下代码加一些简单的注释,我是新手
有些地方看不懂,谢谢了=======================================================================================================
import java.io.*;
import java.net.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;public class Redirect extends HttpServlet
{
static final String SITESPOOL = "SitesPool";
static final String STICKSESSION = "StickSession";
static final String VERSION = "ver. 2.9";
static final String CPR = "© <a href=\"mailto:[email protected]\">Coldbeans</a> 1999-2004 ";
static final int LIMIT = 3;
static final int BUFFER_SIZE = 8192;
static Hashtable locks = new Hashtable();
private ServletContext context;
Vector sites;
String pool;
int current; public Redirect()
{
sites = null;
current = -1;
}
public void init(ServletConfig servletconfig)
throws ServletException
{
super.init(servletconfig);
context = servletconfig.getServletContext();
System.out.println("© <a href=\"mailto:[email protected]\">Coldbeans</a> 1999-2004 ver. 2.9");
sites = new Vector();
pool = null;
current = 0;
String s = getInitParameter("SitesPool");
if(s != null)
{
pool = s;
locks.put(s, new Object());
try
{
FileReader filereader = new FileReader(lookupFile(s));
BufferedReader bufferedreader = new BufferedReader(filereader);
do
{
String s1;
if((s1 = bufferedreader.readLine()) == null)
{
break;
}
s1 = s1.trim();
if(s1.length() > 0 && s1.charAt(0) != '#' && !s1.startsWith("//"))
{
sites.addElement(s1);
}
} while(true);
bufferedreader.close();
filereader.close();
}
catch(Exception exception) { }
}
}
public void doPost(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws ServletException, IOException
{
String s = getSite(httpservletrequest, "true".equals(getInitParameter("StickSession")));
String s4 = "";
if(s.indexOf("?") <= 0)
{
String s1 = httpservletrequest.getQueryString();
if(s1 != null)
{
s = s + "?" + s1;
}
}
try
{
for(Enumeration enumeration = httpservletrequest.getParameterNames(); enumeration.hasMoreElements();)
{
String s2 = (String)enumeration.nextElement();
if(s4.length() > 0)
{
s4 = s4 + "&";
}
s4 = s4 + s2 + "=" + URLEncoder.encode(httpservletrequest.getParameter(s2));
}
URL url = new URL(s);
URLConnection urlconnection = url.openConnection();
urlconnection.setDoInput(true);
urlconnection.setDoOutput(true);
urlconnection.setUseCaches(false);
urlconnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
Enumeration enumeration1 = httpservletrequest.getHeaderNames();
do
{
if(!enumeration1.hasMoreElements())
{
break;
}
String s3 = (String)enumeration1.nextElement();
if(!s3.equals("Content-Type"))
{
urlconnection.setRequestProperty(s3, httpservletrequest.getHeader(s3));
}
} while(true);
Cookie acookie[] = httpservletrequest.getCookies();
if(acookie != null)
{
for(int i = 1; i < acookie.length; i++)
{
urlconnection.setRequestProperty("Set-Cookie" + i, acookie[i - 1].getName() + "=" + acookie[i - 1].getValue());
}
}
DataOutputStream dataoutputstream = new DataOutputStream(urlconnection.getOutputStream());
dataoutputstream.writeBytes(s4);
dataoutputstream.flush();
dataoutputstream.close();
InputStream inputstream = urlconnection.getInputStream();
httpservletresponse.setContentType(urlconnection.getContentType());
rewriteStreams(inputstream, httpservletresponse.getOutputStream());
inputstream.close();
}
catch(Exception exception)
{
)
}
}
public void doGet(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws ServletException, IOException
{
String s = getSite(httpservletrequest, "true".equals(getInitParameter("StickSession")));
if(s.indexOf("?") <= 0)
{
String s1 = httpservletrequest.getQueryString();
if(s1 != null)
{
s = s + "?" + s1;
}
}
HttpServletResponse _tmp = httpservletresponse;
httpservletresponse.setStatus(302);
httpservletresponse.setHeader("Location", s);
} public String getServletInfo()
{
return "Redirect: load balance for servlets (c) Coldbeans 1999-2007 ver. 2.9";
} private String getSite(HttpServletRequest httpservletrequest, boolean flag)
{
int i;
HttpSession httpsession;
httpsession = httpservletrequest.getSession();
Object obj1 = null;
if(flag && httpsession != null)
{
String s = (String)httpsession.getAttribute("StickSession");
if(s != null)
{
return s;
}
}
if((i = sites.size()) == 0)
{
return "";
}
if(pool == null)
{
return "";
}
Object obj = locks.get(pool);
Object obj2 = obj;
JVM INSTR monitorenter ;
String s1;
current++;
if(current >= i)
{
current = 0;
}
if(current >= 3)
{
current = 0;
}
s1 = (String)sites.elementAt(current);
if(httpsession != null)
{
httpsession.setAttribute("StickSession", httpsession);
}
return s1;
Exception exception;
exception;
throw exception;
}
private void rewriteStreams(InputStream inputstream, OutputStream outputstream)
throws IOException
{
byte abyte0[] = new byte[8192];
int i;
while((i = inputstream.read(abyte0)) > 0)
{
outputstream.write(abyte0, 0, i);
}
}
private File lookupFile(String s)
{
File file = new File(s);
return file.isAbsolute() ? file : new File(context.getRealPath("/"), s);
}
}==================================================================================================
有些地方看不懂,谢谢了=======================================================================================================
import java.io.*;
import java.net.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;public class Redirect extends HttpServlet
{
static final String SITESPOOL = "SitesPool";
static final String STICKSESSION = "StickSession";
static final String VERSION = "ver. 2.9";
static final String CPR = "© <a href=\"mailto:[email protected]\">Coldbeans</a> 1999-2004 ";
static final int LIMIT = 3;
static final int BUFFER_SIZE = 8192;
static Hashtable locks = new Hashtable();
private ServletContext context;
Vector sites;
String pool;
int current; public Redirect()
{
sites = null;
current = -1;
}
public void init(ServletConfig servletconfig)
throws ServletException
{
super.init(servletconfig);
context = servletconfig.getServletContext();
System.out.println("© <a href=\"mailto:[email protected]\">Coldbeans</a> 1999-2004 ver. 2.9");
sites = new Vector();
pool = null;
current = 0;
String s = getInitParameter("SitesPool");
if(s != null)
{
pool = s;
locks.put(s, new Object());
try
{
FileReader filereader = new FileReader(lookupFile(s));
BufferedReader bufferedreader = new BufferedReader(filereader);
do
{
String s1;
if((s1 = bufferedreader.readLine()) == null)
{
break;
}
s1 = s1.trim();
if(s1.length() > 0 && s1.charAt(0) != '#' && !s1.startsWith("//"))
{
sites.addElement(s1);
}
} while(true);
bufferedreader.close();
filereader.close();
}
catch(Exception exception) { }
}
}
public void doPost(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws ServletException, IOException
{
String s = getSite(httpservletrequest, "true".equals(getInitParameter("StickSession")));
String s4 = "";
if(s.indexOf("?") <= 0)
{
String s1 = httpservletrequest.getQueryString();
if(s1 != null)
{
s = s + "?" + s1;
}
}
try
{
for(Enumeration enumeration = httpservletrequest.getParameterNames(); enumeration.hasMoreElements();)
{
String s2 = (String)enumeration.nextElement();
if(s4.length() > 0)
{
s4 = s4 + "&";
}
s4 = s4 + s2 + "=" + URLEncoder.encode(httpservletrequest.getParameter(s2));
}
URL url = new URL(s);
URLConnection urlconnection = url.openConnection();
urlconnection.setDoInput(true);
urlconnection.setDoOutput(true);
urlconnection.setUseCaches(false);
urlconnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
Enumeration enumeration1 = httpservletrequest.getHeaderNames();
do
{
if(!enumeration1.hasMoreElements())
{
break;
}
String s3 = (String)enumeration1.nextElement();
if(!s3.equals("Content-Type"))
{
urlconnection.setRequestProperty(s3, httpservletrequest.getHeader(s3));
}
} while(true);
Cookie acookie[] = httpservletrequest.getCookies();
if(acookie != null)
{
for(int i = 1; i < acookie.length; i++)
{
urlconnection.setRequestProperty("Set-Cookie" + i, acookie[i - 1].getName() + "=" + acookie[i - 1].getValue());
}
}
DataOutputStream dataoutputstream = new DataOutputStream(urlconnection.getOutputStream());
dataoutputstream.writeBytes(s4);
dataoutputstream.flush();
dataoutputstream.close();
InputStream inputstream = urlconnection.getInputStream();
httpservletresponse.setContentType(urlconnection.getContentType());
rewriteStreams(inputstream, httpservletresponse.getOutputStream());
inputstream.close();
}
catch(Exception exception)
{
)
}
}
public void doGet(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws ServletException, IOException
{
String s = getSite(httpservletrequest, "true".equals(getInitParameter("StickSession")));
if(s.indexOf("?") <= 0)
{
String s1 = httpservletrequest.getQueryString();
if(s1 != null)
{
s = s + "?" + s1;
}
}
HttpServletResponse _tmp = httpservletresponse;
httpservletresponse.setStatus(302);
httpservletresponse.setHeader("Location", s);
} public String getServletInfo()
{
return "Redirect: load balance for servlets (c) Coldbeans 1999-2007 ver. 2.9";
} private String getSite(HttpServletRequest httpservletrequest, boolean flag)
{
int i;
HttpSession httpsession;
httpsession = httpservletrequest.getSession();
Object obj1 = null;
if(flag && httpsession != null)
{
String s = (String)httpsession.getAttribute("StickSession");
if(s != null)
{
return s;
}
}
if((i = sites.size()) == 0)
{
return "";
}
if(pool == null)
{
return "";
}
Object obj = locks.get(pool);
Object obj2 = obj;
JVM INSTR monitorenter ;
String s1;
current++;
if(current >= i)
{
current = 0;
}
if(current >= 3)
{
current = 0;
}
s1 = (String)sites.elementAt(current);
if(httpsession != null)
{
httpsession.setAttribute("StickSession", httpsession);
}
return s1;
Exception exception;
exception;
throw exception;
}
private void rewriteStreams(InputStream inputstream, OutputStream outputstream)
throws IOException
{
byte abyte0[] = new byte[8192];
int i;
while((i = inputstream.read(abyte0)) > 0)
{
outputstream.write(abyte0, 0, i);
}
}
private File lookupFile(String s)
{
File file = new File(s);
return file.isAbsolute() ? file : new File(context.getRealPath("/"), s);
}
}==================================================================================================
七个问题全面理解Servlet
总体看好像这个servlet是得到一个URL然后输出一个页面。好久没弄过servlet,基本看不懂了
不懂的话其他朋友加上import java.io.*;
import java.net.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;public class Redirect extends HttpServlet
{
static final String SITESPOOL = "SitesPool";
static final String STICKSESSION = "StickSession";
static final String VERSION = "ver. 2.9";
static final String CPR = "© <a href=\"mailto:[email protected]\">Coldbeans </a> 1999-2004 ";
static final int LIMIT = 3;
static final int BUFFER_SIZE = 8192;
static Hashtable locks = new Hashtable();
private ServletContext context;
Vector sites;
String pool;
int current; public Redirect()
{
sites = null;
current = -1;
}
//这个方法是对servlet进行的初始化操作。在你的这个servlet里面是进行的读取一个文件的操作,并把这个文件的记录加入到了sites里面。
public void init(ServletConfig servletconfig)
throws ServletException
{
super.init(servletconfig);
context = servletconfig.getServletContext();
System.out.println("© <a href=\"mailto:[email protected]\">Coldbeans </a> 1999-2004 ver. 2.9");
sites = new Vector();
pool = null;
current = 0;
String s = getInitParameter("SitesPool");//这个是得到你的web.xml配置文件里面这个servlet的<init-param>的值
if(s != null)
{
pool = s;
locks.put(s, new Object());
try
{
//这段代码是读取路径是s的文件
FileReader filereader = new FileReader(lookupFile(s));
BufferedReader bufferedreader = new BufferedReader(filereader);
do
{
String s1;
if((s1 = bufferedreader.readLine()) == null)
{
break;
}
s1 = s1.trim();
if(s1.length() > 0 && s1.charAt(0) != '#' && !s1.startsWith("//"))
{
、、把文件里面的元素加入到sites里面
sites.addElement(s1);
}
} while(true);
bufferedreader.close();
filereader.close();
}
catch(Exception exception) { }
}
}
//这个方法是处理页面form的post请求
public void doPost(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws ServletException, IOException
{
String s = getSite(httpservletrequest, "true".equals(getInitParameter("StickSession")));
String s4 = "";
if(s.indexOf("?") <= 0)
{
String s1 = httpservletrequest.getQueryString();
if(s1 != null)
{
s = s + "?" + s1;
}
}
try
{
for(Enumeration enumeration = httpservletrequest.getParameterNames(); enumeration.hasMoreElements();)
{
String s2 = (String)enumeration.nextElement();
if(s4.length() > 0)
{
s4 = s4 + "&";
}
s4 = s4 + s2 + "=" + URLEncoder.encode(httpservletrequest.getParameter(s2));
}
URL url = new URL(s);
//这段代码应该是得到这个URL的内容,下面几句set方法是设置不同的属性
URLConnection urlconnection = url.openConnection();
urlconnection.setDoInput(true);
urlconnection.setDoOutput(true);
urlconnection.setUseCaches(false);
urlconnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
Enumeration enumeration1 = httpservletrequest.getHeaderNames();
do
{
if(!enumeration1.hasMoreElements())
{
break;
}
String s3 = (String)enumeration1.nextElement();
if(!s3.equals("Content-Type"))
{
urlconnection.setRequestProperty(s3, httpservletrequest.getHeader(s3));
}
} while(true);
//这几句应该是在写Cookie
Cookie acookie[] = httpservletrequest.getCookies();
if(acookie != null)
{
for(int i = 1; i < acookie.length; i++)
{
urlconnection.setRequestProperty("Set-Cookie" + i, acookie[i - 1].getName() + "=" + acookie[i - 1].getValue());
}
}
DataOutputStream dataoutputstream = new DataOutputStream(urlconnection.getOutputStream());//dataoutputstream 就是得到的url的内容
dataoutputstream.writeBytes(s4);
dataoutputstream.flush();
dataoutputstream.close();
InputStream inputstream = urlconnection.getInputStream();
httpservletresponse.setContentType(urlconnection.getContentType());
rewriteStreams(inputstream, httpservletresponse.getOutputStream());
inputstream.close();
}
catch(Exception exception)
{
)
}
}
//这个是处理页面form的get请求
public void doGet(HttpServletRequest httpservletrequest, HttpServletResponse httpservletresponse)
throws ServletException, IOException
{
String s = getSite(httpservletrequest, "true".equals(getInitParameter("StickSession")));
if(s.indexOf("?") <= 0)
{
String s1 = httpservletrequest.getQueryString();
if(s1 != null)
{
s = s + "?" + s1;
}
}
HttpServletResponse _tmp = httpservletresponse;
httpservletresponse.setStatus(302);
httpservletresponse.setHeader("Location", s);
} public String getServletInfo()
{
return "Redirect: load balance for servlets (c) Coldbeans 1999-2007 ver. 2.9";
} private String getSite(HttpServletRequest httpservletrequest, boolean flag)
{
int i;
HttpSession httpsession;
httpsession = httpservletrequest.getSession();
Object obj1 = null;
if(flag && httpsession != null)
{
String s = (String)httpsession.getAttribute("StickSession");
if(s != null)
{
return s;
}
}
if((i = sites.size()) == 0)
{
return "";
}
if(pool == null)
{
return "";
}
Object obj = locks.get(pool);
Object obj2 = obj;
JVM INSTR monitorenter ;
String s1;
current++;
if(current >= i)
{
current = 0;
}
if(current >= 3)
{
current = 0;
}
s1 = (String)sites.elementAt(current);
if(httpsession != null)
{
httpsession.setAttribute("StickSession", httpsession);
}
return s1;
Exception exception;
exception;
throw exception;
}
private void rewriteStreams(InputStream inputstream, OutputStream outputstream)
throws IOException
{
byte abyte0[] = new byte[8192];
int i;
while((i = inputstream.read(abyte0)) > 0)
{//输出output stream
outputstream.write(abyte0, 0, i);
}
}
//这段代码是根据路径s取得文件
private File lookupFile(String s)
{
File file = new File(s);
return file.isAbsolute() ? file : new File(context.getRealPath("/"), s);
}
}