问题描述
这段代码是网上搜的,我不明白他这个是怎么实现代理的?我之前看过一个例子是用socket来做的,用了某个端口,这个servlet的代码能一直代理访问用户需要的url?不理解。。求指导。。。非常谢谢
importjava.io.*; importjava.net.*; importjavax.servlet.*; importjavax.servlet.http.*; publicclassProxyextendsHttpServlet {publicvoiddoGet(HttpServletRequestrequest, HttpServletResponseresponse) throwsServletException,IOException {Stringquery=null; response.setContentType("text/html"); PrintWriterout=response.getWriter(); query=request.getParameter("URL"); if(query==null) {response.sendError(HttpServletResponse.SC_BAD_REQUEST, "MissingURLparameter"); return; } try {query=URLDecoder.decode(query); } catch(Exceptionexception) {response.sendError(HttpServletResponse.SC_BAD_REQUEST, "URLdecodeerror"+exception); return; } try {URLurl=newURL(query); BufferedReaderin=newBufferedReader(new InputStreamReader(url.openStream())); Stringline; while((line=in.readLine())!=null) out.println(line); out.flush(); } catch(IOExceptionexception) {response.sendError(HttpServletResponse.SC_NOT_FOUND, "Exception:"+exception); } } }
解决方案
解决方案二:
servlet根据你传入的连接去请求这个连接,然后把这里连接输出,这样就是代理了》。
解决方案三:
代理的意思我懂的,但是doget这个类是用户访问Proxy这个webapp时,才会响应的吧,那他的requesturl指的是什么呢?难道访问了Proxy这个程序后,就能控制之后所有的url请求都走这个代理?还是不理解。。谢谢。。