「java动态代理ip」java动态代理是什么

博主:adminadmin 2022-12-01 02:16:06 51

本篇文章给大家谈谈java动态代理ip,以及java动态代理是什么对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java动态代理实现步骤?

您好,提问者:

1、可以使用apache开发的HttpClient.jar来实现。

2、如果纯Java代码,首先创建一个Proxy类来进行指定协议,比如:Proxy.HTTP,构造方法请见JDK API文档,另外指定一个SocketAddress的ip和端口,一般http端口为80。

接下来就是访问Http网站了,使用URL url = new URL("xxx");地址,然后使用HttpConnection对象,把Proxy指定进去就可以了。

Java中动态代理是什么意思

举个例子吧,比如说你暗恋一个小美女,你给她写了个情书,你不好意思直接给她,就让我转给她。

我也暗恋这个小美女,我收到你的情书以后,我送你的情书之前跟小美女说你这个人人品差长得丑还没钱,然后再把你的情书给她。

动态代理就是这个过程。本来是你和小美女之间的关系,但中间让我转达一下,我在转达的前后可以干一些自己的事情。更具体的说,就是A调用B,但不直接调用,A通过调用C,C再调用B,C在调用B的前后可以做一些自己的事情,比如说打日志、权限验证等,这样就把业务代码与系统代码分开,同时减少了A和B之间的耦合。

动态代理的经典应用是Spring AOP。有兴趣可以学学。

java静态代理与动态代理的区别

JAVA的静态代理与动态代理比较

1.静态代理类:

由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。动态代理类:在程序运行时,运用反射机制动态创建而成。

由此可见,代理类可以为委托类预处理消息、把消息转发给委托类和事后处理消息等。

例程1 HelloService.java

package proxy;

import java.util.Date;

public interface HelloService{

public String echo(String msg);

public Date getTime();

}

2.动态代理类

与静态代理类对照的是动态代理类,动态代理类的字节码在程序运行时由Java反射机制动态生成,无需程序员手工编写它的源代码。动态代理类不仅简化了编程工作,而且提高了软件系统的可扩展性,因为Java 反射机制可以生成任意类型的动态代理类。java.lang.reflect 包中的Proxy类和InvocationHandler 接口提供了生成动态代理类的能力。

Proxy类提供了创建动态代理类及其实例的静态方法。

(1)getProxyClass()静态方法负责创建动态代理类,它的完整定义如下:

public static Class? getProxyClass(ClassLoader loader, Class?[] interfaces) throws IllegalArgumentException

参数loader 指定动态代理类的类加载器,参数interfaces 指定动态代理类需要实现的所有接口。

(2)newProxyInstance()静态方法负责创建动态代理类的实例,它的完整定义如下:

public static Object newProxyInstance(ClassLoader loader, Class?[] interfaces, InvocationHandler handler) throws

IllegalArgumentException

参数loader 指定动态代理类的类加载器,参数interfaces 指定动态代理类需要实现的所有接口,参数handler 指定与动态代理类关联的 InvocationHandler 对象。

以下两种方式都创建了实现Foo接口的动态代理类的实例:

/**** 方式一 ****/

//创建InvocationHandler对象

InvocationHandler handler = new MyInvocationHandler(...);

//创建动态代理类

Class proxyClass = Proxy.getProxyClass(Foo.class.getClassLoader(), new Class[] { Foo.class });

//创建动态代理类的实例

Foo foo = (Foo) proxyClass.getConstructor(new Class[] { InvocationHandler.class }).

newInstance(new Object[] { handler });

/**** 方式二 ****/

//创建InvocationHandler对象

InvocationHandler handler = new MyInvocationHandler(...);

//直接创建动态代理类的实例

Foo foo = (Foo) Proxy.newProxyInstance(Foo.class.getClassLoader(),new Class[] { Foo.class }, handler);

由Proxy类的静态方法创建的动态代理类具有以下特点:

动态代理类是public、final和非抽象类型的;

动态代理类继承了java.lang.reflect.Proxy类;

动态代理类的名字以“$Proxy”开头;

动态代理类实现getProxyClass()和newProxyInstance()方法中参数interfaces指定的所有接口;

Java 编写IP动态代理

package com.tan.test;

import java.io.BufferedInputStream;

import java.io.IOException;

import java.net.URL;

import java.net.URLConnection;

import org.apache.log4j.Logger;

public class TestProxyIp {

private static final Logger log = Logger.getLogger(TestProxyIp.class);

public static void main(String[] args) throws IOException {

System.setProperty("http.maxRedirects", "50");

System.getProperties().setProperty("proxySet", "true");

// 如果不设置,只要代理IP和代理端口正确,此项不设置也可以

String ip = "59.175.192.126";

ip = "221.214.180.130";

ip = "122.224.171.91";

ip = "58.221.213.166";

ip = "202.106.16.36";

ip = "121.8.191.34";

ip = "222.208.242.30";

ip = "219.239.90.85";

ip = "60.31.177.188";

System.getProperties().setProperty("http.proxyHost", ip);

System.getProperties().setProperty("http.proxyPort", "3128");

//确定代理是否设置成功

log.info(getHtml(""));

//log.info(getHtml(""));

}

private static String getHtml(String address){

StringBuffer html = new StringBuffer();

String result = null;

try{

URL url = new URL(address);

URLConnection conn = url.openConnection();

conn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 7.0; NT 5.1; GTB5; .NET CLR 2.0.50727; CIBA)");

BufferedInputStream in = new BufferedInputStream(conn.getInputStream());

try{

String inputLine;

byte[] buf = new byte[4096];

int bytesRead = 0;

while (bytesRead = 0) {

inputLine = new String(buf, 0, bytesRead, "UTF-8");

/*if (!"".equals(inputLine)) {

System.out.println(inputLine);

}*/

html.append(inputLine);

bytesRead = in.read(buf);

inputLine = null;

}

buf = null;

}finally{

in.close();

conn = null;

url = null;

}

//result = new String(html.toString().trim().getBytes("ISO-8859-1"), "UTF-8").toLowerCase();

//result=new String(html.toString().trim().getBytes("ISO-8859-1"), "GBK");

}catch (Exception e) {

e.printStackTrace();

return null;

}/*finally{

html = null;

}*/

return html.toString();

}

}

但是找不到有用的动态ip。

关于java动态代理ip和java动态代理是什么的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-01,除非注明,否则均为首码项目网原创文章,转载请注明出处。