diff --git a/pom.xml b/pom.xml
index 90bf39ece..fdf282ea5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,14 +9,14 @@
4.4.0
- 1.8
+ 21
4.4.6
- 2.4.2
+ 3.5.6
5.2.2
1.0.6
1.4.20
7.5.5
- 3.2.0
+ 3.22.0
16.02-2.01
1.0
2.7.7
diff --git a/server/pom.xml b/server/pom.xml
index 92a6a8b75..e4601a6f1 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -44,17 +44,8 @@
org.springframework.boot
spring-boot-starter-web
-
-
- org.springframework.boot
- spring-boot-starter-tomcat
-
-
-
-
- org.springframework.boot
- spring-boot-starter-jetty
+
org.springframework.boot
spring-boot-starter-freemarker
@@ -100,9 +91,8 @@
- org.apache.httpcomponents
- httpclient
- ${httpcomponents.version}
+ org.apache.httpcomponents.client5
+ httpclient5
@@ -327,6 +317,14 @@
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.11.0
+
+ true
+
+
org.springframework.boot
spring-boot-maven-plugin
diff --git a/server/src/main/java/cn/keking/config/ConfigRefreshComponent.java b/server/src/main/java/cn/keking/config/ConfigRefreshComponent.java
index 3482c5144..d9a11f73b 100644
--- a/server/src/main/java/cn/keking/config/ConfigRefreshComponent.java
+++ b/server/src/main/java/cn/keking/config/ConfigRefreshComponent.java
@@ -5,7 +5,7 @@
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
diff --git a/server/src/main/java/cn/keking/service/FileConvertQueueTask.java b/server/src/main/java/cn/keking/service/FileConvertQueueTask.java
index e5d624853..3da38d3cf 100644
--- a/server/src/main/java/cn/keking/service/FileConvertQueueTask.java
+++ b/server/src/main/java/cn/keking/service/FileConvertQueueTask.java
@@ -8,7 +8,7 @@
import org.springframework.stereotype.Service;
import org.springframework.ui.ExtendedModelMap;
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
import java.util.concurrent.TimeUnit;
/**
diff --git a/server/src/main/java/cn/keking/service/FileHandlerService.java b/server/src/main/java/cn/keking/service/FileHandlerService.java
index 2444bc750..caecdccc6 100644
--- a/server/src/main/java/cn/keking/service/FileHandlerService.java
+++ b/server/src/main/java/cn/keking/service/FileHandlerService.java
@@ -31,7 +31,7 @@
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.URLDecoder;
diff --git a/server/src/main/java/cn/keking/service/OfficePluginManager.java b/server/src/main/java/cn/keking/service/OfficePluginManager.java
index 1a01128f2..7e7033057 100644
--- a/server/src/main/java/cn/keking/service/OfficePluginManager.java
+++ b/server/src/main/java/cn/keking/service/OfficePluginManager.java
@@ -15,8 +15,8 @@
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
+import jakarta.annotation.PostConstruct;
+import jakarta.annotation.PreDestroy;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
diff --git a/server/src/main/java/cn/keking/service/cache/impl/CacheServiceJDKImpl.java b/server/src/main/java/cn/keking/service/cache/impl/CacheServiceJDKImpl.java
index f3430caed..2f52c070f 100644
--- a/server/src/main/java/cn/keking/service/cache/impl/CacheServiceJDKImpl.java
+++ b/server/src/main/java/cn/keking/service/cache/impl/CacheServiceJDKImpl.java
@@ -7,7 +7,7 @@
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.stereotype.Service;
-import javax.annotation.PostConstruct;
+import jakarta.annotation.PostConstruct;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
diff --git a/server/src/main/java/cn/keking/utils/DownloadUtils.java b/server/src/main/java/cn/keking/utils/DownloadUtils.java
index 5f8914bfb..c42a53f60 100644
--- a/server/src/main/java/cn/keking/utils/DownloadUtils.java
+++ b/server/src/main/java/cn/keking/utils/DownloadUtils.java
@@ -6,9 +6,9 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import io.mola.galimatias.GalimatiasParseException;
import org.apache.commons.io.FileUtils;
-import org.apache.http.client.HttpClient;
-import org.apache.http.impl.client.DefaultRedirectStrategy;
-import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.impl.DefaultRedirectStrategy;
+import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpMethod;
diff --git a/server/src/main/java/cn/keking/utils/WebUtils.java b/server/src/main/java/cn/keking/utils/WebUtils.java
index de14fb642..53cedb888 100644
--- a/server/src/main/java/cn/keking/utils/WebUtils.java
+++ b/server/src/main/java/cn/keking/utils/WebUtils.java
@@ -1,16 +1,16 @@
package cn.keking.utils;
import io.mola.galimatias.GalimatiasParseException;
+import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.springframework.util.Base64Utils;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.util.HtmlUtils;
-import javax.servlet.ServletRequest;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
@@ -290,7 +290,7 @@ public static String decodeBase64String(String source, Charset charsets) {
* https://github.com/kekingcn/kkFileView/pull/340
*/
try {
- return new String(Base64Utils.decodeFromString(source.replaceAll(" ", "+").replaceAll("\n", "")), charsets);
+ return new String(Base64.decodeBase64(source.replaceAll(" ", "+").replaceAll("\n", "")), charsets);
} catch (Exception e) {
if (e.getMessage().toLowerCase().contains(BASE64_MSG)) {
LOGGER.error("url解码异常,接入方法错误未使用BASE64");
diff --git a/server/src/main/java/cn/keking/web/controller/FileController.java b/server/src/main/java/cn/keking/web/controller/FileController.java
index 0ea6a9140..609d35ea6 100644
--- a/server/src/main/java/cn/keking/web/controller/FileController.java
+++ b/server/src/main/java/cn/keking/web/controller/FileController.java
@@ -19,9 +19,9 @@
import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO;
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
diff --git a/server/src/main/java/cn/keking/web/controller/OnlinePreviewController.java b/server/src/main/java/cn/keking/web/controller/OnlinePreviewController.java
index bd324d576..2161e23a7 100644
--- a/server/src/main/java/cn/keking/web/controller/OnlinePreviewController.java
+++ b/server/src/main/java/cn/keking/web/controller/OnlinePreviewController.java
@@ -11,9 +11,9 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import fr.opensagres.xdocreport.core.io.IOUtils;
import org.apache.commons.codec.binary.Base64;
-import org.apache.http.client.HttpClient;
-import org.apache.http.impl.client.DefaultRedirectStrategy;
-import org.apache.http.impl.client.HttpClientBuilder;
+import org.apache.hc.client5.http.classic.HttpClient;
+import org.apache.hc.client5.http.impl.DefaultRedirectStrategy;
+import org.apache.hc.client5.http.impl.classic.HttpClientBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpMethod;
@@ -28,8 +28,8 @@
import org.springframework.web.client.RequestCallback;
import org.springframework.web.client.RestTemplate;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
diff --git a/server/src/main/java/cn/keking/web/filter/AttributeSetFilter.java b/server/src/main/java/cn/keking/web/filter/AttributeSetFilter.java
index 5f2088771..1688d504f 100644
--- a/server/src/main/java/cn/keking/web/filter/AttributeSetFilter.java
+++ b/server/src/main/java/cn/keking/web/filter/AttributeSetFilter.java
@@ -4,8 +4,8 @@
import cn.keking.config.WatermarkConfigConstants;
import cn.keking.utils.KkFileUtils;
-import javax.servlet.*;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.*;
+import jakarta.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
diff --git a/server/src/main/java/cn/keking/web/filter/BaseUrlFilter.java b/server/src/main/java/cn/keking/web/filter/BaseUrlFilter.java
index f7a0ee8e3..fdb807d2b 100644
--- a/server/src/main/java/cn/keking/web/filter/BaseUrlFilter.java
+++ b/server/src/main/java/cn/keking/web/filter/BaseUrlFilter.java
@@ -4,8 +4,8 @@
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.context.request.RequestContextHolder;
-import javax.servlet.*;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.*;
+import jakarta.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
diff --git a/server/src/main/java/cn/keking/web/filter/ChinesePathFilter.java b/server/src/main/java/cn/keking/web/filter/ChinesePathFilter.java
index 5e126121c..c628d900c 100644
--- a/server/src/main/java/cn/keking/web/filter/ChinesePathFilter.java
+++ b/server/src/main/java/cn/keking/web/filter/ChinesePathFilter.java
@@ -1,7 +1,7 @@
package cn.keking.web.filter;
-import javax.servlet.*;
+import jakarta.servlet.*;
import java.io.IOException;
/**
diff --git a/server/src/main/java/cn/keking/web/filter/SecurityFilterProxy.java b/server/src/main/java/cn/keking/web/filter/SecurityFilterProxy.java
index a132c2b22..fc8b835b9 100644
--- a/server/src/main/java/cn/keking/web/filter/SecurityFilterProxy.java
+++ b/server/src/main/java/cn/keking/web/filter/SecurityFilterProxy.java
@@ -3,10 +3,10 @@
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.OncePerRequestFilter;
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
diff --git a/server/src/main/java/cn/keking/web/filter/TrustDirFilter.java b/server/src/main/java/cn/keking/web/filter/TrustDirFilter.java
index 431bb309e..f5c5c1f49 100644
--- a/server/src/main/java/cn/keking/web/filter/TrustDirFilter.java
+++ b/server/src/main/java/cn/keking/web/filter/TrustDirFilter.java
@@ -10,7 +10,7 @@
import org.springframework.util.FileCopyUtils;
import org.springframework.util.StringUtils;
-import javax.servlet.*;
+import jakarta.servlet.*;
import java.io.IOException;
import java.net.URL;
import java.net.URLDecoder;
diff --git a/server/src/main/java/cn/keking/web/filter/TrustHostFilter.java b/server/src/main/java/cn/keking/web/filter/TrustHostFilter.java
index e40120471..6282e162c 100644
--- a/server/src/main/java/cn/keking/web/filter/TrustHostFilter.java
+++ b/server/src/main/java/cn/keking/web/filter/TrustHostFilter.java
@@ -5,12 +5,12 @@
import java.io.IOException;
import java.nio.charset.StandardCharsets;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.core.io.ClassPathResource;
diff --git a/server/src/main/java/cn/keking/web/filter/UrlCheckFilter.java b/server/src/main/java/cn/keking/web/filter/UrlCheckFilter.java
index 572486f91..e2d584e75 100644
--- a/server/src/main/java/cn/keking/web/filter/UrlCheckFilter.java
+++ b/server/src/main/java/cn/keking/web/filter/UrlCheckFilter.java
@@ -2,9 +2,9 @@
import org.apache.commons.lang3.StringUtils;
-import javax.servlet.*;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.*;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
/**