美文网首页
Java不到10行代码做个简单的反向代理服务器(一)

Java不到10行代码做个简单的反向代理服务器(一)

作者: 冰鱼飞鸟 | 来源:发表于2018-08-27 20:39 被阅读0次

从最简单的考虑我们只需要:1.一个servlet容器。2.处理请求转发的servlet。
这里使用内嵌Jetty + smiley-http-proxy-servlet。

pom.xml

<dependencies>
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-server</artifactId>
        <version>9.4.11.v20180605</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-servlet</artifactId>
        <version>9.4.11.v20180605</version>
    </dependency>
    <dependency>
        <groupId>org.mitre.dsmiley.httpproxy</groupId>
        <artifactId>smiley-http-proxy-servlet</artifactId>
        <version>1.10</version>
    </dependency>
  </dependencies>

App.java

public class App {
    public static void main(String[] args) throws Exception {
        Server server = new Server(8080);
        ServletContextHandler servletContextHandler = new ServletContextHandler(server, "/proxy");
        
        HttpServlet proxyServlet = new ProxyServlet();
        ServletHolder servletHolder = new ServletHolder();
        servletHolder.setServlet(proxyServlet);
        servletHolder.setInitParameter("targetUri", "https://www.baidu.com");
        servletContextHandler.addServlet(servletHolder, "/baidu/*");
        
        server.start();
    }
}

然后来测试一下
浏览器输入
http://localhost:8080/proxy/baidu
嗯跳到了百度首页,
输入http://localhost:8080/proxy/baidu/balabala
还是百度的页面。

站在巨人的肩上我们只需要不到十行代码就可以实现一个简易版反向代理服务器。
嗯下一步打算扩展成可配置,代理多个地址的。

相关文章

网友评论

      本文标题:Java不到10行代码做个简单的反向代理服务器(一)

      本文链接:https://www.haomeiwen.com/subject/ccitwftx.html