diff --git a/hutool-http/pom.xml b/hutool-http/pom.xml
index 412f473cb..1d47fecfe 100755
--- a/hutool-http/pom.xml
+++ b/hutool-http/pom.xml
@@ -37,10 +37,8 @@
5.4.1
4.5.14
4.12.0
-
- 2.2.36.Final
-
- 9.4.56.v20240826
+ 2.3.18.Final
+ 12.0.19
9.0.97
1.4.3
@@ -85,13 +83,6 @@
5.0.0
true
-
- javax.servlet
- javax.servlet-api
- 4.0.1
- provided
- true
-
diff --git a/hutool-http/src/main/java/cn/hutool/v7/http/server/engine/jetty/JettyEngine.java b/hutool-http/src/main/java/cn/hutool/v7/http/server/engine/jetty/JettyEngine.java
index ad9037eb7..597a6a387 100644
--- a/hutool-http/src/main/java/cn/hutool/v7/http/server/engine/jetty/JettyEngine.java
+++ b/hutool-http/src/main/java/cn/hutool/v7/http/server/engine/jetty/JettyEngine.java
@@ -36,9 +36,6 @@ import javax.net.ssl.SSLContext;
public class JettyEngine extends AbstractServerEngine {
private Server server;
- /**
- * 由于Jetty9和以上版本中接口实现不同,此处根据不同版本做兼容自定义
- */
private Handler jettyHandler;
/**
@@ -112,7 +109,7 @@ public class JettyEngine extends AbstractServerEngine {
final Server server = new Server(threadPool);
server.addConnector(createConnector(server));
server.setHandler(ObjUtil.defaultIfNull(this.jettyHandler,
- () -> new Jetty9Handler(this.handler)));
+ () -> new JettyHandler(this.handler)));
this.server = server;
}
diff --git a/hutool-http/src/main/java/cn/hutool/v7/http/server/engine/jetty/Jetty9Handler.java b/hutool-http/src/main/java/cn/hutool/v7/http/server/engine/jetty/JettyHandler.java
similarity index 58%
rename from hutool-http/src/main/java/cn/hutool/v7/http/server/engine/jetty/Jetty9Handler.java
rename to hutool-http/src/main/java/cn/hutool/v7/http/server/engine/jetty/JettyHandler.java
index 0ddec3c01..89e42e464 100644
--- a/hutool-http/src/main/java/cn/hutool/v7/http/server/engine/jetty/Jetty9Handler.java
+++ b/hutool-http/src/main/java/cn/hutool/v7/http/server/engine/jetty/JettyHandler.java
@@ -17,20 +17,17 @@
package cn.hutool.v7.http.server.engine.jetty;
import cn.hutool.v7.http.server.handler.HttpHandler;
-import cn.hutool.v7.http.server.servlet.JavaxServletRequest;
-import cn.hutool.v7.http.server.servlet.JavaxServletResponse;
+import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.Request;
-import org.eclipse.jetty.server.handler.AbstractHandler;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import org.eclipse.jetty.server.Response;
+import org.eclipse.jetty.util.Callback;
/**
- * Jetty9版本使用的Handler
+ * Jetty版本使用的Handler
*
* @author Looly
*/
-public class Jetty9Handler extends AbstractHandler {
+public class JettyHandler extends Handler.Abstract {
private final HttpHandler handler;
@@ -39,13 +36,13 @@ public class Jetty9Handler extends AbstractHandler {
*
* @param handler 处理器
*/
- public Jetty9Handler(final HttpHandler handler) {
+ public JettyHandler(final HttpHandler handler) {
this.handler = handler;
}
@Override
- public void handle(final String target, final Request baseRequest,
- final HttpServletRequest request, final HttpServletResponse response) {
- handler.handle(new JavaxServletRequest(request), new JavaxServletResponse(response));
+ public boolean handle(Request request, Response response, Callback callback) {
+ handler.handle(new JettyRequest(request), new JettyResponse(response));
+ return true;
}
}
diff --git a/hutool-http/src/main/java/cn/hutool/v7/http/server/engine/jetty/JettyRequest.java b/hutool-http/src/main/java/cn/hutool/v7/http/server/engine/jetty/JettyRequest.java
new file mode 100644
index 000000000..5e0dea5dd
--- /dev/null
+++ b/hutool-http/src/main/java/cn/hutool/v7/http/server/engine/jetty/JettyRequest.java
@@ -0,0 +1,61 @@
+package cn.hutool.v7.http.server.engine.jetty;
+
+import cn.hutool.v7.http.server.handler.ServerRequest;
+import org.eclipse.jetty.http.HttpFields;
+import org.eclipse.jetty.io.Content;
+import org.eclipse.jetty.server.Request;
+
+import java.io.InputStream;
+
+/**
+ * Jetty请求对象包装
+ *
+ * @author looly
+ */
+public class JettyRequest implements ServerRequest {
+
+ private final Request request;
+
+ /**
+ * 构造
+ *
+ * @param request Jetty请求对象
+ */
+ public JettyRequest(Request request) {
+ this.request = request;
+ }
+
+ @Override
+ public String getMethod() {
+ return request.getMethod();
+ }
+
+ @Override
+ public String getPath() {
+ return Request.getPathInContext(request);
+ }
+
+ @Override
+ public String getQuery() {
+ return request.getHttpURI().getQuery();
+ }
+
+ @Override
+ public String getHeader(String name) {
+ return request.getHeaders().get(name);
+ }
+
+ /**
+ * 获取所有请求头
+ *
+ * @return 请求头
+ */
+ public HttpFields getHeaders() {
+ return request.getHeaders();
+ }
+
+ @Override
+ public InputStream getBodyStream() {
+ return Content.Source.asInputStream(request);
+ }
+}
diff --git a/hutool-http/src/main/java/cn/hutool/v7/http/server/engine/jetty/JettyResponse.java b/hutool-http/src/main/java/cn/hutool/v7/http/server/engine/jetty/JettyResponse.java
new file mode 100644
index 000000000..cf3eb6051
--- /dev/null
+++ b/hutool-http/src/main/java/cn/hutool/v7/http/server/engine/jetty/JettyResponse.java
@@ -0,0 +1,62 @@
+package cn.hutool.v7.http.server.engine.jetty;
+
+import cn.hutool.v7.http.server.handler.ServerResponse;
+import org.eclipse.jetty.io.Content;
+import org.eclipse.jetty.server.Response;
+
+import java.io.OutputStream;
+import java.nio.charset.Charset;
+
+/**
+ * Jetty响应对象
+ *
+ * @author looly
+ */
+public class JettyResponse implements ServerResponse {
+
+ private Charset charset;
+ private final Response response;
+
+ /**
+ * 构造
+ *
+ * @param response Jetty响应对象
+ */
+ public JettyResponse(Response response) {
+ this.response = response;
+ }
+
+ @Override
+ public JettyResponse setStatus(int statusCode) {
+ response.setStatus(statusCode);
+ return this;
+ }
+
+ @Override
+ public JettyResponse setCharset(Charset charset) {
+ this.charset = charset;
+ return this;
+ }
+
+ @Override
+ public Charset getCharset() {
+ return this.charset;
+ }
+
+ @Override
+ public JettyResponse addHeader(String header, String value) {
+ response.getHeaders().add(header, value);
+ return this;
+ }
+
+ @Override
+ public JettyResponse setHeader(String header, String value) {
+ response.getHeaders().put(header, value);
+ return this;
+ }
+
+ @Override
+ public OutputStream getOutputStream() {
+ return Content.Sink.asOutputStream(response);
+ }
+}
diff --git a/hutool-http/src/main/java/cn/hutool/v7/http/server/engine/jetty/package-info.java b/hutool-http/src/main/java/cn/hutool/v7/http/server/engine/jetty/package-info.java
index f914d7d2b..498fbee68 100644
--- a/hutool-http/src/main/java/cn/hutool/v7/http/server/engine/jetty/package-info.java
+++ b/hutool-http/src/main/java/cn/hutool/v7/http/server/engine/jetty/package-info.java
@@ -15,7 +15,7 @@
*/
/**
- * Jetty9引擎实现
+ * Jetty引擎实现
*
* @author Looly
*/