哪位大哥帮我将以下代码加一些简单的注释,我是新手
有些地方看不懂,谢谢了=======================================================================================================
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 = "&copy; <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("&copy; <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);
    }
}==================================================================================================

解决方案 »

  1.   

    这个类就是一个servlet 关于servlet你可以通过这篇博客了解一下:
    七个问题全面理解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 = "&copy; <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("&copy; <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);
        }