原博客: Java如何使用Jetty实现网络通信 (techdatafuture.com) 里面会持续更新技术文章
Jetty是一个开源的基于Java的Web服务器和容器,它可以作为开发和部署Java Web应用程序的嵌入式服务器,也可以作为独立的服务器。
优点:
- 轻量级:Jetty是一个轻量级的服务器,它的内存占用量相对较小,适合用于部署资源受限的环境。
- 高性能:Jetty具有高性能的特点,可以支持大量的并发连接。
- 可嵌入性:Jetty可以嵌入到Java应用程序中,使得应用程序可以通过Jetty来提供网络服务。
- 灵活性:Jetty支持各种类型的网络通信协议和传输方式,如HTTP、WebSocket、XML-RPC等。
- 可扩展性:Jetty提供了丰富的扩展机制,可以通过插件和模块来扩展功能。
缺点:
- 学习曲线较陡:对于初学者来说,如果没有之前的Web服务开发经验,可能需要花费一些时间来学习和理解Jetty的使用。
- 配置复杂:在一些复杂的场景下,Jetty的配置可能比较繁琐。
以下是使用Jetty实现网络通信的Java样例代码,包括客户端和服务端的代码。
首先,需要在pom.xml文件中添加Jetty的依赖:
org.eclipse.jetty jetty-server 9.4.40.v20210413接下来,我们分别来实现客户端和服务端的代码。
客户端代码:
import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.api.ContentResponse; import org.eclipse.jetty.client.api.Request; import org.eclipse.jetty.http.HttpMethod;
public class JettyClientExample { public static void main(String[] args) throws Exception { HttpClient httpClient = new HttpClient(); httpClient.start();
Request request = httpClient.newRequest("http://localhost:8080")
.method(HttpMethod.GET);
ContentResponse response = request.send();
System.out.println(response.getContentAsString());
httpClient.stop();
}
}
服务端代码:
import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.AbstractHandler;
import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;
public class JettyServerExample { public static void main(String[] args) throws Exception { Server server = new Server(8080); server.setHandler(new HelloHandler());
server.start();
server.join();
}
public static class HelloHandler extends AbstractHandler {
@Override
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/html; charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
baseRequest.setHandled(true);
response.getWriter().println("<h1>Hello, Jetty!</h1>");
}
}
}
以上示例代码中,客户端使用Jetty的HttpClient发送 HTTP GET 请求到服务端,服务端使用Jetty的Server和Handler来处理请求,并响应一个简单的HTML页面。
注意:
- 示例中的服务端代码使用了Jetty的抽象处理器(AbstractHandler),可以根据自己的需求来实现自定义的处理器。
- 运行时需要确保本地8080端口没有被占用。