diff --git a/buildSrc/src/test/resources/samples/integrationtest/withpropdeps/build.gradle b/buildSrc/src/test/resources/samples/integrationtest/withpropdeps/build.gradle index cc4b661e..07840f03 100644 --- a/buildSrc/src/test/resources/samples/integrationtest/withpropdeps/build.gradle +++ b/buildSrc/src/test/resources/samples/integrationtest/withpropdeps/build.gradle @@ -9,7 +9,7 @@ repositories { } dependencies { - optional 'javax.servlet:javax.servlet-api:3.1.0' + optional 'jakarta.servlet:jakarta.servlet-api:5.0.0' testImplementation platform('org.junit:junit-bom:5.8.1') testImplementation 'org.junit.jupiter:junit-jupiter-api' testImplementation 'org.junit.jupiter:junit-jupiter-engine' diff --git a/buildSrc/src/test/resources/samples/integrationtest/withpropdeps/src/integration-test/java/sample/TheTest.java b/buildSrc/src/test/resources/samples/integrationtest/withpropdeps/src/integration-test/java/sample/TheTest.java index 0a3761ba..5d2667fe 100644 --- a/buildSrc/src/test/resources/samples/integrationtest/withpropdeps/src/integration-test/java/sample/TheTest.java +++ b/buildSrc/src/test/resources/samples/integrationtest/withpropdeps/src/integration-test/java/sample/TheTest.java @@ -1,7 +1,7 @@ package sample; import org.junit.jupiter.api.Test; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; public class TheTest { @Test diff --git a/buildSrc/src/test/resources/samples/showcase/samples/sgbcs-sample-war/build.gradle b/buildSrc/src/test/resources/samples/showcase/samples/sgbcs-sample-war/build.gradle index 750a5735..648c491b 100644 --- a/buildSrc/src/test/resources/samples/showcase/samples/sgbcs-sample-war/build.gradle +++ b/buildSrc/src/test/resources/samples/showcase/samples/sgbcs-sample-war/build.gradle @@ -4,7 +4,7 @@ plugins { } dependencies { - provided 'javax.servlet:javax.servlet-api' + provided 'jakarta.servlet:jakarta.servlet-api:5.0.0' testImplementation 'commons-io:commons-io:2.11.0' testImplementation 'org.assertj:assertj-core:3.21.0' testImplementation platform('org.junit:junit-bom:5.8.1') diff --git a/buildSrc/src/test/resources/samples/showcase/samples/sgbcs-sample-war/src/main/java/sample/HelloServlet.java b/buildSrc/src/test/resources/samples/showcase/samples/sgbcs-sample-war/src/main/java/sample/HelloServlet.java index e17345a2..c7dfbb16 100644 --- a/buildSrc/src/test/resources/samples/showcase/samples/sgbcs-sample-war/src/main/java/sample/HelloServlet.java +++ b/buildSrc/src/test/resources/samples/showcase/samples/sgbcs-sample-war/src/main/java/sample/HelloServlet.java @@ -18,11 +18,11 @@ package sample; import java.io.IOException; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; @WebServlet("/") public class HelloServlet extends HttpServlet { diff --git a/gradle/dependency-management.gradle b/gradle/dependency-management.gradle index b8e07dd7..3f4e6da8 100644 --- a/gradle/dependency-management.gradle +++ b/gradle/dependency-management.gradle @@ -25,8 +25,8 @@ dependencyManagement { dependency 'com.zaxxer:HikariCP:3.4.5' dependency 'edu.umd.cs.mtc:multithreadedtc:1.01' dependency 'io.lettuce:lettuce-core:6.1.5.RELEASE' - dependency 'javax.annotation:javax.annotation-api:1.3.2' - dependency 'javax.servlet:javax.servlet-api:4.0.1' + dependency 'jakarta.annotation:jakarta.annotation-api:2.0.0' + dependency 'jakarta.servlet:jakarta.servlet-api:5.0.0' dependency 'mysql:mysql-connector-java:8.0.26' dependency 'org.apache.derby:derby:10.14.2.0' dependency 'org.assertj:assertj-core:3.21.0' diff --git a/spring-session-core/spring-session-core.gradle b/spring-session-core/spring-session-core.gradle index 4182f8cf..1adc0e80 100644 --- a/spring-session-core/spring-session-core.gradle +++ b/spring-session-core/spring-session-core.gradle @@ -6,8 +6,8 @@ dependencies { api "org.springframework:spring-jcl" optional "io.projectreactor:reactor-core" - optional "javax.annotation:javax.annotation-api" - optional "javax.servlet:javax.servlet-api" + optional "jakarta.annotation:jakarta.annotation-api" + optional "jakarta.servlet:jakarta.servlet-api" optional "org.springframework:spring-context" optional "org.springframework:spring-jdbc" optional "org.springframework:spring-messaging" diff --git a/spring-session-core/src/main/java/org/springframework/session/config/annotation/web/http/SpringHttpSessionConfiguration.java b/spring-session-core/src/main/java/org/springframework/session/config/annotation/web/http/SpringHttpSessionConfiguration.java index 2d987047..997f1769 100644 --- a/spring-session-core/src/main/java/org/springframework/session/config/annotation/web/http/SpringHttpSessionConfiguration.java +++ b/spring-session-core/src/main/java/org/springframework/session/config/annotation/web/http/SpringHttpSessionConfiguration.java @@ -19,10 +19,10 @@ package org.springframework.session.config.annotation.web.http; import java.util.ArrayList; import java.util.List; -import javax.annotation.PostConstruct; -import javax.servlet.ServletContext; -import javax.servlet.SessionCookieConfig; -import javax.servlet.http.HttpSessionListener; +import jakarta.annotation.PostConstruct; +import jakarta.servlet.ServletContext; +import jakarta.servlet.SessionCookieConfig; +import jakarta.servlet.http.HttpSessionListener; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/spring-session-core/src/main/java/org/springframework/session/security/web/authentication/SpringSessionRememberMeServices.java b/spring-session-core/src/main/java/org/springframework/session/security/web/authentication/SpringSessionRememberMeServices.java index a01ad50c..69f7c726 100644 --- a/spring-session-core/src/main/java/org/springframework/session/security/web/authentication/SpringSessionRememberMeServices.java +++ b/spring-session-core/src/main/java/org/springframework/session/security/web/authentication/SpringSessionRememberMeServices.java @@ -16,9 +16,9 @@ package org.springframework.session.security.web.authentication; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/spring-session-core/src/main/java/org/springframework/session/web/context/AbstractHttpSessionApplicationInitializer.java b/spring-session-core/src/main/java/org/springframework/session/web/context/AbstractHttpSessionApplicationInitializer.java index 20eceb00..db9d70d8 100644 --- a/spring-session-core/src/main/java/org/springframework/session/web/context/AbstractHttpSessionApplicationInitializer.java +++ b/spring-session-core/src/main/java/org/springframework/session/web/context/AbstractHttpSessionApplicationInitializer.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2019 the original author or authors. + * Copyright 2014-2021 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,10 +19,10 @@ package org.springframework.session.web.context; import java.util.Arrays; import java.util.EnumSet; -import javax.servlet.DispatcherType; -import javax.servlet.Filter; -import javax.servlet.FilterRegistration.Dynamic; -import javax.servlet.ServletContext; +import jakarta.servlet.DispatcherType; +import jakarta.servlet.Filter; +import jakarta.servlet.FilterRegistration.Dynamic; +import jakarta.servlet.ServletContext; import org.springframework.context.ApplicationContext; import org.springframework.core.Conventions; diff --git a/spring-session-core/src/main/java/org/springframework/session/web/http/CookieHttpSessionIdResolver.java b/spring-session-core/src/main/java/org/springframework/session/web/http/CookieHttpSessionIdResolver.java index 16327d75..5b491270 100644 --- a/spring-session-core/src/main/java/org/springframework/session/web/http/CookieHttpSessionIdResolver.java +++ b/spring-session-core/src/main/java/org/springframework/session/web/http/CookieHttpSessionIdResolver.java @@ -18,8 +18,8 @@ package org.springframework.session.web.http; import java.util.List; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import org.springframework.session.web.http.CookieSerializer.CookieValue; @@ -32,8 +32,8 @@ import org.springframework.session.web.http.CookieSerializer.CookieValue; * When a session is created, the HTTP response will have a cookie with the specified * cookie name and the value of the session id. The cookie will be marked as a session * cookie, use the context path for the path of the cookie, marked as HTTPOnly, and if - * {@link javax.servlet.http.HttpServletRequest#isSecure()} returns true, the cookie will - * be marked as secure. For example: + * {@link jakarta.servlet.http.HttpServletRequest#isSecure()} returns true, the cookie + * will be marked as secure. For example: * *
  * HTTP/1.1 200 OK
diff --git a/spring-session-core/src/main/java/org/springframework/session/web/http/CookieSerializer.java b/spring-session-core/src/main/java/org/springframework/session/web/http/CookieSerializer.java
index 5d8091a5..1b7324f0 100644
--- a/spring-session-core/src/main/java/org/springframework/session/web/http/CookieSerializer.java
+++ b/spring-session-core/src/main/java/org/springframework/session/web/http/CookieSerializer.java
@@ -18,9 +18,9 @@ package org.springframework.session.web.http;
 
 import java.util.List;
 
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * Strategy for reading and writing a cookie value to the {@link HttpServletResponse}.
diff --git a/spring-session-core/src/main/java/org/springframework/session/web/http/DefaultCookieSerializer.java b/spring-session-core/src/main/java/org/springframework/session/web/http/DefaultCookieSerializer.java
index 522c0c28..f38bc988 100644
--- a/spring-session-core/src/main/java/org/springframework/session/web/http/DefaultCookieSerializer.java
+++ b/spring-session-core/src/main/java/org/springframework/session/web/http/DefaultCookieSerializer.java
@@ -28,9 +28,9 @@ import java.util.List;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -88,7 +88,8 @@ public class DefaultCookieSerializer implements CookieSerializer {
 	private String sameSite = "Lax";
 
 	/*
-	 * @see org.springframework.session.web.http.CookieSerializer#readCookieValues(javax.
+	 * @see
+	 * org.springframework.session.web.http.CookieSerializer#readCookieValues(jakarta.
 	 * servlet.http.HttpServletRequest)
 	 */
 	@Override
diff --git a/spring-session-core/src/main/java/org/springframework/session/web/http/HeaderHttpSessionIdResolver.java b/spring-session-core/src/main/java/org/springframework/session/web/http/HeaderHttpSessionIdResolver.java
index c6d22c25..f4e49445 100644
--- a/spring-session-core/src/main/java/org/springframework/session/web/http/HeaderHttpSessionIdResolver.java
+++ b/spring-session-core/src/main/java/org/springframework/session/web/http/HeaderHttpSessionIdResolver.java
@@ -19,8 +19,8 @@ package org.springframework.session.web.http;
 import java.util.Collections;
 import java.util.List;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * A {@link HttpSessionIdResolver} that uses a header to resolve the session id.
diff --git a/spring-session-core/src/main/java/org/springframework/session/web/http/HttpSessionAdapter.java b/spring-session-core/src/main/java/org/springframework/session/web/http/HttpSessionAdapter.java
index 032b46e7..bd1401f0 100644
--- a/spring-session-core/src/main/java/org/springframework/session/web/http/HttpSessionAdapter.java
+++ b/spring-session-core/src/main/java/org/springframework/session/web/http/HttpSessionAdapter.java
@@ -22,11 +22,11 @@ import java.util.Enumeration;
 import java.util.NoSuchElementException;
 import java.util.Set;
 
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpSessionBindingEvent;
-import javax.servlet.http.HttpSessionBindingListener;
-import javax.servlet.http.HttpSessionContext;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSessionBindingEvent;
+import jakarta.servlet.http.HttpSessionBindingListener;
+import jakarta.servlet.http.HttpSessionContext;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
diff --git a/spring-session-core/src/main/java/org/springframework/session/web/http/HttpSessionIdResolver.java b/spring-session-core/src/main/java/org/springframework/session/web/http/HttpSessionIdResolver.java
index 42b660dd..f7aa4db3 100644
--- a/spring-session-core/src/main/java/org/springframework/session/web/http/HttpSessionIdResolver.java
+++ b/spring-session-core/src/main/java/org/springframework/session/web/http/HttpSessionIdResolver.java
@@ -18,8 +18,8 @@ package org.springframework.session.web.http;
 
 import java.util.List;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * Contract for session id resolution strategies. Allows for session id resolution through
diff --git a/spring-session-core/src/main/java/org/springframework/session/web/http/OnCommittedResponseWrapper.java b/spring-session-core/src/main/java/org/springframework/session/web/http/OnCommittedResponseWrapper.java
index 50663f3e..b9a58013 100644
--- a/spring-session-core/src/main/java/org/springframework/session/web/http/OnCommittedResponseWrapper.java
+++ b/spring-session-core/src/main/java/org/springframework/session/web/http/OnCommittedResponseWrapper.java
@@ -20,14 +20,14 @@ import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.Locale;
 
-import javax.servlet.ServletOutputStream;
-import javax.servlet.WriteListener;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpServletResponseWrapper;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.WriteListener;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponseWrapper;
 
 /**
  * Base class for response wrappers which encapsulate the logic for handling an event when
- * the {@link javax.servlet.http.HttpServletResponse} is committed.
+ * the {@link jakarta.servlet.http.HttpServletResponse} is committed.
  *
  * @author Rob Winch
  * @since 1.0
@@ -84,16 +84,16 @@ abstract class OnCommittedResponseWrapper extends HttpServletResponseWrapper {
 	/**
 	 * Invoke this method to disable invoking
 	 * {@link OnCommittedResponseWrapper#onResponseCommitted()} when the
-	 * {@link javax.servlet.http.HttpServletResponse} is committed. This can be useful in
-	 * the event that Async Web Requests are made.
+	 * {@link jakarta.servlet.http.HttpServletResponse} is committed. This can be useful
+	 * in the event that Async Web Requests are made.
 	 */
 	private void disableOnResponseCommitted() {
 		this.disableOnCommitted = true;
 	}
 
 	/**
-	 * Implement the logic for handling the {@link javax.servlet.http.HttpServletResponse}
-	 * being committed.
+	 * Implement the logic for handling the
+	 * {@link jakarta.servlet.http.HttpServletResponse} being committed.
 	 */
 	protected abstract void onResponseCommitted();
 
@@ -474,8 +474,9 @@ abstract class OnCommittedResponseWrapper extends HttpServletResponseWrapper {
 	/**
 	 * Ensures{@link OnCommittedResponseWrapper#onResponseCommitted()} is invoked before
 	 * calling methods that commit the response. We delegate all methods to the original
-	 * {@link javax.servlet.ServletOutputStream} to ensure that the behavior is as close
-	 * to the original {@link javax.servlet.ServletOutputStream} as possible. See SEC-2039
+	 * {@link jakarta.servlet.ServletOutputStream} to ensure that the behavior is as close
+	 * to the original {@link jakarta.servlet.ServletOutputStream} as possible. See
+	 * SEC-2039
 	 *
 	 * @author Rob Winch
 	 */
diff --git a/spring-session-core/src/main/java/org/springframework/session/web/http/OncePerRequestFilter.java b/spring-session-core/src/main/java/org/springframework/session/web/http/OncePerRequestFilter.java
index b2f1cfc8..83ce258d 100644
--- a/spring-session-core/src/main/java/org/springframework/session/web/http/OncePerRequestFilter.java
+++ b/spring-session-core/src/main/java/org/springframework/session/web/http/OncePerRequestFilter.java
@@ -18,15 +18,15 @@ package org.springframework.session.web.http;
 
 import java.io.IOException;
 
-import javax.servlet.DispatcherType;
-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 javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.DispatcherType;
+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 jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * Allows for easily ensuring that a request is only invoked once per request. This is a
diff --git a/spring-session-core/src/main/java/org/springframework/session/web/http/SessionEventHttpSessionListenerAdapter.java b/spring-session-core/src/main/java/org/springframework/session/web/http/SessionEventHttpSessionListenerAdapter.java
index d0282c6a..cebfba6e 100644
--- a/spring-session-core/src/main/java/org/springframework/session/web/http/SessionEventHttpSessionListenerAdapter.java
+++ b/spring-session-core/src/main/java/org/springframework/session/web/http/SessionEventHttpSessionListenerAdapter.java
@@ -18,10 +18,10 @@ package org.springframework.session.web.http;
 
 import java.util.List;
 
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpSessionEvent;
-import javax.servlet.http.HttpSessionListener;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSessionEvent;
+import jakarta.servlet.http.HttpSessionListener;
 
 import org.springframework.context.ApplicationListener;
 import org.springframework.session.Session;
@@ -79,9 +79,8 @@ public class SessionEventHttpSessionListenerAdapter
 	}
 
 	/*
-	 * @see
-	 * org.springframework.web.context.ServletContextAware#setServletContext(javax.servlet
-	 * .ServletContext)
+	 * @see org.springframework.web.context.ServletContextAware#setServletContext(jakarta.
+	 * servlet.ServletContext)
 	 */
 	@Override
 	public void setServletContext(ServletContext servletContext) {
diff --git a/spring-session-core/src/main/java/org/springframework/session/web/http/SessionRepositoryFilter.java b/spring-session-core/src/main/java/org/springframework/session/web/http/SessionRepositoryFilter.java
index 49346621..186092f6 100644
--- a/spring-session-core/src/main/java/org/springframework/session/web/http/SessionRepositoryFilter.java
+++ b/spring-session-core/src/main/java/org/springframework/session/web/http/SessionRepositoryFilter.java
@@ -20,16 +20,16 @@ import java.io.IOException;
 import java.time.Instant;
 import java.util.List;
 
-import javax.servlet.FilterChain;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequestWrapper;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -39,29 +39,29 @@ import org.springframework.session.Session;
 import org.springframework.session.SessionRepository;
 
 /**
- * Switches the {@link javax.servlet.http.HttpSession} implementation to be backed by a
+ * Switches the {@link jakarta.servlet.http.HttpSession} implementation to be backed by a
  * {@link org.springframework.session.Session}.
  *
  * The {@link SessionRepositoryFilter} wraps the
- * {@link javax.servlet.http.HttpServletRequest} and overrides the methods to get an
- * {@link javax.servlet.http.HttpSession} to be backed by a
+ * {@link jakarta.servlet.http.HttpServletRequest} and overrides the methods to get an
+ * {@link jakarta.servlet.http.HttpSession} to be backed by a
  * {@link org.springframework.session.Session} returned by the
  * {@link org.springframework.session.SessionRepository}.
  *
  * The {@link SessionRepositoryFilter} uses a {@link HttpSessionIdResolver} (default
  * {@link CookieHttpSessionIdResolver}) to bridge logic between an
- * {@link javax.servlet.http.HttpSession} and the
+ * {@link jakarta.servlet.http.HttpSession} and the
  * {@link org.springframework.session.Session} abstraction. Specifically:
  *
  * 
  *
@@ -183,8 +183,8 @@ public class SessionRepositoryFilter extends OncePerRequestFi
 	}
 
 	/**
-	 * A {@link javax.servlet.http.HttpServletRequest} that retrieves the
-	 * {@link javax.servlet.http.HttpSession} using a
+	 * A {@link jakarta.servlet.http.HttpServletRequest} that retrieves the
+	 * {@link jakarta.servlet.http.HttpSession} using a
 	 * {@link org.springframework.session.SessionRepository}.
 	 *
 	 * @author Rob Winch
diff --git a/spring-session-core/src/main/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptor.java b/spring-session-core/src/main/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptor.java
index ce0aeb53..b9152c0a 100644
--- a/spring-session-core/src/main/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptor.java
+++ b/spring-session-core/src/main/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptor.java
@@ -21,7 +21,7 @@ import java.util.EnumSet;
 import java.util.Map;
 import java.util.Set;
 
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
 
 import org.springframework.http.server.ServerHttpRequest;
 import org.springframework.http.server.ServerHttpResponse;
diff --git a/spring-session-core/src/test/java/org/springframework/session/config/annotation/web/http/EnableSpringHttpSessionCustomCookieSerializerTests.java b/spring-session-core/src/test/java/org/springframework/session/config/annotation/web/http/EnableSpringHttpSessionCustomCookieSerializerTests.java
index e36294b7..42a3a379 100644
--- a/spring-session-core/src/test/java/org/springframework/session/config/annotation/web/http/EnableSpringHttpSessionCustomCookieSerializerTests.java
+++ b/spring-session-core/src/test/java/org/springframework/session/config/annotation/web/http/EnableSpringHttpSessionCustomCookieSerializerTests.java
@@ -19,10 +19,10 @@ package org.springframework.session.config.annotation.web.http;
 import java.io.IOException;
 import java.util.Collections;
 
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/spring-session-core/src/test/java/org/springframework/session/config/annotation/web/http/SpringHttpSessionConfigurationTests.java b/spring-session-core/src/test/java/org/springframework/session/config/annotation/web/http/SpringHttpSessionConfigurationTests.java
index 7d66d768..269da4f6 100644
--- a/spring-session-core/src/test/java/org/springframework/session/config/annotation/web/http/SpringHttpSessionConfigurationTests.java
+++ b/spring-session-core/src/test/java/org/springframework/session/config/annotation/web/http/SpringHttpSessionConfigurationTests.java
@@ -18,7 +18,7 @@ package org.springframework.session.config.annotation.web.http;
 
 import java.util.concurrent.ConcurrentHashMap;
 
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
 
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.Test;
diff --git a/spring-session-core/src/test/java/org/springframework/session/security/web/authentication/SpringSessionRememberMeServicesTests.java b/spring-session-core/src/test/java/org/springframework/session/security/web/authentication/SpringSessionRememberMeServicesTests.java
index 75fb7d58..adcded9a 100644
--- a/spring-session-core/src/test/java/org/springframework/session/security/web/authentication/SpringSessionRememberMeServicesTests.java
+++ b/spring-session-core/src/test/java/org/springframework/session/security/web/authentication/SpringSessionRememberMeServicesTests.java
@@ -16,9 +16,9 @@
 
 package org.springframework.session.security.web.authentication;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
 
 import org.junit.jupiter.api.Test;
 
diff --git a/spring-session-core/src/test/java/org/springframework/session/web/http/CookieHttpSessionIdResolverTests.java b/spring-session-core/src/test/java/org/springframework/session/web/http/CookieHttpSessionIdResolverTests.java
index b75eb8d0..02f921c9 100644
--- a/spring-session-core/src/test/java/org/springframework/session/web/http/CookieHttpSessionIdResolverTests.java
+++ b/spring-session-core/src/test/java/org/springframework/session/web/http/CookieHttpSessionIdResolverTests.java
@@ -19,7 +19,7 @@ package org.springframework.session.web.http;
 import java.util.Base64;
 import java.util.Collections;
 
-import javax.servlet.http.Cookie;
+import jakarta.servlet.http.Cookie;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/spring-session-core/src/test/java/org/springframework/session/web/http/DefaultCookieSerializerTests.java b/spring-session-core/src/test/java/org/springframework/session/web/http/DefaultCookieSerializerTests.java
index ce488034..9a716fb9 100644
--- a/spring-session-core/src/test/java/org/springframework/session/web/http/DefaultCookieSerializerTests.java
+++ b/spring-session-core/src/test/java/org/springframework/session/web/http/DefaultCookieSerializerTests.java
@@ -23,7 +23,7 @@ import java.time.ZonedDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.Base64;
 
-import javax.servlet.http.Cookie;
+import jakarta.servlet.http.Cookie;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/spring-session-core/src/test/java/org/springframework/session/web/http/OnCommittedResponseWrapperTests.java b/spring-session-core/src/test/java/org/springframework/session/web/http/OnCommittedResponseWrapperTests.java
index 0d61eb7d..d675232d 100644
--- a/spring-session-core/src/test/java/org/springframework/session/web/http/OnCommittedResponseWrapperTests.java
+++ b/spring-session-core/src/test/java/org/springframework/session/web/http/OnCommittedResponseWrapperTests.java
@@ -21,8 +21,8 @@ import java.io.PrintWriter;
 import java.nio.charset.StandardCharsets;
 import java.util.Locale;
 
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/spring-session-core/src/test/java/org/springframework/session/web/http/OncePerRequestFilterTests.java b/spring-session-core/src/test/java/org/springframework/session/web/http/OncePerRequestFilterTests.java
index 00823fb5..1294a650 100644
--- a/spring-session-core/src/test/java/org/springframework/session/web/http/OncePerRequestFilterTests.java
+++ b/spring-session-core/src/test/java/org/springframework/session/web/http/OncePerRequestFilterTests.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014-2019 the original author or authors.
+ * Copyright 2014-2021 the original author or authors.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -20,12 +20,12 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.servlet.DispatcherType;
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.DispatcherType;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/spring-session-core/src/test/java/org/springframework/session/web/http/SessionEventHttpSessionListenerAdapterTests.java b/spring-session-core/src/test/java/org/springframework/session/web/http/SessionEventHttpSessionListenerAdapterTests.java
index 107e5cb8..2cac5e95 100644
--- a/spring-session-core/src/test/java/org/springframework/session/web/http/SessionEventHttpSessionListenerAdapterTests.java
+++ b/spring-session-core/src/test/java/org/springframework/session/web/http/SessionEventHttpSessionListenerAdapterTests.java
@@ -1,5 +1,5 @@
 /*
- * Copyright 2014-2019 the original author or authors.
+ * Copyright 2014-2021 the original author or authors.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -19,9 +19,9 @@ package org.springframework.session.web.http;
 import java.util.Arrays;
 import java.util.Collections;
 
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpSessionEvent;
-import javax.servlet.http.HttpSessionListener;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.http.HttpSessionEvent;
+import jakarta.servlet.http.HttpSessionListener;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/spring-session-core/src/test/java/org/springframework/session/web/http/SessionRepositoryFilterTests.java b/spring-session-core/src/test/java/org/springframework/session/web/http/SessionRepositoryFilterTests.java
index 4beb17b0..e736c523 100644
--- a/spring-session-core/src/test/java/org/springframework/session/web/http/SessionRepositoryFilterTests.java
+++ b/spring-session-core/src/test/java/org/springframework/session/web/http/SessionRepositoryFilterTests.java
@@ -30,17 +30,17 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import javax.servlet.FilterChain;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpSessionBindingEvent;
-import javax.servlet.http.HttpSessionBindingListener;
-import javax.servlet.http.HttpSessionContext;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSessionBindingEvent;
+import jakarta.servlet.http.HttpSessionBindingListener;
+import jakarta.servlet.http.HttpSessionContext;
 
 import org.assertj.core.data.Offset;
 import org.junit.jupiter.api.BeforeEach;
diff --git a/spring-session-core/src/test/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptorTests.java b/spring-session-core/src/test/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptorTests.java
index 7db46eaa..559c984d 100644
--- a/spring-session-core/src/test/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptorTests.java
+++ b/spring-session-core/src/test/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptorTests.java
@@ -23,7 +23,7 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/spring-session-data-mongodb/spring-session-data-mongodb.gradle b/spring-session-data-mongodb/spring-session-data-mongodb.gradle
index 8d24631e..a1f00178 100644
--- a/spring-session-data-mongodb/spring-session-data-mongodb.gradle
+++ b/spring-session-data-mongodb/spring-session-data-mongodb.gradle
@@ -41,5 +41,5 @@ dependencies {
     testImplementation "org.mockito:mockito-core"
     testImplementation "org.mockito:mockito-junit-jupiter"
     testImplementation "io.projectreactor:reactor-test"
-    testImplementation "javax.servlet:javax.servlet-api"
+    testImplementation "jakarta.servlet:jakarta.servlet-api"
 }
diff --git a/spring-session-data-redis/spring-session-data-redis.gradle b/spring-session-data-redis/spring-session-data-redis.gradle
index e00c7ab4..6b701b8d 100644
--- a/spring-session-data-redis/spring-session-data-redis.gradle
+++ b/spring-session-data-redis/spring-session-data-redis.gradle
@@ -15,7 +15,7 @@ dependencies {
 	testImplementation "org.mockito:mockito-core"
 	testImplementation "org.springframework:spring-test"
 	testImplementation "io.projectreactor:reactor-test"
-	testImplementation "javax.servlet:javax.servlet-api"
+	testImplementation "jakarta.servlet:jakarta.servlet-api"
 	testImplementation "org.springframework:spring-web"
 	testImplementation "org.springframework.security:spring-security-core"
 	testImplementation "org.junit.jupiter:junit-jupiter-api"
diff --git a/spring-session-docs/modules/ROOT/examples/java/docs/security/RememberMeSecurityConfigurationTests.java b/spring-session-docs/modules/ROOT/examples/java/docs/security/RememberMeSecurityConfigurationTests.java
index 3fb66778..f59afe07 100644
--- a/spring-session-docs/modules/ROOT/examples/java/docs/security/RememberMeSecurityConfigurationTests.java
+++ b/spring-session-docs/modules/ROOT/examples/java/docs/security/RememberMeSecurityConfigurationTests.java
@@ -19,7 +19,7 @@ package docs.security;
 import java.time.Duration;
 import java.util.Base64;
 
-import javax.servlet.http.Cookie;
+import jakarta.servlet.http.Cookie;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/spring-session-docs/modules/ROOT/examples/java/docs/security/RememberMeSecurityConfigurationXmlTests.java b/spring-session-docs/modules/ROOT/examples/java/docs/security/RememberMeSecurityConfigurationXmlTests.java
index 91c99651..4977b3aa 100644
--- a/spring-session-docs/modules/ROOT/examples/java/docs/security/RememberMeSecurityConfigurationXmlTests.java
+++ b/spring-session-docs/modules/ROOT/examples/java/docs/security/RememberMeSecurityConfigurationXmlTests.java
@@ -19,7 +19,7 @@ package docs.security;
 import java.time.Duration;
 import java.util.Base64;
 
-import javax.servlet.http.Cookie;
+import jakarta.servlet.http.Cookie;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/spring-session-docs/spring-session-docs.gradle b/spring-session-docs/spring-session-docs.gradle
index b0fb52d7..ed36ec48 100644
--- a/spring-session-docs/spring-session-docs.gradle
+++ b/spring-session-docs/spring-session-docs.gradle
@@ -22,7 +22,8 @@ dependencies {
 	testImplementation 'org.assertj:assertj-core'
 	testImplementation 'com.hazelcast:hazelcast'
 	testImplementation 'io.lettuce:lettuce-core'
-	testImplementation 'javax.servlet:javax.servlet-api'
+    testImplementation 'jakarta.annotation:jakarta.annotation-api'
+	testImplementation 'jakarta.servlet:jakarta.servlet-api'
 	testImplementation 'org.junit.jupiter:junit-jupiter-api'
 	testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
 }
diff --git a/spring-session-docs/src/test/java/docs/security/RememberMeSecurityConfigurationTests.java b/spring-session-docs/src/test/java/docs/security/RememberMeSecurityConfigurationTests.java
index 3fb66778..f59afe07 100644
--- a/spring-session-docs/src/test/java/docs/security/RememberMeSecurityConfigurationTests.java
+++ b/spring-session-docs/src/test/java/docs/security/RememberMeSecurityConfigurationTests.java
@@ -19,7 +19,7 @@ package docs.security;
 import java.time.Duration;
 import java.util.Base64;
 
-import javax.servlet.http.Cookie;
+import jakarta.servlet.http.Cookie;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/spring-session-docs/src/test/java/docs/security/RememberMeSecurityConfigurationXmlTests.java b/spring-session-docs/src/test/java/docs/security/RememberMeSecurityConfigurationXmlTests.java
index 91c99651..4977b3aa 100644
--- a/spring-session-docs/src/test/java/docs/security/RememberMeSecurityConfigurationXmlTests.java
+++ b/spring-session-docs/src/test/java/docs/security/RememberMeSecurityConfigurationXmlTests.java
@@ -19,7 +19,7 @@ package docs.security;
 import java.time.Duration;
 import java.util.Base64;
 
-import javax.servlet.http.Cookie;
+import jakarta.servlet.http.Cookie;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/spring-session-hazelcast/spring-session-hazelcast.gradle b/spring-session-hazelcast/spring-session-hazelcast.gradle
index 408664a8..b7cd931f 100644
--- a/spring-session-hazelcast/spring-session-hazelcast.gradle
+++ b/spring-session-hazelcast/spring-session-hazelcast.gradle
@@ -7,13 +7,13 @@ configurations {
 dependencies {
 	api project(':spring-session-core')
 	api "com.hazelcast:hazelcast"
-	api "javax.annotation:javax.annotation-api"
+	api "jakarta.annotation:jakarta.annotation-api"
 	api "org.springframework:spring-context"
 
 	hazelcast4(project(path: ":hazelcast4", configuration: 'classesOnlyElements'))
 	compileOnly(project(":hazelcast4"))
 
-	testImplementation "javax.servlet:javax.servlet-api"
+	testImplementation "jakarta.servlet:jakarta.servlet-api"
 	testImplementation "org.assertj:assertj-core"
 	testImplementation "org.mockito:mockito-core"
 	testImplementation "org.springframework:spring-test"
diff --git a/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/HazelcastIndexedSessionRepository.java b/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/HazelcastIndexedSessionRepository.java
index 4f885eec..b19e6f6c 100644
--- a/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/HazelcastIndexedSessionRepository.java
+++ b/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/HazelcastIndexedSessionRepository.java
@@ -25,8 +25,8 @@ import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
 
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
+import jakarta.annotation.PostConstruct;
+import jakarta.annotation.PreDestroy;
 
 import com.hazelcast.core.EntryEvent;
 import com.hazelcast.core.HazelcastInstance;
diff --git a/spring-session-jdbc/spring-session-jdbc.gradle b/spring-session-jdbc/spring-session-jdbc.gradle
index 21867b21..3d255b67 100644
--- a/spring-session-jdbc/spring-session-jdbc.gradle
+++ b/spring-session-jdbc/spring-session-jdbc.gradle
@@ -7,7 +7,7 @@ dependencies {
 	api "org.springframework:spring-context"
 	api "org.springframework:spring-jdbc"
 
-	testImplementation "javax.servlet:javax.servlet-api"
+	testImplementation "jakarta.servlet:jakarta.servlet-api"
 	testImplementation "org.assertj:assertj-core"
 	testImplementation "org.mockito:mockito-core"
 	testImplementation "org.springframework:spring-test"
diff --git a/spring-session-samples/gradle/dependency-management.gradle b/spring-session-samples/gradle/dependency-management.gradle
index 26b3d75c..935b76ef 100644
--- a/spring-session-samples/gradle/dependency-management.gradle
+++ b/spring-session-samples/gradle/dependency-management.gradle
@@ -6,9 +6,9 @@ dependencyManagement {
 	dependencies {
 		dependency 'ch.qos.logback:logback-classic:1.2.6'
 		dependency 'com.maxmind.geoip2:geoip2:2.15.0'
-		dependency 'javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.2'
-		dependency 'javax.servlet.jsp:javax.servlet.jsp-api:2.3.3'
-		dependency 'org.apache.taglibs:taglibs-standard-jstlel:1.2.5'
+		dependency 'jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api:2.0.0'
+		dependency 'jakarta.servlet.jsp:jakarta.servlet.jsp-api:3.0.0'
+		dependency 'org.glassfish.web:jakarta.servlet.jsp.jstl:2.0.0'
 		dependency 'org.seleniumhq.selenium:htmlunit-driver:2.52.0'
 		dependency 'org.slf4j:jcl-over-slf4j:1.7.32'
 		dependency 'org.slf4j:log4j-over-slf4j:1.7.32'
diff --git a/spring-session-samples/spring-session-sample-boot-websocket/src/main/java/sample/data/ActiveWebSocketUser.java b/spring-session-samples/spring-session-sample-boot-websocket/src/main/java/sample/data/ActiveWebSocketUser.java
index 03b45640..ded14fcb 100644
--- a/spring-session-samples/spring-session-sample-boot-websocket/src/main/java/sample/data/ActiveWebSocketUser.java
+++ b/spring-session-samples/spring-session-sample-boot-websocket/src/main/java/sample/data/ActiveWebSocketUser.java
@@ -18,8 +18,8 @@ package sample.data;
 
 import java.util.Calendar;
 
-import javax.persistence.Entity;
-import javax.persistence.Id;
+import jakarta.persistence.Entity;
+import jakarta.persistence.Id;
 
 @Entity
 public class ActiveWebSocketUser {
diff --git a/spring-session-samples/spring-session-sample-javaconfig-custom-cookie/spring-session-sample-javaconfig-custom-cookie.gradle b/spring-session-samples/spring-session-sample-javaconfig-custom-cookie/spring-session-sample-javaconfig-custom-cookie.gradle
index 533a04bc..d2a0069c 100644
--- a/spring-session-samples/spring-session-sample-javaconfig-custom-cookie/spring-session-sample-javaconfig-custom-cookie.gradle
+++ b/spring-session-samples/spring-session-sample-javaconfig-custom-cookie/spring-session-sample-javaconfig-custom-cookie.gradle
@@ -9,15 +9,14 @@ dependencies {
 	implementation  "io.lettuce:lettuce-core"
 	implementation  "org.webjars:bootstrap"
 	implementation  "org.webjars:webjars-taglib"
-	implementation  "javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api"
-	implementation  "org.apache.taglibs:taglibs-standard-jstlel"
 	implementation  "org.slf4j:slf4j-api"
 	implementation  "org.slf4j:jcl-over-slf4j"
 	implementation  "org.slf4j:log4j-over-slf4j"
 	implementation  "ch.qos.logback:logback-classic"
 	implementation  "org.testcontainers:testcontainers"
 
-	providedCompile "javax.servlet:javax.servlet-api"
+    providedCompile "jakarta.servlet:jakarta.servlet-api"
+    providedCompile "org.glassfish.web:jakarta.servlet.jsp.jstl"
 
 	testImplementation "org.assertj:assertj-core"
 	testImplementation "org.junit.jupiter:junit-jupiter-api"
diff --git a/spring-session-samples/spring-session-sample-javaconfig-custom-cookie/src/main/java/sample/SessionServlet.java b/spring-session-samples/spring-session-sample-javaconfig-custom-cookie/src/main/java/sample/SessionServlet.java
index ce07fb96..3527ebf5 100644
--- a/spring-session-samples/spring-session-sample-javaconfig-custom-cookie/src/main/java/sample/SessionServlet.java
+++ b/spring-session-samples/spring-session-sample-javaconfig-custom-cookie/src/main/java/sample/SessionServlet.java
@@ -18,10 +18,10 @@ package sample;
 
 import java.io.IOException;
 
-import javax.servlet.annotation.WebServlet;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 // tag::class[]
 @WebServlet("/session")
diff --git a/spring-session-samples/spring-session-sample-javaconfig-hazelcast/spring-session-sample-javaconfig-hazelcast.gradle b/spring-session-samples/spring-session-sample-javaconfig-hazelcast/spring-session-sample-javaconfig-hazelcast.gradle
index a044cdb3..010cdb6b 100644
--- a/spring-session-samples/spring-session-sample-javaconfig-hazelcast/spring-session-sample-javaconfig-hazelcast.gradle
+++ b/spring-session-samples/spring-session-sample-javaconfig-hazelcast/spring-session-sample-javaconfig-hazelcast.gradle
@@ -12,15 +12,14 @@ dependencies {
 	implementation "org.webjars:bootstrap"
 	implementation "org.webjars:webjars-taglib"
 	implementation "com.hazelcast:hazelcast-client"
-	implementation "javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api"
-	implementation "org.apache.taglibs:taglibs-standard-jstlel"
 	implementation "org.slf4j:slf4j-api"
 	implementation "org.slf4j:jcl-over-slf4j"
 	implementation "org.slf4j:log4j-over-slf4j"
 	implementation "ch.qos.logback:logback-classic"
 
-	providedCompile "javax.servlet:javax.servlet-api"
-	providedCompile "javax.servlet.jsp:javax.servlet.jsp-api"
+	providedCompile "jakarta.servlet:jakarta.servlet-api"
+	providedCompile "jakarta.servlet.jsp:jakarta.servlet.jsp-api"
+    providedCompile "org.glassfish.web:jakarta.servlet.jsp.jstl"
 
 	testImplementation "org.assertj:assertj-core"
 	testImplementation "org.junit.jupiter:junit-jupiter-api"
diff --git a/spring-session-samples/spring-session-sample-javaconfig-hazelcast/src/main/java/sample/SessionServlet.java b/spring-session-samples/spring-session-sample-javaconfig-hazelcast/src/main/java/sample/SessionServlet.java
index a1ac06ab..17d5d9f3 100644
--- a/spring-session-samples/spring-session-sample-javaconfig-hazelcast/src/main/java/sample/SessionServlet.java
+++ b/spring-session-samples/spring-session-sample-javaconfig-hazelcast/src/main/java/sample/SessionServlet.java
@@ -18,10 +18,10 @@ package sample;
 
 import java.io.IOException;
 
-import javax.servlet.annotation.WebServlet;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 @WebServlet("/session")
 public class SessionServlet extends HttpServlet {
diff --git a/spring-session-samples/spring-session-sample-javaconfig-jdbc/spring-session-sample-javaconfig-jdbc.gradle b/spring-session-samples/spring-session-sample-javaconfig-jdbc/spring-session-sample-javaconfig-jdbc.gradle
index 7308dd06..1b7feecc 100644
--- a/spring-session-samples/spring-session-sample-javaconfig-jdbc/spring-session-sample-javaconfig-jdbc.gradle
+++ b/spring-session-samples/spring-session-sample-javaconfig-jdbc/spring-session-sample-javaconfig-jdbc.gradle
@@ -9,14 +9,13 @@ dependencies {
 	implementation "org.webjars:bootstrap"
 	implementation "org.webjars:webjars-taglib"
 	implementation "com.h2database:h2"
-	implementation "javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api"
-	implementation "org.apache.taglibs:taglibs-standard-jstlel"
 	implementation "org.slf4j:slf4j-api"
 	implementation "org.slf4j:jcl-over-slf4j"
 	implementation "org.slf4j:log4j-over-slf4j"
 	implementation "ch.qos.logback:logback-classic"
 
-	providedCompile "javax.servlet:javax.servlet-api"
+	providedCompile "jakarta.servlet:jakarta.servlet-api"
+    providedCompile "org.glassfish.web:jakarta.servlet.jsp.jstl"
 
 	testImplementation "org.assertj:assertj-core"
 	testImplementation "org.junit.jupiter:junit-jupiter-api"
diff --git a/spring-session-samples/spring-session-sample-javaconfig-jdbc/src/main/java/sample/SessionServlet.java b/spring-session-samples/spring-session-sample-javaconfig-jdbc/src/main/java/sample/SessionServlet.java
index b15bcac9..a304d111 100644
--- a/spring-session-samples/spring-session-sample-javaconfig-jdbc/src/main/java/sample/SessionServlet.java
+++ b/spring-session-samples/spring-session-sample-javaconfig-jdbc/src/main/java/sample/SessionServlet.java
@@ -18,10 +18,10 @@ package sample;
 
 import java.io.IOException;
 
-import javax.servlet.annotation.WebServlet;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 // tag::class[]
 @WebServlet("/session")
diff --git a/spring-session-samples/spring-session-sample-javaconfig-redis/spring-session-sample-javaconfig-redis.gradle b/spring-session-samples/spring-session-sample-javaconfig-redis/spring-session-sample-javaconfig-redis.gradle
index b1232e23..139655d0 100644
--- a/spring-session-samples/spring-session-sample-javaconfig-redis/spring-session-sample-javaconfig-redis.gradle
+++ b/spring-session-samples/spring-session-sample-javaconfig-redis/spring-session-sample-javaconfig-redis.gradle
@@ -9,15 +9,14 @@ dependencies {
 	implementation "io.lettuce:lettuce-core"
 	implementation "org.webjars:bootstrap"
 	implementation "org.webjars:webjars-taglib"
-	implementation "javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api"
-	implementation "org.apache.taglibs:taglibs-standard-jstlel"
 	implementation "org.slf4j:slf4j-api"
 	implementation "org.slf4j:jcl-over-slf4j"
 	implementation "org.slf4j:log4j-over-slf4j"
 	implementation "ch.qos.logback:logback-classic"
 	implementation "org.testcontainers:testcontainers"
 
-	providedCompile "javax.servlet:javax.servlet-api"
+	providedCompile "jakarta.servlet:jakarta.servlet-api"
+    providedCompile "org.glassfish.web:jakarta.servlet.jsp.jstl"
 
 	testImplementation "org.assertj:assertj-core"
 	testImplementation "org.junit.jupiter:junit-jupiter-api"
diff --git a/spring-session-samples/spring-session-sample-javaconfig-redis/src/main/java/sample/SessionServlet.java b/spring-session-samples/spring-session-sample-javaconfig-redis/src/main/java/sample/SessionServlet.java
index b15bcac9..a304d111 100644
--- a/spring-session-samples/spring-session-sample-javaconfig-redis/src/main/java/sample/SessionServlet.java
+++ b/spring-session-samples/spring-session-sample-javaconfig-redis/src/main/java/sample/SessionServlet.java
@@ -18,10 +18,10 @@ package sample;
 
 import java.io.IOException;
 
-import javax.servlet.annotation.WebServlet;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 // tag::class[]
 @WebServlet("/session")
diff --git a/spring-session-samples/spring-session-sample-javaconfig-rest/spring-session-sample-javaconfig-rest.gradle b/spring-session-samples/spring-session-sample-javaconfig-rest/spring-session-sample-javaconfig-rest.gradle
index 7a9bc6e1..f1a6ddd6 100644
--- a/spring-session-samples/spring-session-sample-javaconfig-rest/spring-session-sample-javaconfig-rest.gradle
+++ b/spring-session-samples/spring-session-sample-javaconfig-rest/spring-session-sample-javaconfig-rest.gradle
@@ -10,15 +10,13 @@ dependencies {
 	implementation "org.springframework.security:spring-security-config"
 	implementation "org.springframework.security:spring-security-web"
 	implementation "com.fasterxml.jackson.core:jackson-databind"
-	implementation "javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api"
-	implementation "org.apache.taglibs:taglibs-standard-jstlel"
 	implementation "org.slf4j:slf4j-api"
 	implementation "org.slf4j:jcl-over-slf4j"
 	implementation "org.slf4j:log4j-over-slf4j"
 	implementation "ch.qos.logback:logback-classic"
 	implementation "org.testcontainers:testcontainers"
 
-	providedCompile "javax.servlet:javax.servlet-api"
+	providedCompile "jakarta.servlet:jakarta.servlet-api"
 
 	testImplementation "org.springframework.security:spring-security-test"
 	testImplementation "org.assertj:assertj-core"
diff --git a/spring-session-samples/spring-session-sample-javaconfig-rest/src/main/java/sample/mvc/RestDemoController.java b/spring-session-samples/spring-session-sample-javaconfig-rest/src/main/java/sample/mvc/RestDemoController.java
index 35591fed..38928fd7 100644
--- a/spring-session-samples/spring-session-sample-javaconfig-rest/src/main/java/sample/mvc/RestDemoController.java
+++ b/spring-session-samples/spring-session-sample-javaconfig-rest/src/main/java/sample/mvc/RestDemoController.java
@@ -20,7 +20,7 @@ import java.security.Principal;
 import java.util.HashMap;
 import java.util.Map;
 
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSession;
 
 import org.springframework.http.HttpStatus;
 import org.springframework.web.bind.annotation.RequestMapping;
diff --git a/spring-session-samples/spring-session-sample-javaconfig-security/spring-session-sample-javaconfig-security.gradle b/spring-session-samples/spring-session-sample-javaconfig-security/spring-session-sample-javaconfig-security.gradle
index da4e5e34..b1c87193 100644
--- a/spring-session-samples/spring-session-sample-javaconfig-security/spring-session-sample-javaconfig-security.gradle
+++ b/spring-session-samples/spring-session-sample-javaconfig-security/spring-session-sample-javaconfig-security.gradle
@@ -11,16 +11,15 @@ dependencies {
 	implementation "io.lettuce:lettuce-core"
 	implementation "org.webjars:bootstrap"
 	implementation "org.webjars:webjars-taglib"
-	implementation "javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api"
-	implementation "org.apache.taglibs:taglibs-standard-jstlel"
 	implementation "org.slf4j:slf4j-api"
 	implementation "org.slf4j:jcl-over-slf4j"
 	implementation "org.slf4j:log4j-over-slf4j"
 	implementation "ch.qos.logback:logback-classic"
 	implementation "org.testcontainers:testcontainers"
 
-	providedCompile "javax.servlet:javax.servlet-api"
-	providedCompile "javax.servlet.jsp:javax.servlet.jsp-api"
+	providedCompile "jakarta.servlet:jakarta.servlet-api"
+	providedCompile "jakarta.servlet.jsp:jakarta.servlet.jsp-api"
+    providedCompile "org.glassfish.web:jakarta.servlet.jsp.jstl"
 
 	testImplementation "org.assertj:assertj-core"
 	testImplementation "org.springframework:spring-test"
diff --git a/spring-session-samples/spring-session-sample-javaconfig-security/src/main/java/sample/SessionServlet.java b/spring-session-samples/spring-session-sample-javaconfig-security/src/main/java/sample/SessionServlet.java
index a1ac06ab..17d5d9f3 100644
--- a/spring-session-samples/spring-session-sample-javaconfig-security/src/main/java/sample/SessionServlet.java
+++ b/spring-session-samples/spring-session-sample-javaconfig-security/src/main/java/sample/SessionServlet.java
@@ -18,10 +18,10 @@ package sample;
 
 import java.io.IOException;
 
-import javax.servlet.annotation.WebServlet;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 @WebServlet("/session")
 public class SessionServlet extends HttpServlet {
diff --git a/spring-session-samples/spring-session-sample-misc-hazelcast/spring-session-sample-misc-hazelcast.gradle b/spring-session-samples/spring-session-sample-misc-hazelcast/spring-session-sample-misc-hazelcast.gradle
index 926c6c0b..a79baccf 100644
--- a/spring-session-samples/spring-session-sample-misc-hazelcast/spring-session-sample-misc-hazelcast.gradle
+++ b/spring-session-samples/spring-session-sample-misc-hazelcast/spring-session-sample-misc-hazelcast.gradle
@@ -8,14 +8,14 @@ dependencies {
 	implementation "org.webjars:bootstrap"
 	implementation "org.webjars:webjars-taglib"
 	implementation "com.hazelcast:hazelcast-client"
-	implementation "javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api"
+	implementation "jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api"
 	implementation "org.apache.taglibs:taglibs-standard-jstlel"
 	implementation "org.slf4j:slf4j-api"
 	implementation "org.slf4j:jcl-over-slf4j"
 	implementation "org.slf4j:log4j-over-slf4j"
 	implementation "ch.qos.logback:logback-classic"
 
-	providedCompile "javax.servlet:javax.servlet-api"
+	providedCompile "jakarta.servlet:jakarta.servlet-api"
 
 	testImplementation "org.assertj:assertj-core"
 	testImplementation "org.junit.jupiter:junit-jupiter-api"
diff --git a/spring-session-samples/spring-session-sample-misc-hazelcast/src/main/java/sample/Initializer.java b/spring-session-samples/spring-session-sample-misc-hazelcast/src/main/java/sample/Initializer.java
index 5b24160a..640a290b 100644
--- a/spring-session-samples/spring-session-sample-misc-hazelcast/src/main/java/sample/Initializer.java
+++ b/spring-session-samples/spring-session-sample-misc-hazelcast/src/main/java/sample/Initializer.java
@@ -19,11 +19,11 @@ package sample;
 import java.util.EnumSet;
 import java.util.Map;
 
-import javax.servlet.DispatcherType;
-import javax.servlet.FilterRegistration.Dynamic;
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletContextListener;
-import javax.servlet.annotation.WebListener;
+import jakarta.servlet.DispatcherType;
+import jakarta.servlet.FilterRegistration.Dynamic;
+import jakarta.servlet.ServletContextEvent;
+import jakarta.servlet.ServletContextListener;
+import jakarta.servlet.annotation.WebListener;
 
 import com.hazelcast.config.Config;
 import com.hazelcast.config.NetworkConfig;
diff --git a/spring-session-samples/spring-session-sample-misc-hazelcast/src/main/java/sample/SessionServlet.java b/spring-session-samples/spring-session-sample-misc-hazelcast/src/main/java/sample/SessionServlet.java
index 4f78026b..fb1c2594 100644
--- a/spring-session-samples/spring-session-sample-misc-hazelcast/src/main/java/sample/SessionServlet.java
+++ b/spring-session-samples/spring-session-sample-misc-hazelcast/src/main/java/sample/SessionServlet.java
@@ -18,10 +18,10 @@ package sample;
 
 import java.io.IOException;
 
-import javax.servlet.annotation.WebServlet;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 /**
  * @author Rob Winch
diff --git a/spring-session-samples/spring-session-sample-xml-jdbc/spring-session-sample-xml-jdbc.gradle b/spring-session-samples/spring-session-sample-xml-jdbc/spring-session-sample-xml-jdbc.gradle
index 55fc55c6..ef51e0ba 100644
--- a/spring-session-samples/spring-session-sample-xml-jdbc/spring-session-sample-xml-jdbc.gradle
+++ b/spring-session-samples/spring-session-sample-xml-jdbc/spring-session-sample-xml-jdbc.gradle
@@ -9,14 +9,13 @@ dependencies {
 	implementation "org.webjars:bootstrap"
 	implementation "org.webjars:webjars-taglib"
 	implementation "com.h2database:h2"
-	implementation "javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api"
-	implementation "org.apache.taglibs:taglibs-standard-jstlel"
 	implementation "org.slf4j:slf4j-api"
 	implementation "org.slf4j:jcl-over-slf4j"
 	implementation "org.slf4j:log4j-over-slf4j"
 	implementation "ch.qos.logback:logback-classic"
 
-	providedCompile "javax.servlet:javax.servlet-api"
+	providedCompile "jakarta.servlet:jakarta.servlet-api"
+    providedCompile "org.glassfish.web:jakarta.servlet.jsp.jstl"
 
 	testImplementation "org.assertj:assertj-core"
 	testImplementation "org.junit.jupiter:junit-jupiter-api"
diff --git a/spring-session-samples/spring-session-sample-xml-jdbc/src/main/java/sample/SessionServlet.java b/spring-session-samples/spring-session-sample-xml-jdbc/src/main/java/sample/SessionServlet.java
index 6db8dce8..f54cc404 100644
--- a/spring-session-samples/spring-session-sample-xml-jdbc/src/main/java/sample/SessionServlet.java
+++ b/spring-session-samples/spring-session-sample-xml-jdbc/src/main/java/sample/SessionServlet.java
@@ -18,9 +18,9 @@ package sample;
 
 import java.io.IOException;
 
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 // tag::class[]
 public class SessionServlet extends HttpServlet {
diff --git a/spring-session-samples/spring-session-sample-xml-redis/spring-session-sample-xml-redis.gradle b/spring-session-samples/spring-session-sample-xml-redis/spring-session-sample-xml-redis.gradle
index b1232e23..139655d0 100644
--- a/spring-session-samples/spring-session-sample-xml-redis/spring-session-sample-xml-redis.gradle
+++ b/spring-session-samples/spring-session-sample-xml-redis/spring-session-sample-xml-redis.gradle
@@ -9,15 +9,14 @@ dependencies {
 	implementation "io.lettuce:lettuce-core"
 	implementation "org.webjars:bootstrap"
 	implementation "org.webjars:webjars-taglib"
-	implementation "javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api"
-	implementation "org.apache.taglibs:taglibs-standard-jstlel"
 	implementation "org.slf4j:slf4j-api"
 	implementation "org.slf4j:jcl-over-slf4j"
 	implementation "org.slf4j:log4j-over-slf4j"
 	implementation "ch.qos.logback:logback-classic"
 	implementation "org.testcontainers:testcontainers"
 
-	providedCompile "javax.servlet:javax.servlet-api"
+	providedCompile "jakarta.servlet:jakarta.servlet-api"
+    providedCompile "org.glassfish.web:jakarta.servlet.jsp.jstl"
 
 	testImplementation "org.assertj:assertj-core"
 	testImplementation "org.junit.jupiter:junit-jupiter-api"
diff --git a/spring-session-samples/spring-session-sample-xml-redis/src/main/java/sample/SessionServlet.java b/spring-session-samples/spring-session-sample-xml-redis/src/main/java/sample/SessionServlet.java
index 6db8dce8..f54cc404 100644
--- a/spring-session-samples/spring-session-sample-xml-redis/src/main/java/sample/SessionServlet.java
+++ b/spring-session-samples/spring-session-sample-xml-redis/src/main/java/sample/SessionServlet.java
@@ -18,9 +18,9 @@ package sample;
 
 import java.io.IOException;
 
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
 
 // tag::class[]
 public class SessionServlet extends HttpServlet {