From b49b461d20293b0a6e2b6543d826d346638cfac6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=88=80?= Date: Tue, 16 May 2023 22:52:43 +0800 Subject: [PATCH 01/13] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../smartboot/servlet/AnnotationsLoader.java | 10 ++-- .../smartboot/servlet/ContainerRuntime.java | 14 ++--- .../org/smartboot/servlet/DefaultServlet.java | 14 ++--- .../org/smartboot/servlet/HandlerContext.java | 2 +- .../servlet/ServletContextRuntime.java | 53 +++++++++++++++---- .../servlet/SmartHttpServletRequest.java | 2 +- .../smartboot/servlet/WebXmlParseEngine.java | 10 ++-- .../servlet/conf/DeploymentInfo.java | 39 +++++++++++--- .../smartboot/servlet/conf/ErrorPageInfo.java | 6 +-- .../smartboot/servlet/conf/FilterInfo.java | 2 +- .../servlet/conf/FilterMappingInfo.java | 2 +- .../conf/ServletContainerInitializerInfo.java | 2 +- .../smartboot/servlet/conf/ServletInfo.java | 4 +- .../smartboot/servlet/conf/WebAppInfo.java | 6 +-- .../servlet/handler/FilterMatchHandler.java | 16 +++--- .../servlet/handler/ServletMatchHandler.java | 4 +- .../ServletRequestListenerHandler.java | 6 +-- .../handler/ServletServiceHandler.java | 6 +-- .../impl/ApplicationFilterRegistration.java | 4 +- .../impl/ApplicationServletRegistration.java | 6 +-- .../servlet/impl/AsyncContextImpl.java | 12 ++--- .../servlet/impl/FilterConfigImpl.java | 4 +- .../servlet/impl/HttpServletRequestImpl.java | 30 +++++------ .../servlet/impl/HttpServletResponseImpl.java | 6 +-- .../org/smartboot/servlet/impl/PartImpl.java | 2 +- .../servlet/impl/ServletConfigImpl.java | 4 +- .../servlet/impl/ServletContextImpl.java | 36 ++++++------- .../servlet/impl/ServletInputStreamImpl.java | 4 +- .../servlet/impl/ServletOutputStreamImpl.java | 4 +- .../servlet/impl/SessionCookieConfigImpl.java | 2 +- .../dispatcher/DispatcherProviderImpl.java | 2 +- .../dispatcher/RequestDispatcherImpl.java | 14 ++--- .../ServletRequestDispatcherWrapper.java | 6 +-- .../ServletResponseDispatcherWrapper.java | 4 +- .../plugins/session/HttpSessionImpl.java | 12 ++--- .../plugins/session/SessionProviderImpl.java | 12 ++--- .../servlet/provider/DispatcherProvider.java | 2 +- .../servlet/provider/SessionProvider.java | 4 +- .../sandbox/MockDispatcherProvider.java | 2 +- .../servlet/sandbox/MockSessionProvider.java | 4 +- .../commons/fileupload/DiskFileUpload.java | 2 +- .../commons/fileupload/FileUploadBase.java | 2 +- .../servlet/FileCleanerCleanup.java | 6 +-- .../fileupload/servlet/ServletFileUpload.java | 2 +- .../servlet/ServletRequestContext.java | 2 +- .../starter/SmartContainerInitializer.java | 6 +-- .../testsuite/JettyEmbeddedContainer.java | 2 +- 47 files changed, 226 insertions(+), 170 deletions(-) diff --git a/servlet-core/src/main/java/org/smartboot/servlet/AnnotationsLoader.java b/servlet-core/src/main/java/org/smartboot/servlet/AnnotationsLoader.java index d7e6fd5..f564c0e 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/AnnotationsLoader.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/AnnotationsLoader.java @@ -18,11 +18,11 @@ import org.smartboot.servlet.third.bcel.classfile.ClassParser; import org.smartboot.servlet.third.bcel.classfile.JavaClass; import org.smartboot.servlet.util.CollectionUtils; -import javax.servlet.ServletContainerInitializer; -import javax.servlet.annotation.HandlesTypes; -import javax.servlet.annotation.WebInitParam; -import javax.servlet.annotation.WebListener; -import javax.servlet.annotation.WebServlet; +import jakarta.servlet.ServletContainerInitializer; +import jakarta.servlet.annotation.HandlesTypes; +import jakarta.servlet.annotation.WebInitParam; +import jakarta.servlet.annotation.WebListener; +import jakarta.servlet.annotation.WebServlet; import java.io.File; import java.io.FileInputStream; import java.io.IOException; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/ContainerRuntime.java b/servlet-core/src/main/java/org/smartboot/servlet/ContainerRuntime.java index 997e159..c521437 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/ContainerRuntime.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/ContainerRuntime.java @@ -10,9 +10,9 @@ package org.smartboot.servlet; -import javax.servlet.DispatcherType; -import javax.servlet.ServletContainerInitializer; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.DispatcherType; +import jakarta.servlet.ServletContainerInitializer; +import jakarta.servlet.http.HttpServletResponse; import org.smartboot.http.common.logging.Logger; import org.smartboot.http.common.logging.LoggerFactory; import org.smartboot.http.common.utils.StringUtils; @@ -238,9 +238,9 @@ public class ContainerRuntime { try { //识别请求对应的运行时环境,必然不能为null,要求存在contextPath为"/"的container ServletContextRuntime runtime = matchRuntime(request.getRequestURI()); - if (!runtime.isStarted()) { - throw new IllegalStateException("container is not started"); - } +// if (!runtime.isStarted()) { +// throw new IllegalStateException("container is not started"); +// } ServletContextImpl servletContext = runtime.getServletContext(); Thread.currentThread().setContextClassLoader(servletContext.getClassLoader()); @@ -325,6 +325,8 @@ public class ContainerRuntime { //register Servlet into deploymentInfo webAppInfo.getServlets().values().forEach(deploymentInfo::addServlet); + webAppInfo.getErrorPages().forEach(deploymentInfo::addErrorPage); + //register Filter webAppInfo.getFilters().values().forEach(deploymentInfo::addFilter); //register servletContext into deploymentInfo diff --git a/servlet-core/src/main/java/org/smartboot/servlet/DefaultServlet.java b/servlet-core/src/main/java/org/smartboot/servlet/DefaultServlet.java index e1776e5..714ff11 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/DefaultServlet.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/DefaultServlet.java @@ -20,13 +20,13 @@ import org.smartboot.http.common.utils.Mimetypes; import org.smartboot.http.common.utils.StringUtils; import org.smartboot.servlet.exception.WrappedRuntimeException; -import javax.servlet.DispatcherType; -import javax.servlet.ServletConfig; -import javax.servlet.ServletContext; -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.ServletConfig; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/HandlerContext.java b/servlet-core/src/main/java/org/smartboot/servlet/HandlerContext.java index 96465a9..92a8af1 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/HandlerContext.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/HandlerContext.java @@ -13,7 +13,7 @@ package org.smartboot.servlet; import org.smartboot.servlet.conf.ServletInfo; import org.smartboot.servlet.impl.ServletContextImpl; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletResponse; /** * 请求处理上下文对象 diff --git a/servlet-core/src/main/java/org/smartboot/servlet/ServletContextRuntime.java b/servlet-core/src/main/java/org/smartboot/servlet/ServletContextRuntime.java index 79e5531..5588366 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/ServletContextRuntime.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/ServletContextRuntime.java @@ -10,6 +10,20 @@ package org.smartboot.servlet; +import jakarta.servlet.Filter; +import jakarta.servlet.FilterConfig; +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletConfig; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletContextEvent; +import jakarta.servlet.ServletException; +import jakarta.servlet.UnavailableException; +import jakarta.servlet.annotation.WebListener; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.smartboot.http.common.enums.HttpStatus; import org.smartboot.http.common.utils.StringUtils; import org.smartboot.servlet.conf.DeploymentInfo; import org.smartboot.servlet.conf.FilterInfo; @@ -25,15 +39,8 @@ import org.smartboot.servlet.provider.SessionProvider; import org.smartboot.servlet.provider.WebsocketProvider; import org.smartboot.servlet.sandbox.SandBox; -import javax.servlet.Filter; -import javax.servlet.FilterConfig; -import javax.servlet.Servlet; -import javax.servlet.ServletConfig; -import javax.servlet.ServletContext; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebListener; import java.io.File; +import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -223,7 +230,35 @@ public class ServletContextRuntime { for (ServletInfo servletInfo : servletInfoList) { ServletConfig servletConfig = new ServletConfigImpl(servletInfo, servletContext); - servletInfo.getServlet().init(servletConfig); + try { + servletInfo.getServlet().init(servletConfig); + } catch (UnavailableException e) { + e.printStackTrace(); + //占用该Servlet的URL mappings + servletInfo.setServlet(new HttpServlet() { + @Override + protected void service(HttpServletRequest req, HttpServletResponse resp) { + resp.setStatus(HttpStatus.NOT_FOUND.value()); + } + }); + } catch (ServletException e) { +// e.printStackTrace(); + String location = deploymentInfo.getErrorPageLocation(e); + if (location == null) { + location = deploymentInfo.getErrorPageLocation(HttpStatus.INTERNAL_SERVER_ERROR.value()); + } + String finalLocation = location; + servletInfo.setServlet(new HttpServlet() { + @Override + protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + resp.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value()); + req.setAttribute(RequestDispatcher.ERROR_EXCEPTION, e); + req.setAttribute(RequestDispatcher.ERROR_MESSAGE, e.getMessage()); + req.setAttribute(RequestDispatcher.ERROR_STATUS_CODE, HttpStatus.INTERNAL_SERVER_ERROR.value()); + req.getRequestDispatcher(finalLocation).forward(req, resp); + } + }); + } } } diff --git a/servlet-core/src/main/java/org/smartboot/servlet/SmartHttpServletRequest.java b/servlet-core/src/main/java/org/smartboot/servlet/SmartHttpServletRequest.java index 243bfb2..696408e 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/SmartHttpServletRequest.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/SmartHttpServletRequest.java @@ -12,7 +12,7 @@ package org.smartboot.servlet; import org.smartboot.servlet.conf.ServletInfo; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; /** * @author 三刀 diff --git a/servlet-core/src/main/java/org/smartboot/servlet/WebXmlParseEngine.java b/servlet-core/src/main/java/org/smartboot/servlet/WebXmlParseEngine.java index 6902518..7fb27ae 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/WebXmlParseEngine.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/WebXmlParseEngine.java @@ -26,8 +26,8 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; -import javax.servlet.DispatcherType; -import javax.servlet.MultipartConfigElement; +import jakarta.servlet.DispatcherType; +import jakarta.servlet.MultipartConfigElement; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; @@ -129,11 +129,7 @@ class WebXmlParseEngine { List childNodeList = getChildNode(parentElement, "error-page"); for (Node node : childNodeList) { Map nodeData = getNodeValue(node, Arrays.asList("error-code", "location", "exception-type")); - int errorCode = NumberUtils.toInt(nodeData.get("error-code"), -1); - if (errorCode < 0) { - continue; - } - webAppInfo.addErrorPage(new ErrorPageInfo(nodeData.get("location"), errorCode, nodeData.get("exception-type"))); + webAppInfo.addErrorPage(new ErrorPageInfo(nodeData.get("location"), NumberUtils.toInt(nodeData.get("error-code"), -1), nodeData.get("exception-type"))); } } diff --git a/servlet-core/src/main/java/org/smartboot/servlet/conf/DeploymentInfo.java b/servlet-core/src/main/java/org/smartboot/servlet/conf/DeploymentInfo.java index 58e8ac2..6aa2c7e 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/conf/DeploymentInfo.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/conf/DeploymentInfo.java @@ -10,16 +10,16 @@ package org.smartboot.servlet.conf; +import jakarta.servlet.ServletContainerInitializer; +import jakarta.servlet.ServletContextAttributeListener; +import jakarta.servlet.ServletContextListener; +import jakarta.servlet.ServletRequestAttributeListener; +import jakarta.servlet.ServletRequestListener; +import jakarta.servlet.annotation.HandlesTypes; +import jakarta.servlet.http.HttpSessionAttributeListener; +import jakarta.servlet.http.HttpSessionListener; import org.smartboot.servlet.AnnotationsLoader; -import javax.servlet.ServletContainerInitializer; -import javax.servlet.ServletContextAttributeListener; -import javax.servlet.ServletContextListener; -import javax.servlet.ServletRequestAttributeListener; -import javax.servlet.ServletRequestListener; -import javax.servlet.annotation.HandlesTypes; -import javax.servlet.http.HttpSessionAttributeListener; -import javax.servlet.http.HttpSessionListener; import java.net.URL; import java.util.ArrayList; import java.util.Collections; @@ -35,6 +35,9 @@ import java.util.Map; */ public class DeploymentInfo { private final Map servlets = new HashMap<>(); + + private final Map errorStatusPages = new HashMap<>(); + private final Map errorPages = new HashMap<>(); private final Map filters = new HashMap<>(); private final List filterMappings = new ArrayList<>(); private final Map initParameters = new HashMap<>(); @@ -105,6 +108,26 @@ public class DeploymentInfo { return servlets; } + public void addErrorPage(final ErrorPageInfo servlet) { + if (servlet.getErrorCode() != null) { + errorStatusPages.put(servlet.getErrorCode(), servlet); + } + if (servlet.getExceptionType() != null) { + errorPages.put(servlet.getExceptionType(), servlet); + } + + } + + public String getErrorPageLocation(int errorCode) { + ErrorPageInfo errorPage = errorStatusPages.get(errorCode); + return errorPage == null ? null : errorPage.getLocation(); + } + + public String getErrorPageLocation(Exception exception) { + ErrorPageInfo errorPage = errorPages.get(exception.getClass().getName()); + return errorPage == null ? null : errorPage.getLocation(); + } + public void addFilter(final FilterInfo filter) { filters.put(filter.getFilterName(), filter); } diff --git a/servlet-core/src/main/java/org/smartboot/servlet/conf/ErrorPageInfo.java b/servlet-core/src/main/java/org/smartboot/servlet/conf/ErrorPageInfo.java index 57ad16b..6ab3bbb 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/conf/ErrorPageInfo.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/conf/ErrorPageInfo.java @@ -15,9 +15,9 @@ package org.smartboot.servlet.conf; * @version V1.0 , 2019/12/13 */ public class ErrorPageInfo { - private String location; - private Integer errorCode; - private String exceptionType; + private final String location; + private final Integer errorCode; + private final String exceptionType; public ErrorPageInfo(String location, Integer errorCode, String exceptionType) { this.location = location; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/conf/FilterInfo.java b/servlet-core/src/main/java/org/smartboot/servlet/conf/FilterInfo.java index ed39e5a..90dc811 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/conf/FilterInfo.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/conf/FilterInfo.java @@ -10,7 +10,7 @@ package org.smartboot.servlet.conf; -import javax.servlet.Filter; +import jakarta.servlet.Filter; import java.util.Collections; import java.util.HashMap; import java.util.Map; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/conf/FilterMappingInfo.java b/servlet-core/src/main/java/org/smartboot/servlet/conf/FilterMappingInfo.java index 38c5e79..7fe0902 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/conf/FilterMappingInfo.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/conf/FilterMappingInfo.java @@ -12,7 +12,7 @@ package org.smartboot.servlet.conf; import org.smartboot.servlet.enums.FilterMappingType; -import javax.servlet.DispatcherType; +import jakarta.servlet.DispatcherType; import java.util.Set; /** diff --git a/servlet-core/src/main/java/org/smartboot/servlet/conf/ServletContainerInitializerInfo.java b/servlet-core/src/main/java/org/smartboot/servlet/conf/ServletContainerInitializerInfo.java index 81dc02b..6fcf930 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/conf/ServletContainerInitializerInfo.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/conf/ServletContainerInitializerInfo.java @@ -10,7 +10,7 @@ package org.smartboot.servlet.conf; -import javax.servlet.ServletContainerInitializer; +import jakarta.servlet.ServletContainerInitializer; import java.util.Set; /** diff --git a/servlet-core/src/main/java/org/smartboot/servlet/conf/ServletInfo.java b/servlet-core/src/main/java/org/smartboot/servlet/conf/ServletInfo.java index 6491bb5..044f039 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/conf/ServletInfo.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/conf/ServletInfo.java @@ -12,8 +12,8 @@ package org.smartboot.servlet.conf; import org.smartboot.servlet.util.PathMatcherUtil; -import javax.servlet.MultipartConfigElement; -import javax.servlet.Servlet; +import jakarta.servlet.MultipartConfigElement; +import jakarta.servlet.Servlet; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/conf/WebAppInfo.java b/servlet-core/src/main/java/org/smartboot/servlet/conf/WebAppInfo.java index 8e233a6..47fe29f 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/conf/WebAppInfo.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/conf/WebAppInfo.java @@ -44,7 +44,7 @@ public class WebAppInfo { private final Map contextParams = new HashMap<>(); - private final Map errorPages = new HashMap<>(); + private final List errorPages = new ArrayList<>(); private final List welcomeFileList = new ArrayList<>(); @@ -75,7 +75,7 @@ public class WebAppInfo { } public void addErrorPage(ErrorPageInfo errorPageInfo) { - errorPages.put(errorPageInfo.getErrorCode(), errorPageInfo); + errorPages.add(errorPageInfo); } public int getSessionTimeout() { @@ -106,7 +106,7 @@ public class WebAppInfo { return contextParams; } - public Map getErrorPages() { + public List getErrorPages() { return errorPages; } diff --git a/servlet-core/src/main/java/org/smartboot/servlet/handler/FilterMatchHandler.java b/servlet-core/src/main/java/org/smartboot/servlet/handler/FilterMatchHandler.java index 4599480..586c45a 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/handler/FilterMatchHandler.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/handler/FilterMatchHandler.java @@ -18,14 +18,14 @@ import org.smartboot.servlet.enums.FilterMappingType; import org.smartboot.servlet.exception.WrappedRuntimeException; import org.smartboot.servlet.util.PathMatcherUtil; -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.Servlet; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.Filter; +import jakarta.servlet.FilterChain; +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletException; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletMatchHandler.java b/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletMatchHandler.java index 146b906..0288cc1 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletMatchHandler.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletMatchHandler.java @@ -18,8 +18,8 @@ import org.smartboot.servlet.exception.WrappedRuntimeException; import org.smartboot.servlet.impl.ServletContextImpl; import org.smartboot.servlet.util.PathMatcherUtil; -import javax.servlet.Servlet; -import javax.servlet.ServletException; +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletException; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletRequestListenerHandler.java b/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletRequestListenerHandler.java index 0773af3..b6006b0 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletRequestListenerHandler.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletRequestListenerHandler.java @@ -14,9 +14,9 @@ import org.smartboot.http.common.logging.Logger; import org.smartboot.http.common.logging.LoggerFactory; import org.smartboot.servlet.HandlerContext; -import javax.servlet.ServletContext; -import javax.servlet.ServletRequestEvent; -import javax.servlet.ServletRequestListener; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletRequestEvent; +import jakarta.servlet.ServletRequestListener; import java.util.List; /** diff --git a/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletServiceHandler.java b/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletServiceHandler.java index 6081c12..db6fd22 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletServiceHandler.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletServiceHandler.java @@ -14,9 +14,9 @@ import org.smartboot.servlet.HandlerContext; import org.smartboot.servlet.conf.ServletInfo; import org.smartboot.servlet.exception.WrappedRuntimeException; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; /** diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/ApplicationFilterRegistration.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/ApplicationFilterRegistration.java index 771dc5c..6f247be 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/ApplicationFilterRegistration.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/ApplicationFilterRegistration.java @@ -17,8 +17,8 @@ import org.smartboot.servlet.conf.ServletMappingInfo; import org.smartboot.servlet.enums.FilterMappingType; import org.smartboot.servlet.util.PathMatcherUtil; -import javax.servlet.DispatcherType; -import javax.servlet.FilterRegistration; +import jakarta.servlet.DispatcherType; +import jakarta.servlet.FilterRegistration; import java.util.Collection; import java.util.EnumSet; import java.util.HashMap; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/ApplicationServletRegistration.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/ApplicationServletRegistration.java index e2f75c2..76fc86f 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/ApplicationServletRegistration.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/ApplicationServletRegistration.java @@ -16,9 +16,9 @@ import org.smartboot.servlet.conf.DeploymentInfo; import org.smartboot.servlet.conf.ServletInfo; import org.smartboot.servlet.conf.ServletMappingInfo; -import javax.servlet.MultipartConfigElement; -import javax.servlet.ServletRegistration; -import javax.servlet.ServletSecurityElement; +import jakarta.servlet.MultipartConfigElement; +import jakarta.servlet.ServletRegistration; +import jakarta.servlet.ServletSecurityElement; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/AsyncContextImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/AsyncContextImpl.java index 9a2ca15..03288e2 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/AsyncContextImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/AsyncContextImpl.java @@ -10,12 +10,12 @@ package org.smartboot.servlet.impl; -import javax.servlet.AsyncContext; -import javax.servlet.AsyncListener; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; +import jakarta.servlet.AsyncContext; +import jakarta.servlet.AsyncListener; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletException; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletResponse; /** * @author 三刀(zhengjunweimail@163.com) diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/FilterConfigImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/FilterConfigImpl.java index 041138c..ea24e90 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/FilterConfigImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/FilterConfigImpl.java @@ -12,8 +12,8 @@ package org.smartboot.servlet.impl; import org.smartboot.servlet.conf.FilterInfo; -import javax.servlet.FilterConfig; -import javax.servlet.ServletContext; +import jakarta.servlet.FilterConfig; +import jakarta.servlet.ServletContext; import java.util.Collections; import java.util.Enumeration; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletRequestImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletRequestImpl.java index c62f039..87d01d0 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletRequestImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletRequestImpl.java @@ -28,21 +28,21 @@ import org.smartboot.servlet.third.commons.fileupload.disk.DiskFileItemFactory; import org.smartboot.servlet.util.CollectionUtils; import org.smartboot.servlet.util.DateUtil; -import javax.servlet.AsyncContext; -import javax.servlet.DispatcherType; -import javax.servlet.MultipartConfigElement; -import javax.servlet.RequestDispatcher; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletInputStream; -import javax.servlet.ServletRequest; -import javax.servlet.ServletRequestAttributeEvent; -import javax.servlet.ServletResponse; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; -import javax.servlet.http.HttpUpgradeHandler; -import javax.servlet.http.Part; +import jakarta.servlet.AsyncContext; +import jakarta.servlet.DispatcherType; +import jakarta.servlet.MultipartConfigElement; +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletException; +import jakarta.servlet.ServletInputStream; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletRequestAttributeEvent; +import jakarta.servlet.ServletResponse; +import jakarta.servlet.http.Cookie; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; +import jakarta.servlet.http.HttpUpgradeHandler; +import jakarta.servlet.http.Part; import java.io.BufferedReader; import java.io.File; import java.io.IOException; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java index 8f5c934..95d54e3 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java @@ -10,9 +10,9 @@ package org.smartboot.servlet.impl; -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.smartboot.http.common.enums.HeaderNameEnum; import org.smartboot.http.common.enums.HttpStatus; import org.smartboot.http.common.logging.Logger; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/PartImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/PartImpl.java index 5243d59..464a104 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/PartImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/PartImpl.java @@ -14,7 +14,7 @@ import org.smartboot.servlet.third.commons.fileupload.FileItem; import org.smartboot.servlet.third.commons.fileupload.ParameterParser; import org.smartboot.servlet.third.commons.fileupload.disk.DiskFileItem; -import javax.servlet.http.Part; +import jakarta.servlet.http.Part; import java.io.File; import java.io.IOException; import java.io.InputStream; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletConfigImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletConfigImpl.java index 30f8687..f331a16 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletConfigImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletConfigImpl.java @@ -12,8 +12,8 @@ package org.smartboot.servlet.impl; import org.smartboot.servlet.conf.ServletInfo; -import javax.servlet.ServletConfig; -import javax.servlet.ServletContext; +import jakarta.servlet.ServletConfig; +import jakarta.servlet.ServletContext; import java.util.Collections; import java.util.Enumeration; /** diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletContextImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletContextImpl.java index 1b03720..8453452 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletContextImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletContextImpl.java @@ -22,24 +22,24 @@ import org.smartboot.servlet.enums.ServletContextPathType; import org.smartboot.servlet.exception.WrappedRuntimeException; import org.smartboot.servlet.handler.HandlerPipeline; -import javax.servlet.Filter; -import javax.servlet.FilterRegistration; -import javax.servlet.RequestDispatcher; -import javax.servlet.Servlet; -import javax.servlet.ServletContext; -import javax.servlet.ServletContextAttributeEvent; -import javax.servlet.ServletContextAttributeListener; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; -import javax.servlet.ServletException; -import javax.servlet.ServletRegistration; -import javax.servlet.ServletRequestAttributeListener; -import javax.servlet.ServletRequestListener; -import javax.servlet.SessionCookieConfig; -import javax.servlet.SessionTrackingMode; -import javax.servlet.descriptor.JspConfigDescriptor; -import javax.servlet.http.HttpSessionAttributeListener; -import javax.servlet.http.HttpSessionListener; +import jakarta.servlet.Filter; +import jakarta.servlet.FilterRegistration; +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.Servlet; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletContextAttributeEvent; +import jakarta.servlet.ServletContextAttributeListener; +import jakarta.servlet.ServletContextEvent; +import jakarta.servlet.ServletContextListener; +import jakarta.servlet.ServletException; +import jakarta.servlet.ServletRegistration; +import jakarta.servlet.ServletRequestAttributeListener; +import jakarta.servlet.ServletRequestListener; +import jakarta.servlet.SessionCookieConfig; +import jakarta.servlet.SessionTrackingMode; +import jakarta.servlet.descriptor.JspConfigDescriptor; +import jakarta.servlet.http.HttpSessionAttributeListener; +import jakarta.servlet.http.HttpSessionListener; import java.io.File; import java.io.InputStream; import java.net.MalformedURLException; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletInputStreamImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletInputStreamImpl.java index eba58fa..3ce7010 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletInputStreamImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletInputStreamImpl.java @@ -10,8 +10,8 @@ package org.smartboot.servlet.impl; -import javax.servlet.ReadListener; -import javax.servlet.ServletInputStream; +import jakarta.servlet.ReadListener; +import jakarta.servlet.ServletInputStream; import java.io.IOException; import java.io.InputStream; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletOutputStreamImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletOutputStreamImpl.java index 3e79cd7..3d81d8f 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletOutputStreamImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletOutputStreamImpl.java @@ -12,8 +12,8 @@ package org.smartboot.servlet.impl; import org.smartboot.http.common.BufferOutputStream; -import javax.servlet.ServletOutputStream; -import javax.servlet.WriteListener; +import jakarta.servlet.ServletOutputStream; +import jakarta.servlet.WriteListener; import java.io.IOException; /** diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/SessionCookieConfigImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/SessionCookieConfigImpl.java index 1a02411..bbf00a2 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/SessionCookieConfigImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/SessionCookieConfigImpl.java @@ -10,7 +10,7 @@ package org.smartboot.servlet.impl; -import javax.servlet.SessionCookieConfig; +import jakarta.servlet.SessionCookieConfig; import org.smartboot.servlet.ServletContextRuntime; import org.smartboot.servlet.provider.SessionProvider; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/DispatcherProviderImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/DispatcherProviderImpl.java index ccbafee..a714267 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/DispatcherProviderImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/DispatcherProviderImpl.java @@ -16,7 +16,7 @@ import org.smartboot.servlet.impl.HttpServletRequestImpl; import org.smartboot.servlet.impl.ServletContextImpl; import org.smartboot.servlet.provider.DispatcherProvider; -import javax.servlet.RequestDispatcher; +import jakarta.servlet.RequestDispatcher; /** * @author 三刀 diff --git a/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/RequestDispatcherImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/RequestDispatcherImpl.java index 52f1cb9..dcecc8a 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/RequestDispatcherImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/RequestDispatcherImpl.java @@ -18,13 +18,13 @@ import org.smartboot.servlet.impl.HttpServletRequestImpl; import org.smartboot.servlet.impl.HttpServletResponseImpl; import org.smartboot.servlet.impl.ServletContextImpl; -import javax.servlet.DispatcherType; -import javax.servlet.RequestDispatcher; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletRequestWrapper; -import javax.servlet.ServletResponse; -import javax.servlet.ServletResponseWrapper; +import jakarta.servlet.DispatcherType; +import jakarta.servlet.RequestDispatcher; +import jakarta.servlet.ServletException; +import jakarta.servlet.ServletRequest; +import jakarta.servlet.ServletRequestWrapper; +import jakarta.servlet.ServletResponse; +import jakarta.servlet.ServletResponseWrapper; import java.io.IOException; import java.util.HashMap; import java.util.Map; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/ServletRequestDispatcherWrapper.java b/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/ServletRequestDispatcherWrapper.java index cc315be..04afa40 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/ServletRequestDispatcherWrapper.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/ServletRequestDispatcherWrapper.java @@ -16,9 +16,9 @@ import org.smartboot.servlet.conf.ServletInfo; import org.smartboot.servlet.impl.HttpServletRequestImpl; import org.smartboot.servlet.impl.HttpServletResponseImpl; -import javax.servlet.DispatcherType; -import javax.servlet.http.HttpServletRequestWrapper; -import javax.servlet.http.HttpSession; +import jakarta.servlet.DispatcherType; +import jakarta.servlet.http.HttpServletRequestWrapper; +import jakarta.servlet.http.HttpSession; import java.util.Collections; import java.util.Enumeration; import java.util.Map; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/ServletResponseDispatcherWrapper.java b/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/ServletResponseDispatcherWrapper.java index 6713e20..29a21de 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/ServletResponseDispatcherWrapper.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/ServletResponseDispatcherWrapper.java @@ -12,8 +12,8 @@ package org.smartboot.servlet.plugins.dispatcher; import org.smartboot.servlet.impl.HttpServletResponseImpl; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletResponseWrapper; +import jakarta.servlet.http.Cookie; +import jakarta.servlet.http.HttpServletResponseWrapper; import java.io.IOException; import java.util.Locale; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/plugins/session/HttpSessionImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/plugins/session/HttpSessionImpl.java index d02441c..6ac9e6c 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/plugins/session/HttpSessionImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/plugins/session/HttpSessionImpl.java @@ -13,12 +13,12 @@ package org.smartboot.servlet.plugins.session; import org.smartboot.servlet.impl.ServletContextImpl; import org.smartboot.servlet.util.CollectionUtils; -import javax.servlet.ServletContext; -import javax.servlet.http.HttpSession; -import javax.servlet.http.HttpSessionBindingEvent; -import javax.servlet.http.HttpSessionContext; -import javax.servlet.http.HttpSessionEvent; -import javax.servlet.http.HttpSessionListener; +import jakarta.servlet.ServletContext; +import jakarta.servlet.http.HttpSession; +import jakarta.servlet.http.HttpSessionBindingEvent; +import jakarta.servlet.http.HttpSessionContext; +import jakarta.servlet.http.HttpSessionEvent; +import jakarta.servlet.http.HttpSessionListener; import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/plugins/session/SessionProviderImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/plugins/session/SessionProviderImpl.java index ea95b8a..21cd35f 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/plugins/session/SessionProviderImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/plugins/session/SessionProviderImpl.java @@ -10,12 +10,12 @@ package org.smartboot.servlet.plugins.session; -import javax.servlet.SessionCookieConfig; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; -import javax.servlet.http.HttpSessionContext; +import jakarta.servlet.SessionCookieConfig; +import jakarta.servlet.http.Cookie; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; +import jakarta.servlet.http.HttpSessionContext; import org.smartboot.servlet.impl.HttpServletRequestImpl; import org.smartboot.servlet.provider.SessionProvider; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/provider/DispatcherProvider.java b/servlet-core/src/main/java/org/smartboot/servlet/provider/DispatcherProvider.java index ae65990..42ee42e 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/provider/DispatcherProvider.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/provider/DispatcherProvider.java @@ -13,7 +13,7 @@ package org.smartboot.servlet.provider; import org.smartboot.servlet.impl.HttpServletRequestImpl; import org.smartboot.servlet.impl.ServletContextImpl; -import javax.servlet.RequestDispatcher; +import jakarta.servlet.RequestDispatcher; /** * @author 三刀 diff --git a/servlet-core/src/main/java/org/smartboot/servlet/provider/SessionProvider.java b/servlet-core/src/main/java/org/smartboot/servlet/provider/SessionProvider.java index 07f94de..d34577d 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/provider/SessionProvider.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/provider/SessionProvider.java @@ -12,8 +12,8 @@ package org.smartboot.servlet.provider; import org.smartboot.servlet.impl.HttpServletRequestImpl; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; /** * @author 三刀 diff --git a/servlet-core/src/main/java/org/smartboot/servlet/sandbox/MockDispatcherProvider.java b/servlet-core/src/main/java/org/smartboot/servlet/sandbox/MockDispatcherProvider.java index d79b0e6..a45bae2 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/sandbox/MockDispatcherProvider.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/sandbox/MockDispatcherProvider.java @@ -15,7 +15,7 @@ import org.smartboot.servlet.impl.ServletContextImpl; import org.smartboot.servlet.plugins.PluginException; import org.smartboot.servlet.provider.DispatcherProvider; -import javax.servlet.RequestDispatcher; +import jakarta.servlet.RequestDispatcher; /** * @author 三刀 diff --git a/servlet-core/src/main/java/org/smartboot/servlet/sandbox/MockSessionProvider.java b/servlet-core/src/main/java/org/smartboot/servlet/sandbox/MockSessionProvider.java index 295fa4b..8b187df 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/sandbox/MockSessionProvider.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/sandbox/MockSessionProvider.java @@ -14,8 +14,8 @@ import org.smartboot.servlet.impl.HttpServletRequestImpl; import org.smartboot.servlet.plugins.PluginException; import org.smartboot.servlet.provider.SessionProvider; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpSession; /** * @author 三刀 diff --git a/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/DiskFileUpload.java b/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/DiskFileUpload.java index 0ae15fc..28f78ae 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/DiskFileUpload.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/DiskFileUpload.java @@ -16,7 +16,7 @@ */ package org.smartboot.servlet.third.commons.fileupload; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import java.io.File; import java.util.List; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/FileUploadBase.java b/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/FileUploadBase.java index 86c6071..5c1e89b 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/FileUploadBase.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/FileUploadBase.java @@ -25,7 +25,7 @@ import org.smartboot.servlet.third.commons.fileupload.util.FileItemHeadersImpl; import org.smartboot.servlet.third.commons.fileupload.util.LimitedInputStream; import org.smartboot.servlet.third.commons.fileupload.util.Streams; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/FileCleanerCleanup.java b/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/FileCleanerCleanup.java index 6c82019..2ad477c 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/FileCleanerCleanup.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/FileCleanerCleanup.java @@ -18,9 +18,9 @@ package org.smartboot.servlet.third.commons.fileupload.servlet; import org.smartboot.servlet.third.commons.io.FileCleaningTracker; -import javax.servlet.ServletContext; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletContextEvent; +import jakarta.servlet.ServletContextListener; /** * A servlet context listener, which ensures that the diff --git a/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/ServletFileUpload.java b/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/ServletFileUpload.java index e5124f7..5a85c04 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/ServletFileUpload.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/ServletFileUpload.java @@ -23,7 +23,7 @@ import org.smartboot.servlet.third.commons.fileupload.FileUpload; import org.smartboot.servlet.third.commons.fileupload.FileUploadBase; import org.smartboot.servlet.third.commons.fileupload.FileUploadException; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.List; import java.util.Map; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/ServletRequestContext.java b/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/ServletRequestContext.java index d260376..bb3dbe7 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/ServletRequestContext.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/ServletRequestContext.java @@ -19,7 +19,7 @@ package org.smartboot.servlet.third.commons.fileupload.servlet; import org.smartboot.servlet.third.commons.fileupload.FileUploadBase; import org.smartboot.servlet.third.commons.fileupload.UploadContext; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; import java.io.IOException; import java.io.InputStream; diff --git a/spring-boot-starter/src/main/java/org/smartboot/springboot/starter/SmartContainerInitializer.java b/spring-boot-starter/src/main/java/org/smartboot/springboot/starter/SmartContainerInitializer.java index 14934cb..52695ba 100644 --- a/spring-boot-starter/src/main/java/org/smartboot/springboot/starter/SmartContainerInitializer.java +++ b/spring-boot-starter/src/main/java/org/smartboot/springboot/starter/SmartContainerInitializer.java @@ -12,9 +12,9 @@ package org.smartboot.springboot.starter; import org.springframework.boot.web.servlet.ServletContextInitializer; -import javax.servlet.ServletContainerInitializer; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; +import jakarta.servlet.ServletContainerInitializer; +import jakarta.servlet.ServletContext; +import jakarta.servlet.ServletException; import java.util.Set; /** diff --git a/testsuite/src/main/java/org/smartboot/servlet/testsuite/JettyEmbeddedContainer.java b/testsuite/src/main/java/org/smartboot/servlet/testsuite/JettyEmbeddedContainer.java index 204ad63..7e2dc10 100644 --- a/testsuite/src/main/java/org/smartboot/servlet/testsuite/JettyEmbeddedContainer.java +++ b/testsuite/src/main/java/org/smartboot/servlet/testsuite/JettyEmbeddedContainer.java @@ -30,7 +30,7 @@ import org.smartboot.servlet.ContainerRuntime; import org.smartboot.servlet.ServletContextRuntime; import org.smartboot.servlet.conf.ServletInfo; -import javax.servlet.ServletContext; +import jakarta.servlet.ServletContext; import java.io.File; import java.util.Map; import java.util.Set; -- Gitee From 4fb158da9f5b1d916fa6ded3a6bcd649a58cd6ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=88=80?= Date: Mon, 12 Jun 2023 21:43:53 +0800 Subject: [PATCH 02/13] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../smartboot/servlet/AnnotationsLoader.java | 10 +- .../smartboot/servlet/ContainerRuntime.java | 8 +- .../org/smartboot/servlet/DefaultServlet.java | 14 +-- .../org/smartboot/servlet/HandlerContext.java | 8 +- .../servlet/ServletContextRuntime.java | 26 ++--- .../servlet/SmartHttpServletRequest.java | 2 +- .../smartboot/servlet/WebXmlParseEngine.java | 4 +- .../servlet/conf/DeploymentInfo.java | 24 ++-- .../smartboot/servlet/conf/FilterInfo.java | 2 +- .../servlet/conf/FilterMappingInfo.java | 2 +- .../conf/ServletContainerInitializerInfo.java | 2 +- .../smartboot/servlet/conf/ServletInfo.java | 4 +- .../servlet/handler/FilterMatchHandler.java | 16 +-- .../servlet/handler/ServletMatchHandler.java | 4 +- .../ServletRequestListenerHandler.java | 6 +- .../handler/ServletServiceHandler.java | 8 +- .../impl/ApplicationFilterRegistration.java | 4 +- .../impl/ApplicationServletRegistration.java | 6 +- .../servlet/impl/AsyncContextImpl.java | 107 +++++++++++++++--- .../servlet/impl/FilterConfigImpl.java | 4 +- .../servlet/impl/HttpServletRequestImpl.java | 45 +++++--- .../servlet/impl/HttpServletResponseImpl.java | 6 +- .../org/smartboot/servlet/impl/PartImpl.java | 2 +- .../servlet/impl/ServletConfigImpl.java | 4 +- .../servlet/impl/ServletContextImpl.java | 36 +++--- .../servlet/impl/ServletInputStreamImpl.java | 4 +- .../servlet/impl/ServletOutputStreamImpl.java | 4 +- .../servlet/impl/SessionCookieConfigImpl.java | 2 +- .../dispatcher/DispatcherProviderImpl.java | 2 +- .../dispatcher/RequestDispatcherImpl.java | 18 +-- .../ServletRequestDispatcherWrapper.java | 28 ++--- .../ServletResponseDispatcherWrapper.java | 4 +- .../plugins/session/HttpSessionImpl.java | 12 +- .../plugins/session/SessionProviderImpl.java | 12 +- .../servlet/provider/DispatcherProvider.java | 2 +- .../servlet/provider/SessionProvider.java | 4 +- .../sandbox/MockDispatcherProvider.java | 2 +- .../servlet/sandbox/MockSessionProvider.java | 4 +- .../commons/fileupload/DiskFileUpload.java | 2 +- .../commons/fileupload/FileUploadBase.java | 2 +- .../servlet/FileCleanerCleanup.java | 6 +- .../fileupload/servlet/ServletFileUpload.java | 2 +- .../servlet/ServletRequestContext.java | 2 +- .../starter/SmartContainerInitializer.java | 6 +- .../testsuite/JettyEmbeddedContainer.java | 2 +- 46 files changed, 283 insertions(+), 193 deletions(-) diff --git a/pom.xml b/pom.xml index 58d74cb..a3d34e9 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ pom - 1.2.1 + 1.2.3 0.3 4.0.1 diff --git a/servlet-core/src/main/java/org/smartboot/servlet/AnnotationsLoader.java b/servlet-core/src/main/java/org/smartboot/servlet/AnnotationsLoader.java index f564c0e..d7e6fd5 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/AnnotationsLoader.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/AnnotationsLoader.java @@ -18,11 +18,11 @@ import org.smartboot.servlet.third.bcel.classfile.ClassParser; import org.smartboot.servlet.third.bcel.classfile.JavaClass; import org.smartboot.servlet.util.CollectionUtils; -import jakarta.servlet.ServletContainerInitializer; -import jakarta.servlet.annotation.HandlesTypes; -import jakarta.servlet.annotation.WebInitParam; -import jakarta.servlet.annotation.WebListener; -import jakarta.servlet.annotation.WebServlet; +import javax.servlet.ServletContainerInitializer; +import javax.servlet.annotation.HandlesTypes; +import javax.servlet.annotation.WebInitParam; +import javax.servlet.annotation.WebListener; +import javax.servlet.annotation.WebServlet; import java.io.File; import java.io.FileInputStream; import java.io.IOException; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/ContainerRuntime.java b/servlet-core/src/main/java/org/smartboot/servlet/ContainerRuntime.java index c521437..cc01f37 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/ContainerRuntime.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/ContainerRuntime.java @@ -10,9 +10,6 @@ package org.smartboot.servlet; -import jakarta.servlet.DispatcherType; -import jakarta.servlet.ServletContainerInitializer; -import jakarta.servlet.http.HttpServletResponse; import org.smartboot.http.common.logging.Logger; import org.smartboot.http.common.logging.LoggerFactory; import org.smartboot.http.common.utils.StringUtils; @@ -36,6 +33,9 @@ import org.smartboot.servlet.impl.HttpServletResponseImpl; import org.smartboot.servlet.impl.ServletContextImpl; import org.smartboot.servlet.plugins.Plugin; +import javax.servlet.DispatcherType; +import javax.servlet.ServletContainerInitializer; +import javax.servlet.ServletResponse; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -98,7 +98,7 @@ public class ContainerRuntime { @Override public void handleRequest(HandlerContext handlerContext) { try { - HttpServletResponse response = handlerContext.getResponse(); + ServletResponse response = handlerContext.getResponse(); response.setContentLength(line.length); response.getOutputStream().write(line); } catch (IOException e) { diff --git a/servlet-core/src/main/java/org/smartboot/servlet/DefaultServlet.java b/servlet-core/src/main/java/org/smartboot/servlet/DefaultServlet.java index 714ff11..e1776e5 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/DefaultServlet.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/DefaultServlet.java @@ -20,13 +20,13 @@ import org.smartboot.http.common.utils.Mimetypes; import org.smartboot.http.common.utils.StringUtils; import org.smartboot.servlet.exception.WrappedRuntimeException; -import jakarta.servlet.DispatcherType; -import jakarta.servlet.ServletConfig; -import jakarta.servlet.ServletContext; -import jakarta.servlet.ServletException; -import jakarta.servlet.http.HttpServlet; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.DispatcherType; +import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/HandlerContext.java b/servlet-core/src/main/java/org/smartboot/servlet/HandlerContext.java index 92a8af1..02cac9c 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/HandlerContext.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/HandlerContext.java @@ -13,7 +13,7 @@ package org.smartboot.servlet; import org.smartboot.servlet.conf.ServletInfo; import org.smartboot.servlet.impl.ServletContextImpl; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.ServletResponse; /** * 请求处理上下文对象 @@ -29,7 +29,7 @@ public class HandlerContext { /** * 响应 */ - private final HttpServletResponse response; + private final ServletResponse response; /** * 匹配的Servlet上下文 */ @@ -41,7 +41,7 @@ public class HandlerContext { */ private ServletInfo servletInfo; - public HandlerContext(SmartHttpServletRequest request, HttpServletResponse response, ServletContextImpl servletContext, boolean namedDispatcher) { + public HandlerContext(SmartHttpServletRequest request, ServletResponse response, ServletContextImpl servletContext, boolean namedDispatcher) { this.request = request; this.response = response; this.servletContext = servletContext; @@ -58,7 +58,7 @@ public class HandlerContext { } - public HttpServletResponse getResponse() { + public ServletResponse getResponse() { return response; } diff --git a/servlet-core/src/main/java/org/smartboot/servlet/ServletContextRuntime.java b/servlet-core/src/main/java/org/smartboot/servlet/ServletContextRuntime.java index 5588366..7ef0a92 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/ServletContextRuntime.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/ServletContextRuntime.java @@ -10,19 +10,19 @@ package org.smartboot.servlet; -import jakarta.servlet.Filter; -import jakarta.servlet.FilterConfig; -import jakarta.servlet.RequestDispatcher; -import jakarta.servlet.Servlet; -import jakarta.servlet.ServletConfig; -import jakarta.servlet.ServletContext; -import jakarta.servlet.ServletContextEvent; -import jakarta.servlet.ServletException; -import jakarta.servlet.UnavailableException; -import jakarta.servlet.annotation.WebListener; -import jakarta.servlet.http.HttpServlet; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.Filter; +import javax.servlet.FilterConfig; +import javax.servlet.RequestDispatcher; +import javax.servlet.Servlet; +import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletException; +import javax.servlet.UnavailableException; +import javax.servlet.annotation.WebListener; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import org.smartboot.http.common.enums.HttpStatus; import org.smartboot.http.common.utils.StringUtils; import org.smartboot.servlet.conf.DeploymentInfo; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/SmartHttpServletRequest.java b/servlet-core/src/main/java/org/smartboot/servlet/SmartHttpServletRequest.java index 696408e..243bfb2 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/SmartHttpServletRequest.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/SmartHttpServletRequest.java @@ -12,7 +12,7 @@ package org.smartboot.servlet; import org.smartboot.servlet.conf.ServletInfo; -import jakarta.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequest; /** * @author 三刀 diff --git a/servlet-core/src/main/java/org/smartboot/servlet/WebXmlParseEngine.java b/servlet-core/src/main/java/org/smartboot/servlet/WebXmlParseEngine.java index 7fb27ae..37324be 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/WebXmlParseEngine.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/WebXmlParseEngine.java @@ -26,8 +26,8 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; -import jakarta.servlet.DispatcherType; -import jakarta.servlet.MultipartConfigElement; +import javax.servlet.DispatcherType; +import javax.servlet.MultipartConfigElement; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/conf/DeploymentInfo.java b/servlet-core/src/main/java/org/smartboot/servlet/conf/DeploymentInfo.java index 6aa2c7e..ca2c275 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/conf/DeploymentInfo.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/conf/DeploymentInfo.java @@ -10,22 +10,24 @@ package org.smartboot.servlet.conf; -import jakarta.servlet.ServletContainerInitializer; -import jakarta.servlet.ServletContextAttributeListener; -import jakarta.servlet.ServletContextListener; -import jakarta.servlet.ServletRequestAttributeListener; -import jakarta.servlet.ServletRequestListener; -import jakarta.servlet.annotation.HandlesTypes; -import jakarta.servlet.http.HttpSessionAttributeListener; -import jakarta.servlet.http.HttpSessionListener; import org.smartboot.servlet.AnnotationsLoader; +import javax.servlet.ServletContainerInitializer; +import javax.servlet.ServletContextAttributeListener; +import javax.servlet.ServletContextListener; +import javax.servlet.ServletRequestAttributeListener; +import javax.servlet.ServletRequestListener; +import javax.servlet.annotation.HandlesTypes; +import javax.servlet.http.HttpSessionAttributeListener; +import javax.servlet.http.HttpSessionListener; import java.net.URL; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; /** * 运行环境部署配置 @@ -61,6 +63,8 @@ public class DeploymentInfo { */ private int sessionTimeout; + private ExecutorService executor = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors()); + public URL getContextUrl() { return contextUrl; } @@ -258,4 +262,8 @@ public class DeploymentInfo { public void setSessionTimeout(int sessionTimeout) { this.sessionTimeout = sessionTimeout; } + + public ExecutorService getExecutor() { + return executor; + } } diff --git a/servlet-core/src/main/java/org/smartboot/servlet/conf/FilterInfo.java b/servlet-core/src/main/java/org/smartboot/servlet/conf/FilterInfo.java index 90dc811..ed39e5a 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/conf/FilterInfo.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/conf/FilterInfo.java @@ -10,7 +10,7 @@ package org.smartboot.servlet.conf; -import jakarta.servlet.Filter; +import javax.servlet.Filter; import java.util.Collections; import java.util.HashMap; import java.util.Map; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/conf/FilterMappingInfo.java b/servlet-core/src/main/java/org/smartboot/servlet/conf/FilterMappingInfo.java index 7fe0902..38c5e79 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/conf/FilterMappingInfo.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/conf/FilterMappingInfo.java @@ -12,7 +12,7 @@ package org.smartboot.servlet.conf; import org.smartboot.servlet.enums.FilterMappingType; -import jakarta.servlet.DispatcherType; +import javax.servlet.DispatcherType; import java.util.Set; /** diff --git a/servlet-core/src/main/java/org/smartboot/servlet/conf/ServletContainerInitializerInfo.java b/servlet-core/src/main/java/org/smartboot/servlet/conf/ServletContainerInitializerInfo.java index 6fcf930..81dc02b 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/conf/ServletContainerInitializerInfo.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/conf/ServletContainerInitializerInfo.java @@ -10,7 +10,7 @@ package org.smartboot.servlet.conf; -import jakarta.servlet.ServletContainerInitializer; +import javax.servlet.ServletContainerInitializer; import java.util.Set; /** diff --git a/servlet-core/src/main/java/org/smartboot/servlet/conf/ServletInfo.java b/servlet-core/src/main/java/org/smartboot/servlet/conf/ServletInfo.java index 044f039..6491bb5 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/conf/ServletInfo.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/conf/ServletInfo.java @@ -12,8 +12,8 @@ package org.smartboot.servlet.conf; import org.smartboot.servlet.util.PathMatcherUtil; -import jakarta.servlet.MultipartConfigElement; -import jakarta.servlet.Servlet; +import javax.servlet.MultipartConfigElement; +import javax.servlet.Servlet; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/handler/FilterMatchHandler.java b/servlet-core/src/main/java/org/smartboot/servlet/handler/FilterMatchHandler.java index 586c45a..4599480 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/handler/FilterMatchHandler.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/handler/FilterMatchHandler.java @@ -18,14 +18,14 @@ import org.smartboot.servlet.enums.FilterMappingType; import org.smartboot.servlet.exception.WrappedRuntimeException; import org.smartboot.servlet.util.PathMatcherUtil; -import jakarta.servlet.Filter; -import jakarta.servlet.FilterChain; -import jakarta.servlet.Servlet; -import jakarta.servlet.ServletException; -import jakarta.servlet.ServletRequest; -import jakarta.servlet.ServletResponse; -import jakarta.servlet.http.HttpServlet; -import jakarta.servlet.http.HttpServletRequest; +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.Servlet; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletMatchHandler.java b/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletMatchHandler.java index 0288cc1..146b906 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletMatchHandler.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletMatchHandler.java @@ -18,8 +18,8 @@ import org.smartboot.servlet.exception.WrappedRuntimeException; import org.smartboot.servlet.impl.ServletContextImpl; import org.smartboot.servlet.util.PathMatcherUtil; -import jakarta.servlet.Servlet; -import jakarta.servlet.ServletException; +import javax.servlet.Servlet; +import javax.servlet.ServletException; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletRequestListenerHandler.java b/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletRequestListenerHandler.java index b6006b0..0773af3 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletRequestListenerHandler.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletRequestListenerHandler.java @@ -14,9 +14,9 @@ import org.smartboot.http.common.logging.Logger; import org.smartboot.http.common.logging.LoggerFactory; import org.smartboot.servlet.HandlerContext; -import jakarta.servlet.ServletContext; -import jakarta.servlet.ServletRequestEvent; -import jakarta.servlet.ServletRequestListener; +import javax.servlet.ServletContext; +import javax.servlet.ServletRequestEvent; +import javax.servlet.ServletRequestListener; import java.util.List; /** diff --git a/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletServiceHandler.java b/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletServiceHandler.java index db6fd22..5a295e7 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletServiceHandler.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/handler/ServletServiceHandler.java @@ -14,9 +14,9 @@ import org.smartboot.servlet.HandlerContext; import org.smartboot.servlet.conf.ServletInfo; import org.smartboot.servlet.exception.WrappedRuntimeException; -import jakarta.servlet.ServletException; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.ServletException; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; import java.io.IOException; /** @@ -31,7 +31,7 @@ public class ServletServiceHandler extends Handler { public void handleRequest(HandlerContext handlerContext) { try { HttpServletRequest request = handlerContext.getRequest(); - HttpServletResponse response = handlerContext.getResponse(); + ServletResponse response = handlerContext.getResponse(); //成功匹配到Servlet,直接执行 if (handlerContext.getServletInfo() != null) { handlerContext.getServletInfo().getServlet().service(request, response); diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/ApplicationFilterRegistration.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/ApplicationFilterRegistration.java index 6f247be..771dc5c 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/ApplicationFilterRegistration.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/ApplicationFilterRegistration.java @@ -17,8 +17,8 @@ import org.smartboot.servlet.conf.ServletMappingInfo; import org.smartboot.servlet.enums.FilterMappingType; import org.smartboot.servlet.util.PathMatcherUtil; -import jakarta.servlet.DispatcherType; -import jakarta.servlet.FilterRegistration; +import javax.servlet.DispatcherType; +import javax.servlet.FilterRegistration; import java.util.Collection; import java.util.EnumSet; import java.util.HashMap; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/ApplicationServletRegistration.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/ApplicationServletRegistration.java index 76fc86f..e2f75c2 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/ApplicationServletRegistration.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/ApplicationServletRegistration.java @@ -16,9 +16,9 @@ import org.smartboot.servlet.conf.DeploymentInfo; import org.smartboot.servlet.conf.ServletInfo; import org.smartboot.servlet.conf.ServletMappingInfo; -import jakarta.servlet.MultipartConfigElement; -import jakarta.servlet.ServletRegistration; -import jakarta.servlet.ServletSecurityElement; +import javax.servlet.MultipartConfigElement; +import javax.servlet.ServletRegistration; +import javax.servlet.ServletSecurityElement; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/AsyncContextImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/AsyncContextImpl.java index 03288e2..1c94c42 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/AsyncContextImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/AsyncContextImpl.java @@ -10,80 +10,153 @@ package org.smartboot.servlet.impl; -import jakarta.servlet.AsyncContext; -import jakarta.servlet.AsyncListener; -import jakarta.servlet.ServletContext; -import jakarta.servlet.ServletException; -import jakarta.servlet.ServletRequest; -import jakarta.servlet.ServletResponse; +import org.smartboot.servlet.HandlerContext; +import org.smartboot.servlet.ServletContextRuntime; +import org.smartboot.servlet.plugins.dispatcher.ServletRequestDispatcherWrapper; + +import javax.servlet.AsyncContext; +import javax.servlet.AsyncEvent; +import javax.servlet.AsyncListener; +import javax.servlet.DispatcherType; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import java.io.IOException; +import java.util.LinkedList; +import java.util.List; /** * @author 三刀(zhengjunweimail@163.com) * @version V1.0 , 2022/11/23 */ public class AsyncContextImpl implements AsyncContext { + private List listeners = new LinkedList<>(); + private HttpServletRequestImpl originalRequest; + private final ServletRequest request; + private final ServletResponse response; + private long timeout = 5000; + private boolean dispatched; + private boolean complete; + private final ServletContextRuntime servletContextRuntime; + + public AsyncContextImpl(ServletContextRuntime deployment, HttpServletRequestImpl originalRequest, ServletRequest request, ServletResponse response) { + this.originalRequest = originalRequest; + this.request = request; + this.response = response; + this.servletContextRuntime = deployment; + } + @Override public ServletRequest getRequest() { - return null; + return request; } @Override public ServletResponse getResponse() { - return null; + return response; } @Override public boolean hasOriginalRequestAndResponse() { - return false; + return request instanceof HttpServletRequestImpl && response instanceof HttpServletResponseImpl; } @Override public void dispatch() { + if (hasOriginalRequestAndResponse()) { + String toDispatch = originalRequest.getRequestURI().substring(request.getServletContext().getContextPath().length()); + String qs = originalRequest.getQueryString(); + if (qs != null && !qs.isEmpty()) { + toDispatch = toDispatch + "?" + qs; + } + dispatch(request.getServletContext(), toDispatch); + } else { + throw new UnsupportedOperationException(); +// dispatch(request.getServletContext(), ""); + } } @Override public void dispatch(String path) { - + dispatch(request.getServletContext(), path); } @Override public void dispatch(ServletContext context, String path) { + if (dispatched) { + throw new IllegalStateException(); + } + dispatched = true; + servletContextRuntime.getDeploymentInfo().getExecutor().execute(new Runnable() { + @Override + public void run() { + ServletRequestDispatcherWrapper wrapper = new ServletRequestDispatcherWrapper(originalRequest, DispatcherType.ASYNC, false); + HandlerContext handlerContext = new HandlerContext(wrapper, response, originalRequest.getServletContext(), false); + servletContextRuntime.getServletContext().getPipeline().handleRequest(handlerContext); + } + }); } @Override public void complete() { - + listeners.forEach(unit -> { + try { + unit.listener.onComplete(new AsyncEvent(this, unit.request, unit.response)); + } catch (IOException e) { + e.printStackTrace(); + } + }); } @Override public void start(Runnable run) { - + servletContextRuntime.getDeploymentInfo().getExecutor().execute(run); } @Override public void addListener(AsyncListener listener) { - + addListener(listener, request, response); } @Override public void addListener(AsyncListener listener, ServletRequest servletRequest, ServletResponse servletResponse) { - + if (dispatched) { + throw new IllegalStateException(); + } + listeners.add(new ListenerUnit(listener, request, response)); } @Override public T createListener(Class clazz) throws ServletException { - return null; + try { + return clazz.newInstance(); + } catch (Exception e) { + throw new ServletException(e); + } } @Override public void setTimeout(long timeout) { - + this.timeout = timeout; } @Override public long getTimeout() { - return 0; + return timeout; + } + + static class ListenerUnit { + AsyncListener listener; + ServletRequest request; + ServletResponse response; + + public ListenerUnit(AsyncListener listener, ServletRequest request, ServletResponse response) { + this.listener = listener; + this.request = request; + this.response = response; + } } } diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/FilterConfigImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/FilterConfigImpl.java index ea24e90..041138c 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/FilterConfigImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/FilterConfigImpl.java @@ -12,8 +12,8 @@ package org.smartboot.servlet.impl; import org.smartboot.servlet.conf.FilterInfo; -import jakarta.servlet.FilterConfig; -import jakarta.servlet.ServletContext; +import javax.servlet.FilterConfig; +import javax.servlet.ServletContext; import java.util.Collections; import java.util.Enumeration; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletRequestImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletRequestImpl.java index 87d01d0..88d91af 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletRequestImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletRequestImpl.java @@ -28,21 +28,21 @@ import org.smartboot.servlet.third.commons.fileupload.disk.DiskFileItemFactory; import org.smartboot.servlet.util.CollectionUtils; import org.smartboot.servlet.util.DateUtil; -import jakarta.servlet.AsyncContext; -import jakarta.servlet.DispatcherType; -import jakarta.servlet.MultipartConfigElement; -import jakarta.servlet.RequestDispatcher; -import jakarta.servlet.ServletContext; -import jakarta.servlet.ServletException; -import jakarta.servlet.ServletInputStream; -import jakarta.servlet.ServletRequest; -import jakarta.servlet.ServletRequestAttributeEvent; -import jakarta.servlet.ServletResponse; -import jakarta.servlet.http.Cookie; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.servlet.http.HttpSession; -import jakarta.servlet.http.HttpUpgradeHandler; -import jakarta.servlet.http.Part; +import javax.servlet.AsyncContext; +import javax.servlet.DispatcherType; +import javax.servlet.MultipartConfigElement; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletInputStream; +import javax.servlet.ServletRequest; +import javax.servlet.ServletRequestAttributeEvent; +import javax.servlet.ServletResponse; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import javax.servlet.http.HttpUpgradeHandler; +import javax.servlet.http.Part; import java.io.BufferedReader; import java.io.File; import java.io.IOException; @@ -97,6 +97,8 @@ public class HttpServletRequestImpl implements SmartHttpServletRequest { */ private ServletInfo servletInfo; + private boolean asyncStarted = false; + public HttpServletRequestImpl(HttpRequest request, ServletContextRuntime runtime, DispatcherType dispatcherType) { this.request = request; this.dispatcherType = dispatcherType; @@ -644,17 +646,24 @@ public class HttpServletRequestImpl implements SmartHttpServletRequest { @Override public AsyncContext startAsync() throws IllegalStateException { - throw new UnsupportedOperationException(); + return startAsync(this, httpServletResponse); } @Override public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws IllegalStateException { - throw new UnsupportedOperationException(); + if (!isAsyncSupported()) { + throw new IllegalStateException(); + } + if (asyncStarted) { + throw new IllegalStateException(); + } + asyncStarted = true; + return new AsyncContextImpl(runtime, this, servletRequest, servletResponse); } @Override public boolean isAsyncStarted() { - return false; + return asyncStarted; } @Override diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java index 95d54e3..8f5c934 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java @@ -10,9 +10,9 @@ package org.smartboot.servlet.impl; -import jakarta.servlet.http.Cookie; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import org.smartboot.http.common.enums.HeaderNameEnum; import org.smartboot.http.common.enums.HttpStatus; import org.smartboot.http.common.logging.Logger; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/PartImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/PartImpl.java index 464a104..5243d59 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/PartImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/PartImpl.java @@ -14,7 +14,7 @@ import org.smartboot.servlet.third.commons.fileupload.FileItem; import org.smartboot.servlet.third.commons.fileupload.ParameterParser; import org.smartboot.servlet.third.commons.fileupload.disk.DiskFileItem; -import jakarta.servlet.http.Part; +import javax.servlet.http.Part; import java.io.File; import java.io.IOException; import java.io.InputStream; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletConfigImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletConfigImpl.java index f331a16..30f8687 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletConfigImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletConfigImpl.java @@ -12,8 +12,8 @@ package org.smartboot.servlet.impl; import org.smartboot.servlet.conf.ServletInfo; -import jakarta.servlet.ServletConfig; -import jakarta.servlet.ServletContext; +import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; import java.util.Collections; import java.util.Enumeration; /** diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletContextImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletContextImpl.java index 8453452..1b03720 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletContextImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletContextImpl.java @@ -22,24 +22,24 @@ import org.smartboot.servlet.enums.ServletContextPathType; import org.smartboot.servlet.exception.WrappedRuntimeException; import org.smartboot.servlet.handler.HandlerPipeline; -import jakarta.servlet.Filter; -import jakarta.servlet.FilterRegistration; -import jakarta.servlet.RequestDispatcher; -import jakarta.servlet.Servlet; -import jakarta.servlet.ServletContext; -import jakarta.servlet.ServletContextAttributeEvent; -import jakarta.servlet.ServletContextAttributeListener; -import jakarta.servlet.ServletContextEvent; -import jakarta.servlet.ServletContextListener; -import jakarta.servlet.ServletException; -import jakarta.servlet.ServletRegistration; -import jakarta.servlet.ServletRequestAttributeListener; -import jakarta.servlet.ServletRequestListener; -import jakarta.servlet.SessionCookieConfig; -import jakarta.servlet.SessionTrackingMode; -import jakarta.servlet.descriptor.JspConfigDescriptor; -import jakarta.servlet.http.HttpSessionAttributeListener; -import jakarta.servlet.http.HttpSessionListener; +import javax.servlet.Filter; +import javax.servlet.FilterRegistration; +import javax.servlet.RequestDispatcher; +import javax.servlet.Servlet; +import javax.servlet.ServletContext; +import javax.servlet.ServletContextAttributeEvent; +import javax.servlet.ServletContextAttributeListener; +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; +import javax.servlet.ServletRequestAttributeListener; +import javax.servlet.ServletRequestListener; +import javax.servlet.SessionCookieConfig; +import javax.servlet.SessionTrackingMode; +import javax.servlet.descriptor.JspConfigDescriptor; +import javax.servlet.http.HttpSessionAttributeListener; +import javax.servlet.http.HttpSessionListener; import java.io.File; import java.io.InputStream; import java.net.MalformedURLException; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletInputStreamImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletInputStreamImpl.java index 3ce7010..eba58fa 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletInputStreamImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletInputStreamImpl.java @@ -10,8 +10,8 @@ package org.smartboot.servlet.impl; -import jakarta.servlet.ReadListener; -import jakarta.servlet.ServletInputStream; +import javax.servlet.ReadListener; +import javax.servlet.ServletInputStream; import java.io.IOException; import java.io.InputStream; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletOutputStreamImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletOutputStreamImpl.java index 3d81d8f..3e79cd7 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletOutputStreamImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletOutputStreamImpl.java @@ -12,8 +12,8 @@ package org.smartboot.servlet.impl; import org.smartboot.http.common.BufferOutputStream; -import jakarta.servlet.ServletOutputStream; -import jakarta.servlet.WriteListener; +import javax.servlet.ServletOutputStream; +import javax.servlet.WriteListener; import java.io.IOException; /** diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/SessionCookieConfigImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/SessionCookieConfigImpl.java index bbf00a2..1a02411 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/SessionCookieConfigImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/SessionCookieConfigImpl.java @@ -10,7 +10,7 @@ package org.smartboot.servlet.impl; -import jakarta.servlet.SessionCookieConfig; +import javax.servlet.SessionCookieConfig; import org.smartboot.servlet.ServletContextRuntime; import org.smartboot.servlet.provider.SessionProvider; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/DispatcherProviderImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/DispatcherProviderImpl.java index a714267..ccbafee 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/DispatcherProviderImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/DispatcherProviderImpl.java @@ -16,7 +16,7 @@ import org.smartboot.servlet.impl.HttpServletRequestImpl; import org.smartboot.servlet.impl.ServletContextImpl; import org.smartboot.servlet.provider.DispatcherProvider; -import jakarta.servlet.RequestDispatcher; +import javax.servlet.RequestDispatcher; /** * @author 三刀 diff --git a/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/RequestDispatcherImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/RequestDispatcherImpl.java index dcecc8a..6e22370 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/RequestDispatcherImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/RequestDispatcherImpl.java @@ -18,13 +18,13 @@ import org.smartboot.servlet.impl.HttpServletRequestImpl; import org.smartboot.servlet.impl.HttpServletResponseImpl; import org.smartboot.servlet.impl.ServletContextImpl; -import jakarta.servlet.DispatcherType; -import jakarta.servlet.RequestDispatcher; -import jakarta.servlet.ServletException; -import jakarta.servlet.ServletRequest; -import jakarta.servlet.ServletRequestWrapper; -import jakarta.servlet.ServletResponse; -import jakarta.servlet.ServletResponseWrapper; +import javax.servlet.DispatcherType; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletRequestWrapper; +import javax.servlet.ServletResponse; +import javax.servlet.ServletResponseWrapper; import java.io.IOException; import java.util.HashMap; import java.util.Map; @@ -91,14 +91,14 @@ class RequestDispatcherImpl implements RequestDispatcher { requestWrapper.setRequestUri(requestWrapper.getRequest().getRequestURI()); Map parameters = new HashMap<>(); HttpUtils.decodeParamString(requestWrapper.getQueryString(), parameters); - requestWrapper.setParamaters(parameters); + requestWrapper.setParameters(parameters); } else { String[] array = StringUtils.split(dispatcherURL, "?"); requestWrapper.setRequestUri(array[0]); Map parameters = new HashMap<>(); if (array.length > 1) { HttpUtils.decodeParamString(array[1], parameters); - requestWrapper.setParamaters(parameters); + requestWrapper.setParameters(parameters); } } diff --git a/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/ServletRequestDispatcherWrapper.java b/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/ServletRequestDispatcherWrapper.java index 04afa40..552a5dc 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/ServletRequestDispatcherWrapper.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/ServletRequestDispatcherWrapper.java @@ -16,9 +16,9 @@ import org.smartboot.servlet.conf.ServletInfo; import org.smartboot.servlet.impl.HttpServletRequestImpl; import org.smartboot.servlet.impl.HttpServletResponseImpl; -import jakarta.servlet.DispatcherType; -import jakarta.servlet.http.HttpServletRequestWrapper; -import jakarta.servlet.http.HttpSession; +import javax.servlet.DispatcherType; +import javax.servlet.http.HttpServletRequestWrapper; +import javax.servlet.http.HttpSession; import java.util.Collections; import java.util.Enumeration; import java.util.Map; @@ -27,7 +27,7 @@ import java.util.Map; * @author 三刀 * @version V1.0 , 2020/11/20 */ -class ServletRequestDispatcherWrapper extends HttpServletRequestWrapper implements SmartHttpServletRequest { +public class ServletRequestDispatcherWrapper extends HttpServletRequestWrapper implements SmartHttpServletRequest { private final HttpServletRequestImpl request; private final DispatcherType dispatcherType; private final boolean named; @@ -39,7 +39,7 @@ class ServletRequestDispatcherWrapper extends HttpServletRequestWrapper implemen private int pathInfoStart; private int pathInfoEnd; private String requestUri; - private Map paramaters; + private Map parameters; public ServletRequestDispatcherWrapper(HttpServletRequestImpl request, DispatcherType dispatcherType, boolean named) { super(request); @@ -50,32 +50,32 @@ class ServletRequestDispatcherWrapper extends HttpServletRequestWrapper implemen @Override public String getParameter(String name) { - if (paramaters == null) { + if (parameters == null) { return null; } - String[] values = paramaters.get(name); + String[] values = parameters.get(name); return values == null || values.length == 0 ? null : values[0]; } @Override public Map getParameterMap() { - return paramaters == null ? Collections.emptyMap() : paramaters; + return parameters == null ? Collections.emptyMap() : parameters; } @Override public Enumeration getParameterNames() { - if (paramaters == null) { + if (parameters == null) { return null; } - return Collections.enumeration(paramaters.keySet()); + return Collections.enumeration(parameters.keySet()); } @Override public String[] getParameterValues(String name) { - if (paramaters == null) { + if (parameters == null) { return null; } - return paramaters.get(name); + return parameters.get(name); } @Override @@ -145,8 +145,8 @@ class ServletRequestDispatcherWrapper extends HttpServletRequestWrapper implemen this.servletPathEnd = end; } - public void setParamaters(Map paramaters) { - this.paramaters = paramaters; + public void setParameters(Map parameters) { + this.parameters = parameters; } @Override diff --git a/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/ServletResponseDispatcherWrapper.java b/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/ServletResponseDispatcherWrapper.java index 29a21de..6713e20 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/ServletResponseDispatcherWrapper.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/ServletResponseDispatcherWrapper.java @@ -12,8 +12,8 @@ package org.smartboot.servlet.plugins.dispatcher; import org.smartboot.servlet.impl.HttpServletResponseImpl; -import jakarta.servlet.http.Cookie; -import jakarta.servlet.http.HttpServletResponseWrapper; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletResponseWrapper; import java.io.IOException; import java.util.Locale; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/plugins/session/HttpSessionImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/plugins/session/HttpSessionImpl.java index 6ac9e6c..d02441c 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/plugins/session/HttpSessionImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/plugins/session/HttpSessionImpl.java @@ -13,12 +13,12 @@ package org.smartboot.servlet.plugins.session; import org.smartboot.servlet.impl.ServletContextImpl; import org.smartboot.servlet.util.CollectionUtils; -import jakarta.servlet.ServletContext; -import jakarta.servlet.http.HttpSession; -import jakarta.servlet.http.HttpSessionBindingEvent; -import jakarta.servlet.http.HttpSessionContext; -import jakarta.servlet.http.HttpSessionEvent; -import jakarta.servlet.http.HttpSessionListener; +import javax.servlet.ServletContext; +import javax.servlet.http.HttpSession; +import javax.servlet.http.HttpSessionBindingEvent; +import javax.servlet.http.HttpSessionContext; +import javax.servlet.http.HttpSessionEvent; +import javax.servlet.http.HttpSessionListener; import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/plugins/session/SessionProviderImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/plugins/session/SessionProviderImpl.java index 21cd35f..ea95b8a 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/plugins/session/SessionProviderImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/plugins/session/SessionProviderImpl.java @@ -10,12 +10,12 @@ package org.smartboot.servlet.plugins.session; -import jakarta.servlet.SessionCookieConfig; -import jakarta.servlet.http.Cookie; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.servlet.http.HttpSession; -import jakarta.servlet.http.HttpSessionContext; +import javax.servlet.SessionCookieConfig; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import javax.servlet.http.HttpSessionContext; import org.smartboot.servlet.impl.HttpServletRequestImpl; import org.smartboot.servlet.provider.SessionProvider; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/provider/DispatcherProvider.java b/servlet-core/src/main/java/org/smartboot/servlet/provider/DispatcherProvider.java index 42ee42e..ae65990 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/provider/DispatcherProvider.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/provider/DispatcherProvider.java @@ -13,7 +13,7 @@ package org.smartboot.servlet.provider; import org.smartboot.servlet.impl.HttpServletRequestImpl; import org.smartboot.servlet.impl.ServletContextImpl; -import jakarta.servlet.RequestDispatcher; +import javax.servlet.RequestDispatcher; /** * @author 三刀 diff --git a/servlet-core/src/main/java/org/smartboot/servlet/provider/SessionProvider.java b/servlet-core/src/main/java/org/smartboot/servlet/provider/SessionProvider.java index d34577d..07f94de 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/provider/SessionProvider.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/provider/SessionProvider.java @@ -12,8 +12,8 @@ package org.smartboot.servlet.provider; import org.smartboot.servlet.impl.HttpServletRequestImpl; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.servlet.http.HttpSession; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; /** * @author 三刀 diff --git a/servlet-core/src/main/java/org/smartboot/servlet/sandbox/MockDispatcherProvider.java b/servlet-core/src/main/java/org/smartboot/servlet/sandbox/MockDispatcherProvider.java index a45bae2..d79b0e6 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/sandbox/MockDispatcherProvider.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/sandbox/MockDispatcherProvider.java @@ -15,7 +15,7 @@ import org.smartboot.servlet.impl.ServletContextImpl; import org.smartboot.servlet.plugins.PluginException; import org.smartboot.servlet.provider.DispatcherProvider; -import jakarta.servlet.RequestDispatcher; +import javax.servlet.RequestDispatcher; /** * @author 三刀 diff --git a/servlet-core/src/main/java/org/smartboot/servlet/sandbox/MockSessionProvider.java b/servlet-core/src/main/java/org/smartboot/servlet/sandbox/MockSessionProvider.java index 8b187df..295fa4b 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/sandbox/MockSessionProvider.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/sandbox/MockSessionProvider.java @@ -14,8 +14,8 @@ import org.smartboot.servlet.impl.HttpServletRequestImpl; import org.smartboot.servlet.plugins.PluginException; import org.smartboot.servlet.provider.SessionProvider; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.servlet.http.HttpSession; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; /** * @author 三刀 diff --git a/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/DiskFileUpload.java b/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/DiskFileUpload.java index 28f78ae..0ae15fc 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/DiskFileUpload.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/DiskFileUpload.java @@ -16,7 +16,7 @@ */ package org.smartboot.servlet.third.commons.fileupload; -import jakarta.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequest; import java.io.File; import java.util.List; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/FileUploadBase.java b/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/FileUploadBase.java index 5c1e89b..86c6071 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/FileUploadBase.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/FileUploadBase.java @@ -25,7 +25,7 @@ import org.smartboot.servlet.third.commons.fileupload.util.FileItemHeadersImpl; import org.smartboot.servlet.third.commons.fileupload.util.LimitedInputStream; import org.smartboot.servlet.third.commons.fileupload.util.Streams; -import jakarta.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/FileCleanerCleanup.java b/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/FileCleanerCleanup.java index 2ad477c..6c82019 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/FileCleanerCleanup.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/FileCleanerCleanup.java @@ -18,9 +18,9 @@ package org.smartboot.servlet.third.commons.fileupload.servlet; import org.smartboot.servlet.third.commons.io.FileCleaningTracker; -import jakarta.servlet.ServletContext; -import jakarta.servlet.ServletContextEvent; -import jakarta.servlet.ServletContextListener; +import javax.servlet.ServletContext; +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; /** * A servlet context listener, which ensures that the diff --git a/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/ServletFileUpload.java b/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/ServletFileUpload.java index 5a85c04..e5124f7 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/ServletFileUpload.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/ServletFileUpload.java @@ -23,7 +23,7 @@ import org.smartboot.servlet.third.commons.fileupload.FileUpload; import org.smartboot.servlet.third.commons.fileupload.FileUploadBase; import org.smartboot.servlet.third.commons.fileupload.FileUploadException; -import jakarta.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.List; import java.util.Map; diff --git a/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/ServletRequestContext.java b/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/ServletRequestContext.java index bb3dbe7..d260376 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/ServletRequestContext.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/third/commons/fileupload/servlet/ServletRequestContext.java @@ -19,7 +19,7 @@ package org.smartboot.servlet.third.commons.fileupload.servlet; import org.smartboot.servlet.third.commons.fileupload.FileUploadBase; import org.smartboot.servlet.third.commons.fileupload.UploadContext; -import jakarta.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.io.InputStream; diff --git a/spring-boot-starter/src/main/java/org/smartboot/springboot/starter/SmartContainerInitializer.java b/spring-boot-starter/src/main/java/org/smartboot/springboot/starter/SmartContainerInitializer.java index 52695ba..14934cb 100644 --- a/spring-boot-starter/src/main/java/org/smartboot/springboot/starter/SmartContainerInitializer.java +++ b/spring-boot-starter/src/main/java/org/smartboot/springboot/starter/SmartContainerInitializer.java @@ -12,9 +12,9 @@ package org.smartboot.springboot.starter; import org.springframework.boot.web.servlet.ServletContextInitializer; -import jakarta.servlet.ServletContainerInitializer; -import jakarta.servlet.ServletContext; -import jakarta.servlet.ServletException; +import javax.servlet.ServletContainerInitializer; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; import java.util.Set; /** diff --git a/testsuite/src/main/java/org/smartboot/servlet/testsuite/JettyEmbeddedContainer.java b/testsuite/src/main/java/org/smartboot/servlet/testsuite/JettyEmbeddedContainer.java index 7e2dc10..204ad63 100644 --- a/testsuite/src/main/java/org/smartboot/servlet/testsuite/JettyEmbeddedContainer.java +++ b/testsuite/src/main/java/org/smartboot/servlet/testsuite/JettyEmbeddedContainer.java @@ -30,7 +30,7 @@ import org.smartboot.servlet.ContainerRuntime; import org.smartboot.servlet.ServletContextRuntime; import org.smartboot.servlet.conf.ServletInfo; -import jakarta.servlet.ServletContext; +import javax.servlet.ServletContext; import java.io.File; import java.util.Map; import java.util.Set; -- Gitee From b6f3db0bf755c5a820b09e1f4fe423d79efca2d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=88=80?= Date: Mon, 12 Jun 2023 22:18:26 +0800 Subject: [PATCH 03/13] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../servlet/impl/HttpServletResponseImpl.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java index 8f5c934..cbef53e 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java @@ -10,9 +10,6 @@ package org.smartboot.servlet.impl; -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import org.smartboot.http.common.enums.HeaderNameEnum; import org.smartboot.http.common.enums.HttpStatus; import org.smartboot.http.common.logging.Logger; @@ -22,6 +19,9 @@ import org.smartboot.servlet.ServletContextRuntime; import org.smartboot.servlet.util.DateUtil; import org.smartboot.servlet.util.PathMatcherUtil; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.nio.charset.StandardCharsets; @@ -56,7 +56,15 @@ public class HttpServletResponseImpl implements HttpServletResponse { @Override public void addCookie(Cookie cookie) { - response.setHeader(HeaderNameEnum.SET_COOKIE.getName(), cookie.toString()); + org.smartboot.http.common.Cookie httpCookie = new org.smartboot.http.common.Cookie(cookie.getName(), cookie.getValue()); + httpCookie.setComment(cookie.getComment()); + httpCookie.setDomain(cookie.getDomain()); + httpCookie.setHttpOnly(cookie.isHttpOnly()); + httpCookie.setPath(cookie.getPath()); + httpCookie.setMaxAge(cookie.getMaxAge()); + httpCookie.setSecure(cookie.getSecure()); + httpCookie.setVersion(cookie.getVersion()); + response.addCookie(httpCookie); } @Override @@ -220,7 +228,7 @@ public class HttpServletResponseImpl implements HttpServletResponse { response.setContentType(type); } else { contentType = type.substring(0, split); - setCharacterEncoding(type.substring(split + 10)); + setCharacterEncoding(type.substring(split + 9)); } } -- Gitee From 6b13574590b8720b7109bc5b3976f428c7fcdcfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=88=80?= Date: Mon, 12 Jun 2023 22:32:20 +0800 Subject: [PATCH 04/13] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../servlet/impl/ServletOutputStreamImpl.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletOutputStreamImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletOutputStreamImpl.java index 3e79cd7..9e2e451 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletOutputStreamImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletOutputStreamImpl.java @@ -28,6 +28,7 @@ public class ServletOutputStreamImpl extends ServletOutputStream { */ private byte[] buffer; private int count; + private byte[] cacheByte; public ServletOutputStreamImpl(BufferOutputStream outputStream, byte[] buffer) { this.outputStream = outputStream; @@ -46,8 +47,19 @@ public class ServletOutputStreamImpl extends ServletOutputStream { } @Override - public void write(int b) { - throw new UnsupportedOperationException(); + public void write(int v) throws IOException { + initCacheBytes(); + cacheByte[0] = (byte) v; + write(cacheByte, 0, 1); + } + + /** + * 初始化8字节的缓存数值 + */ + private void initCacheBytes() { + if (cacheByte == null) { + cacheByte = new byte[8]; + } } @Override -- Gitee From e376b2ff754d9c526a29716c432bee127d83f90f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=88=80?= Date: Mon, 12 Jun 2023 22:38:08 +0800 Subject: [PATCH 05/13] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/smartboot/servlet/impl/HttpServletResponseImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java index cbef53e..0a73408 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java @@ -313,9 +313,9 @@ public class HttpServletResponseImpl implements HttpServletResponse { } response.getHeaderNames().forEach(headerName -> response.setHeader(headerName, null)); setContentLength(-1); - setContentType(null); + contentType = null; setCharacterEncoding(null); - response.setHttpStatus(null); + response.setHttpStatus(HttpStatus.OK); writer = null; if (servletOutputStream != null) { servletOutputStream.resetBuffer(); -- Gitee From a3b6b6e42b79d9e682d5b8c3a29379e0389ee93e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=88=80?= Date: Tue, 27 Jun 2023 20:41:39 +0800 Subject: [PATCH 06/13] =?UTF-8?q?=E5=8D=87=E7=BA=A7smart-http=E8=87=B31.2.?= =?UTF-8?q?6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../servlet/impl/HttpServletResponseImpl.java | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index a3d34e9..8686531 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ pom - 1.2.3 + 1.2.6 0.3 4.0.1 diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java index 0a73408..f05d4b6 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java @@ -190,10 +190,10 @@ public class HttpServletResponseImpl implements HttpServletResponse { @Override public String getCharacterEncoding() { - if (charset != null) { - return charset; + if (charset == null) { + setCharacterEncoding(StandardCharsets.ISO_8859_1.name()); } - return StandardCharsets.ISO_8859_1.name(); + return charset; } @Override @@ -228,7 +228,9 @@ public class HttpServletResponseImpl implements HttpServletResponse { response.setContentType(type); } else { contentType = type.substring(0, split); - setCharacterEncoding(type.substring(split + 9)); + if (!charsetSet) { + setCharacterEncoding(type.substring(split + 9)); + } } } @@ -248,6 +250,9 @@ public class HttpServletResponseImpl implements HttpServletResponse { @Override public PrintWriter getWriter() throws IOException { + if (servletOutputStream != null) { + throw new IllegalStateException("getOutputStream has already been called."); + } if (writer == null) { writer = new PrintWriter(new ServletPrintWriter(getOutputStream(), getCharacterEncoding())); } -- Gitee From 4cf054b48f23cd3373c1d17649d923e99a89868f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=88=80?= Date: Tue, 11 Jul 2023 20:02:48 +0800 Subject: [PATCH 07/13] =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=8D=95=E4=BE=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../servlet/impl/HttpServletResponseImpl.java | 6 +++- .../{AppTest.java => AsynccontextTest.java} | 4 +-- .../test/ServletResponseWrapperTest.java | 32 ++++++++++++++++++ .../test/SessionCookieConfigTest.java | 33 +++++++++++++++++++ 4 files changed, 72 insertions(+), 3 deletions(-) rename testsuite/src/test/java/org/smartboot/servlet/testsuite/test/{AppTest.java => AsynccontextTest.java} (73%) create mode 100644 testsuite/src/test/java/org/smartboot/servlet/testsuite/test/ServletResponseWrapperTest.java create mode 100644 testsuite/src/test/java/org/smartboot/servlet/testsuite/test/SessionCookieConfigTest.java diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java index f05d4b6..e8f08d1 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java @@ -219,6 +219,8 @@ public class HttpServletResponseImpl implements HttpServletResponse { @Override public void setContentType(String type) { + //. It does not set the response's character + // encoding if it is called after getWriter has been called or after the response has been committed. if (isCommitted()) { return; } @@ -228,7 +230,9 @@ public class HttpServletResponseImpl implements HttpServletResponse { response.setContentType(type); } else { contentType = type.substring(0, split); - if (!charsetSet) { + if (charsetSet) { + response.setContentType(getContentType()); + } else { setCharacterEncoding(type.substring(split + 9)); } } diff --git a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/AppTest.java b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/AsynccontextTest.java similarity index 73% rename from testsuite/src/test/java/org/smartboot/servlet/testsuite/test/AppTest.java rename to testsuite/src/test/java/org/smartboot/servlet/testsuite/test/AsynccontextTest.java index d59e2ae..f4681bb 100644 --- a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/AppTest.java +++ b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/AsynccontextTest.java @@ -10,14 +10,14 @@ package org.smartboot.servlet.testsuite.test; +import com.sun.ts.tests.servlet.api.jakarta_servlet.asynccontext.URLClient; import org.junit.jupiter.api.Test; import org.slf4j.LoggerFactory; /** * Unit test for simple App. */ -public class AppTest extends com.sun.ts.tests.servlet.api.jakarta_servlet_http.sessioncookieconfig.URLClient // com.sun.ts.tests.servlet.api.jakarta_servlet_http.sessioncookieconfig.URLClient // com.sun.ts.tests.servlet.spec.security.annotations.Client -{ +public class AsynccontextTest extends URLClient { @Test public void foo() throws Exception { diff --git a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/ServletResponseWrapperTest.java b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/ServletResponseWrapperTest.java new file mode 100644 index 0000000..2ba01db --- /dev/null +++ b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/ServletResponseWrapperTest.java @@ -0,0 +1,32 @@ +/* + * Copyright (C) [2022] smartboot [zhengjunweimail@163.com] + * + * 企业用户未经smartboot组织特别许可,需遵循AGPL-3.0开源协议合理合法使用本项目。 + * + * Enterprise users are required to use this project reasonably + * and legally in accordance with the AGPL-3.0 open source agreement + * without special permission from the smartboot organization. + */ + +package org.smartboot.servlet.testsuite.test; + +import com.sun.ts.tests.servlet.api.jakarta_servlet.servletresponsewrapper.URLClient; +import org.junit.jupiter.api.Test; +import org.slf4j.LoggerFactory; + +/** + * Unit test for simple App. + */ +public class ServletResponseWrapperTest extends URLClient { + + @Test + public void foo() throws Exception { + // + } + + @Test + public void bar() throws Exception { + LoggerFactory loggerFactory; + } + +} diff --git a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/SessionCookieConfigTest.java b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/SessionCookieConfigTest.java new file mode 100644 index 0000000..744cc55 --- /dev/null +++ b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/SessionCookieConfigTest.java @@ -0,0 +1,33 @@ +/* + * Copyright (C) [2022] smartboot [zhengjunweimail@163.com] + * + * 企业用户未经smartboot组织特别许可,需遵循AGPL-3.0开源协议合理合法使用本项目。 + * + * Enterprise users are required to use this project reasonably + * and legally in accordance with the AGPL-3.0 open source agreement + * without special permission from the smartboot organization. + */ + +package org.smartboot.servlet.testsuite.test; + +import com.sun.ts.tests.servlet.api.jakarta_servlet_http.sessioncookieconfig.URLClient; +import org.junit.jupiter.api.Test; +import org.slf4j.LoggerFactory; + +/** + * Unit test for simple App. + */ +public class SessionCookieConfigTest extends URLClient // com.sun.ts.tests.servlet.api.jakarta_servlet_http.sessioncookieconfig.URLClient // com.sun.ts.tests.servlet.spec.security.annotations.Client +{ + + @Test + public void foo() throws Exception { + // + } + + @Test + public void bar() throws Exception { + LoggerFactory loggerFactory; + } + +} -- Gitee From 57c07e3e7f4538dbabb7d93bd68d0eb5eef76cd9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=88=80?= Date: Tue, 11 Jul 2023 20:04:02 +0800 Subject: [PATCH 08/13] =?UTF-8?q?=E5=8F=91=E5=B8=83=E6=AD=A3=E5=BC=8F?= =?UTF-8?q?=E5=8C=85=200.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- servlet-core/pom.xml | 2 +- .../src/main/java/org/smartboot/servlet/ContainerRuntime.java | 2 +- smart-servlet-maven-plugin/pom.xml | 2 +- spring-boot-starter/pom.xml | 2 +- testsuite/pom.xml | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 6ac4d41..033d182 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ smart-servlet 在 smart-http 的架构之上,通过继承 HttpHandle 实现了 org.smartboot.servlet smart-servlet-maven-plugin - 0.3 + 0.4 8080 @@ -90,7 +90,7 @@ smart-servlet 在 smart-http 的架构之上,通过继承 HttpHandle 实现了 org.smartboot.servlet smart-servlet-spring-boot-starter - 0.3 + 0.4 diff --git a/servlet-core/pom.xml b/servlet-core/pom.xml index 9fb7f51..d4c22ff 100644 --- a/servlet-core/pom.xml +++ b/servlet-core/pom.xml @@ -15,7 +15,7 @@ smart-servlet-parent org.smartboot.servlet - 0.3 + 0.4 servlet-core 4.0.0 diff --git a/servlet-core/src/main/java/org/smartboot/servlet/ContainerRuntime.java b/servlet-core/src/main/java/org/smartboot/servlet/ContainerRuntime.java index cc01f37..3667a4a 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/ContainerRuntime.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/ContainerRuntime.java @@ -64,7 +64,7 @@ public class ContainerRuntime { * Font Name: Puffy */ private static final String BANNER = " _ _ _ \n" + " ( )_ (_ ) ( )_ \n" + " ___ ___ ___ _ _ _ __ | ,_) ___ __ _ __ _ _ | | __ | ,_)\n" + "/',__)/' _ ` _ `\\ /'_` )( '__)| | /',__) /'__`\\( '__)( ) ( ) | | /'__`\\| | \n" + "\\__, \\| ( ) ( ) |( (_| || | | |_ \\__, \\( ___/| | | \\_/ | | | ( ___/| |_ \n" + "(____/(_) (_) (_)`\\__,_)(_) `\\__) (____/`\\____)(_) `\\___/'(___)`\\____)`\\__)"; - public static final String VERSION = "0.3"; + public static final String VERSION = "0.4"; /** * 注册在当前 Servlet 容器中的运行环境 */ diff --git a/smart-servlet-maven-plugin/pom.xml b/smart-servlet-maven-plugin/pom.xml index 4f37cd7..526f54f 100644 --- a/smart-servlet-maven-plugin/pom.xml +++ b/smart-servlet-maven-plugin/pom.xml @@ -15,7 +15,7 @@ smart-servlet-parent org.smartboot.servlet - 0.3 + 0.4 4.0.0 maven-plugin diff --git a/spring-boot-starter/pom.xml b/spring-boot-starter/pom.xml index b58207c..cd62a3b 100644 --- a/spring-boot-starter/pom.xml +++ b/spring-boot-starter/pom.xml @@ -15,7 +15,7 @@ smart-servlet-parent org.smartboot.servlet - 0.3 + 0.4 4.0.0 diff --git a/testsuite/pom.xml b/testsuite/pom.xml index 791c431..651528e 100644 --- a/testsuite/pom.xml +++ b/testsuite/pom.xml @@ -47,7 +47,7 @@ org.smartboot.servlet servlet-core - 0.3 + 0.4 org.junit -- Gitee From f026f8012d1405827a2021412f9dbff482de941a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=88=80?= Date: Tue, 11 Jul 2023 20:04:31 +0800 Subject: [PATCH 09/13] =?UTF-8?q?=E5=8F=91=E5=B8=83=E6=AD=A3=E5=BC=8F?= =?UTF-8?q?=E5=8C=85=200.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 8686531..58dc774 100644 --- a/pom.xml +++ b/pom.xml @@ -5,12 +5,12 @@ 4.0.0 org.smartboot.servlet smart-servlet-parent - 0.3 + 0.4 pom 1.2.6 - 0.3 + 0.4 4.0.1 1.3.2 -- Gitee From 8946b671bc136764f1d5f528fbfd5ffa592cbc0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=88=80?= Date: Tue, 11 Jul 2023 22:15:32 +0800 Subject: [PATCH 10/13] =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=8D=95=E4=BE=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../servlet/testsuite/test/DispatchTest.java | 16 ++++++++++++++++ .../testsuite/test/DispatcherTypeTest.java | 16 ++++++++++++++++ .../servlet/testsuite/test/DoFilterTest.java | 16 ++++++++++++++++ .../servlet/testsuite/test/FilterChainTest.java | 16 ++++++++++++++++ .../servlet/testsuite/test/FilterConfigTest.java | 16 ++++++++++++++++ .../test/FilterRequestDispatcherTest.java | 16 ++++++++++++++++ .../servlet/testsuite/test/FilterTest.java | 16 ++++++++++++++++ .../testsuite/test/GenericFilterTest.java | 16 ++++++++++++++++ .../testsuite/test/GenericServletTest.java | 16 ++++++++++++++++ .../servlet/testsuite/test/RegistrationTest.java | 16 ++++++++++++++++ .../testsuite/test/RequestDispatcherTest.java | 16 ++++++++++++++++ .../servlet/testsuite/test/ScEventTest.java | 16 ++++++++++++++++ .../testsuite/test/ScattributeEventTest.java | 16 ++++++++++++++++ .../test/ScattributeListener40Test.java | 16 ++++++++++++++++ .../testsuite/test/ScattributeListenerTest.java | 16 ++++++++++++++++ 15 files changed, 240 insertions(+) create mode 100644 testsuite/src/test/java/org/smartboot/servlet/testsuite/test/DispatchTest.java create mode 100644 testsuite/src/test/java/org/smartboot/servlet/testsuite/test/DispatcherTypeTest.java create mode 100644 testsuite/src/test/java/org/smartboot/servlet/testsuite/test/DoFilterTest.java create mode 100644 testsuite/src/test/java/org/smartboot/servlet/testsuite/test/FilterChainTest.java create mode 100644 testsuite/src/test/java/org/smartboot/servlet/testsuite/test/FilterConfigTest.java create mode 100644 testsuite/src/test/java/org/smartboot/servlet/testsuite/test/FilterRequestDispatcherTest.java create mode 100644 testsuite/src/test/java/org/smartboot/servlet/testsuite/test/FilterTest.java create mode 100644 testsuite/src/test/java/org/smartboot/servlet/testsuite/test/GenericFilterTest.java create mode 100644 testsuite/src/test/java/org/smartboot/servlet/testsuite/test/GenericServletTest.java create mode 100644 testsuite/src/test/java/org/smartboot/servlet/testsuite/test/RegistrationTest.java create mode 100644 testsuite/src/test/java/org/smartboot/servlet/testsuite/test/RequestDispatcherTest.java create mode 100644 testsuite/src/test/java/org/smartboot/servlet/testsuite/test/ScEventTest.java create mode 100644 testsuite/src/test/java/org/smartboot/servlet/testsuite/test/ScattributeEventTest.java create mode 100644 testsuite/src/test/java/org/smartboot/servlet/testsuite/test/ScattributeListener40Test.java create mode 100644 testsuite/src/test/java/org/smartboot/servlet/testsuite/test/ScattributeListenerTest.java diff --git a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/DispatchTest.java b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/DispatchTest.java new file mode 100644 index 0000000..ea361f7 --- /dev/null +++ b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/DispatchTest.java @@ -0,0 +1,16 @@ +/* + * Copyright (C) [2022] smartboot [zhengjunweimail@163.com] + * + * 企业用户未经smartboot组织特别许可,需遵循AGPL-3.0开源协议合理合法使用本项目。 + * + * Enterprise users are required to use this project reasonably + * and legally in accordance with the AGPL-3.0 open source agreement + * without special permission from the smartboot organization. + */ + +package org.smartboot.servlet.testsuite.test; + +import com.sun.ts.tests.servlet.api.jakarta_servlet.dispatchtest.URLClient; + +public class DispatchTest extends URLClient { +} diff --git a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/DispatcherTypeTest.java b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/DispatcherTypeTest.java new file mode 100644 index 0000000..0c242d2 --- /dev/null +++ b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/DispatcherTypeTest.java @@ -0,0 +1,16 @@ +/* + * Copyright (C) [2022] smartboot [zhengjunweimail@163.com] + * + * 企业用户未经smartboot组织特别许可,需遵循AGPL-3.0开源协议合理合法使用本项目。 + * + * Enterprise users are required to use this project reasonably + * and legally in accordance with the AGPL-3.0 open source agreement + * without special permission from the smartboot organization. + */ + +package org.smartboot.servlet.testsuite.test; + +import com.sun.ts.tests.servlet.api.jakarta_servlet.dispatchertype.URLClient; + +public class DispatcherTypeTest extends URLClient { +} diff --git a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/DoFilterTest.java b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/DoFilterTest.java new file mode 100644 index 0000000..ebd6581 --- /dev/null +++ b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/DoFilterTest.java @@ -0,0 +1,16 @@ +/* + * Copyright (C) [2022] smartboot [zhengjunweimail@163.com] + * + * 企业用户未经smartboot组织特别许可,需遵循AGPL-3.0开源协议合理合法使用本项目。 + * + * Enterprise users are required to use this project reasonably + * and legally in accordance with the AGPL-3.0 open source agreement + * without special permission from the smartboot organization. + */ + +package org.smartboot.servlet.testsuite.test; + +import com.sun.ts.tests.servlet.api.jakarta_servlet.dofilter.URLClient; + +public class DoFilterTest extends URLClient { +} diff --git a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/FilterChainTest.java b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/FilterChainTest.java new file mode 100644 index 0000000..964cd52 --- /dev/null +++ b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/FilterChainTest.java @@ -0,0 +1,16 @@ +/* + * Copyright (C) [2022] smartboot [zhengjunweimail@163.com] + * + * 企业用户未经smartboot组织特别许可,需遵循AGPL-3.0开源协议合理合法使用本项目。 + * + * Enterprise users are required to use this project reasonably + * and legally in accordance with the AGPL-3.0 open source agreement + * without special permission from the smartboot organization. + */ + +package org.smartboot.servlet.testsuite.test; + +import com.sun.ts.tests.servlet.api.jakarta_servlet.filterchain.URLClient; + +public class FilterChainTest extends URLClient { +} diff --git a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/FilterConfigTest.java b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/FilterConfigTest.java new file mode 100644 index 0000000..93340f0 --- /dev/null +++ b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/FilterConfigTest.java @@ -0,0 +1,16 @@ +/* + * Copyright (C) [2022] smartboot [zhengjunweimail@163.com] + * + * 企业用户未经smartboot组织特别许可,需遵循AGPL-3.0开源协议合理合法使用本项目。 + * + * Enterprise users are required to use this project reasonably + * and legally in accordance with the AGPL-3.0 open source agreement + * without special permission from the smartboot organization. + */ + +package org.smartboot.servlet.testsuite.test; + +import com.sun.ts.tests.servlet.api.jakarta_servlet.filterconfig.URLClient; + +public class FilterConfigTest extends URLClient { +} diff --git a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/FilterRequestDispatcherTest.java b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/FilterRequestDispatcherTest.java new file mode 100644 index 0000000..d339007 --- /dev/null +++ b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/FilterRequestDispatcherTest.java @@ -0,0 +1,16 @@ +/* + * Copyright (C) [2022] smartboot [zhengjunweimail@163.com] + * + * 企业用户未经smartboot组织特别许可,需遵循AGPL-3.0开源协议合理合法使用本项目。 + * + * Enterprise users are required to use this project reasonably + * and legally in accordance with the AGPL-3.0 open source agreement + * without special permission from the smartboot organization. + */ + +package org.smartboot.servlet.testsuite.test; + +import com.sun.ts.tests.servlet.api.jakarta_servlet.filterrequestdispatcher.URLClient; + +public class FilterRequestDispatcherTest extends URLClient { +} diff --git a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/FilterTest.java b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/FilterTest.java new file mode 100644 index 0000000..c3dd5b9 --- /dev/null +++ b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/FilterTest.java @@ -0,0 +1,16 @@ +/* + * Copyright (C) [2022] smartboot [zhengjunweimail@163.com] + * + * 企业用户未经smartboot组织特别许可,需遵循AGPL-3.0开源协议合理合法使用本项目。 + * + * Enterprise users are required to use this project reasonably + * and legally in accordance with the AGPL-3.0 open source agreement + * without special permission from the smartboot organization. + */ + +package org.smartboot.servlet.testsuite.test; + +import com.sun.ts.tests.servlet.api.jakarta_servlet.filter.URLClient; + +public class FilterTest extends URLClient { +} diff --git a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/GenericFilterTest.java b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/GenericFilterTest.java new file mode 100644 index 0000000..76e525f --- /dev/null +++ b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/GenericFilterTest.java @@ -0,0 +1,16 @@ +/* + * Copyright (C) [2022] smartboot [zhengjunweimail@163.com] + * + * 企业用户未经smartboot组织特别许可,需遵循AGPL-3.0开源协议合理合法使用本项目。 + * + * Enterprise users are required to use this project reasonably + * and legally in accordance with the AGPL-3.0 open source agreement + * without special permission from the smartboot organization. + */ + +package org.smartboot.servlet.testsuite.test; + +import com.sun.ts.tests.servlet.api.jakarta_servlet.genericfilter.URLClient; + +public class GenericFilterTest extends URLClient { +} diff --git a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/GenericServletTest.java b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/GenericServletTest.java new file mode 100644 index 0000000..1da0536 --- /dev/null +++ b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/GenericServletTest.java @@ -0,0 +1,16 @@ +/* + * Copyright (C) [2022] smartboot [zhengjunweimail@163.com] + * + * 企业用户未经smartboot组织特别许可,需遵循AGPL-3.0开源协议合理合法使用本项目。 + * + * Enterprise users are required to use this project reasonably + * and legally in accordance with the AGPL-3.0 open source agreement + * without special permission from the smartboot organization. + */ + +package org.smartboot.servlet.testsuite.test; + +import com.sun.ts.tests.servlet.api.jakarta_servlet.genericservlet.URLClient; + +public class GenericServletTest extends URLClient { +} diff --git a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/RegistrationTest.java b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/RegistrationTest.java new file mode 100644 index 0000000..67f1829 --- /dev/null +++ b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/RegistrationTest.java @@ -0,0 +1,16 @@ +/* + * Copyright (C) [2022] smartboot [zhengjunweimail@163.com] + * + * 企业用户未经smartboot组织特别许可,需遵循AGPL-3.0开源协议合理合法使用本项目。 + * + * Enterprise users are required to use this project reasonably + * and legally in accordance with the AGPL-3.0 open source agreement + * without special permission from the smartboot organization. + */ + +package org.smartboot.servlet.testsuite.test; + +import com.sun.ts.tests.servlet.api.jakarta_servlet.registration.URLClient; + +public class RegistrationTest extends URLClient { +} diff --git a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/RequestDispatcherTest.java b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/RequestDispatcherTest.java new file mode 100644 index 0000000..d45c937 --- /dev/null +++ b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/RequestDispatcherTest.java @@ -0,0 +1,16 @@ +/* + * Copyright (C) [2022] smartboot [zhengjunweimail@163.com] + * + * 企业用户未经smartboot组织特别许可,需遵循AGPL-3.0开源协议合理合法使用本项目。 + * + * Enterprise users are required to use this project reasonably + * and legally in accordance with the AGPL-3.0 open source agreement + * without special permission from the smartboot organization. + */ + +package org.smartboot.servlet.testsuite.test; + +import com.sun.ts.tests.servlet.api.jakarta_servlet.requestdispatcher.URLClient; + +public class RequestDispatcherTest extends URLClient { +} diff --git a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/ScEventTest.java b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/ScEventTest.java new file mode 100644 index 0000000..9560f25 --- /dev/null +++ b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/ScEventTest.java @@ -0,0 +1,16 @@ +/* + * Copyright (C) [2022] smartboot [zhengjunweimail@163.com] + * + * 企业用户未经smartboot组织特别许可,需遵循AGPL-3.0开源协议合理合法使用本项目。 + * + * Enterprise users are required to use this project reasonably + * and legally in accordance with the AGPL-3.0 open source agreement + * without special permission from the smartboot organization. + */ + +package org.smartboot.servlet.testsuite.test; + +import com.sun.ts.tests.servlet.api.jakarta_servlet.scevent.URLClient; + +public class ScEventTest extends URLClient { +} diff --git a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/ScattributeEventTest.java b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/ScattributeEventTest.java new file mode 100644 index 0000000..6bac256 --- /dev/null +++ b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/ScattributeEventTest.java @@ -0,0 +1,16 @@ +/* + * Copyright (C) [2022] smartboot [zhengjunweimail@163.com] + * + * 企业用户未经smartboot组织特别许可,需遵循AGPL-3.0开源协议合理合法使用本项目。 + * + * Enterprise users are required to use this project reasonably + * and legally in accordance with the AGPL-3.0 open source agreement + * without special permission from the smartboot organization. + */ + +package org.smartboot.servlet.testsuite.test; + +import com.sun.ts.tests.servlet.api.jakarta_servlet.scattributeevent.URLClient; + +public class ScattributeEventTest extends URLClient { +} diff --git a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/ScattributeListener40Test.java b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/ScattributeListener40Test.java new file mode 100644 index 0000000..4cad678 --- /dev/null +++ b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/ScattributeListener40Test.java @@ -0,0 +1,16 @@ +/* + * Copyright (C) [2022] smartboot [zhengjunweimail@163.com] + * + * 企业用户未经smartboot组织特别许可,需遵循AGPL-3.0开源协议合理合法使用本项目。 + * + * Enterprise users are required to use this project reasonably + * and legally in accordance with the AGPL-3.0 open source agreement + * without special permission from the smartboot organization. + */ + +package org.smartboot.servlet.testsuite.test; + +import com.sun.ts.tests.servlet.api.jakarta_servlet.scattributelistener40.URLClient; + +public class ScattributeListener40Test extends URLClient { +} diff --git a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/ScattributeListenerTest.java b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/ScattributeListenerTest.java new file mode 100644 index 0000000..1230ac6 --- /dev/null +++ b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/ScattributeListenerTest.java @@ -0,0 +1,16 @@ +/* + * Copyright (C) [2022] smartboot [zhengjunweimail@163.com] + * + * 企业用户未经smartboot组织特别许可,需遵循AGPL-3.0开源协议合理合法使用本项目。 + * + * Enterprise users are required to use this project reasonably + * and legally in accordance with the AGPL-3.0 open source agreement + * without special permission from the smartboot organization. + */ + +package org.smartboot.servlet.testsuite.test; + +import com.sun.ts.tests.servlet.api.jakarta_servlet.scattributelistener.URLClient; + +public class ScattributeListenerTest extends URLClient { +} -- Gitee From fe6691261ca73ffa7fb7d09d43972da1c0f31082 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=88=80?= Date: Thu, 13 Jul 2023 18:58:06 +0800 Subject: [PATCH 11/13] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 ++-- .../smartboot/servlet/ContainerRuntime.java | 6 ++-- .../servlet/ServletContextRuntime.java | 35 +++++++++++-------- .../smartboot/servlet/WebXmlParseEngine.java | 3 +- .../smartboot/servlet/conf/ServletInfo.java | 10 ++++++ .../servlet/impl/HttpServletResponseImpl.java | 3 +- .../servlet/impl/ServletContextImpl.java | 11 +++--- .../maven/plugin/servlet/Starter.java | 2 +- .../ConfigurableSmartWebServerFactory.java | 6 +++- .../starter/SmartServletServer.java | 2 +- .../testsuite/JettyEmbeddedContainer.java | 18 +++++++--- 11 files changed, 69 insertions(+), 33 deletions(-) diff --git a/pom.xml b/pom.xml index 58dc774..a98b1be 100644 --- a/pom.xml +++ b/pom.xml @@ -9,7 +9,7 @@ pom - 1.2.6 + 1.2.7 0.4 4.0.1 @@ -120,8 +120,8 @@ org.apache.maven.plugins maven-compiler-plugin - 1.8 - 1.8 + 11 + 11 UTF-8 diff --git a/servlet-core/src/main/java/org/smartboot/servlet/ContainerRuntime.java b/servlet-core/src/main/java/org/smartboot/servlet/ContainerRuntime.java index 3667a4a..ecfbdb1 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/ContainerRuntime.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/ContainerRuntime.java @@ -83,7 +83,7 @@ public class ContainerRuntime { */ private HttpServerConfiguration configuration; - public void start(HttpServerConfiguration configuration) { + public void start(HttpServerConfiguration configuration) throws Throwable { if (started) { return; } @@ -112,7 +112,9 @@ public class ContainerRuntime { loadAndInstallPlugins(); //启动运行环境 - runtimes.forEach(ServletContextRuntime::start); + for (ServletContextRuntime runtime : runtimes) { + runtime.start(); + } } diff --git a/servlet-core/src/main/java/org/smartboot/servlet/ServletContextRuntime.java b/servlet-core/src/main/java/org/smartboot/servlet/ServletContextRuntime.java index 7ef0a92..20e3fee 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/ServletContextRuntime.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/ServletContextRuntime.java @@ -10,20 +10,9 @@ package org.smartboot.servlet; -import javax.servlet.Filter; -import javax.servlet.FilterConfig; -import javax.servlet.RequestDispatcher; -import javax.servlet.Servlet; -import javax.servlet.ServletConfig; -import javax.servlet.ServletContext; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletException; -import javax.servlet.UnavailableException; -import javax.servlet.annotation.WebListener; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; import org.smartboot.http.common.enums.HttpStatus; +import org.smartboot.http.common.logging.Logger; +import org.smartboot.http.common.logging.LoggerFactory; import org.smartboot.http.common.utils.StringUtils; import org.smartboot.servlet.conf.DeploymentInfo; import org.smartboot.servlet.conf.FilterInfo; @@ -39,6 +28,19 @@ import org.smartboot.servlet.provider.SessionProvider; import org.smartboot.servlet.provider.WebsocketProvider; import org.smartboot.servlet.sandbox.SandBox; +import javax.servlet.Filter; +import javax.servlet.FilterConfig; +import javax.servlet.RequestDispatcher; +import javax.servlet.Servlet; +import javax.servlet.ServletConfig; +import javax.servlet.ServletContext; +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletException; +import javax.servlet.UnavailableException; +import javax.servlet.annotation.WebListener; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.util.ArrayList; @@ -54,6 +56,7 @@ import java.util.List; * @version V1.0 , 2019/12/11 */ public class ServletContextRuntime { + private static final Logger LOGGER = LoggerFactory.getLogger(ServletContextRuntime.class); private String displayName; private String description; /** @@ -128,7 +131,7 @@ public class ServletContextRuntime { /** * 启动容器 */ - public void start() { + public void start() throws Throwable { ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader(); try { //有些场景下ServletContainerInitializer初始化依赖当前容器的类加载器 @@ -160,6 +163,7 @@ public class ServletContextRuntime { } catch (Exception e) { e.printStackTrace(); plugins.forEach(plugin -> plugin.whenContainerStartError(this, e)); + throw e; } finally { Thread.currentThread().setContextClassLoader(currentClassLoader); } @@ -168,6 +172,9 @@ public class ServletContextRuntime { private void newServletsInstance(DeploymentInfo deploymentInfo) throws InstantiationException, IllegalAccessException, ClassNotFoundException { for (ServletInfo servletInfo : deploymentInfo.getServlets().values()) { if (!servletInfo.isDynamic()) { + if (servletInfo.getJspFile() != null) { + throw new UnsupportedOperationException(); + } Servlet servlet = (Servlet) deploymentInfo.getClassLoader().loadClass(servletInfo.getServletClass()).newInstance(); servletInfo.setServlet(servlet); } diff --git a/servlet-core/src/main/java/org/smartboot/servlet/WebXmlParseEngine.java b/servlet-core/src/main/java/org/smartboot/servlet/WebXmlParseEngine.java index 37324be..127e818 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/WebXmlParseEngine.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/WebXmlParseEngine.java @@ -159,10 +159,11 @@ class WebXmlParseEngine { NodeList rootNodeList = parentElement.getElementsByTagName("servlet"); for (int i = 0; i < rootNodeList.getLength(); i++) { Node node = rootNodeList.item(i); - Map nodeMap = getNodeValue(node, Arrays.asList("servlet-name", "servlet-class", "load-on-startup", "async-supported")); + Map nodeMap = getNodeValue(node, Arrays.asList("servlet-name", "servlet-class", "load-on-startup", "async-supported", "jsp-file")); ServletInfo servletInfo = new ServletInfo(); servletInfo.setServletName(nodeMap.get("servlet-name")); servletInfo.setServletClass(nodeMap.get("servlet-class")); + servletInfo.setJspFile(nodeMap.get("jsp-file")); servletInfo.setLoadOnStartup(NumberUtils.toInt(nodeMap.get("load-on-startup"), 0)); servletInfo.setAsyncSupported(Boolean.parseBoolean(nodeMap.get("async-supported"))); Map initParamMap = parseParam(node); diff --git a/servlet-core/src/main/java/org/smartboot/servlet/conf/ServletInfo.java b/servlet-core/src/main/java/org/smartboot/servlet/conf/ServletInfo.java index 6491bb5..85a402d 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/conf/ServletInfo.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/conf/ServletInfo.java @@ -33,6 +33,8 @@ public class ServletInfo { private int loadOnStartup; private Servlet servlet; + private String jspFile; + private boolean dynamic; private MultipartConfigElement multipartConfig; @@ -124,4 +126,12 @@ public class ServletInfo { public void setAsyncSupported(boolean asyncSupported) { this.asyncSupported = asyncSupported; } + + public String getJspFile() { + return jspFile; + } + + public void setJspFile(String jspFile) { + this.jspFile = jspFile; + } } diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java index e8f08d1..29feb62 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java @@ -254,7 +254,8 @@ public class HttpServletResponseImpl implements HttpServletResponse { @Override public PrintWriter getWriter() throws IOException { - if (servletOutputStream != null) { + //if the getOutputStream method has already been called for this response object + if (servletOutputStream != null && servletOutputStream.isCommitted()) { throw new IllegalStateException("getOutputStream has already been called."); } if (writer == null) { diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletContextImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletContextImpl.java index 1b03720..93ce486 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletContextImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletContextImpl.java @@ -284,14 +284,15 @@ public class ServletContextImpl implements ServletContext { Object oldValue = attributes.put(name, object); List listeners = deploymentInfo.getServletContextAttributeListeners(); - ServletContextAttributeEvent event = listeners.isEmpty() ? null : new ServletContextAttributeEvent(this, name, object); - listeners.forEach(listener -> { + if (!listeners.isEmpty()) { if (oldValue == null) { - listener.attributeAdded(event); + ServletContextAttributeEvent event = new ServletContextAttributeEvent(this, name, object); + listeners.forEach(listener -> listener.attributeAdded(event)); } else { - listener.attributeReplaced(event); + ServletContextAttributeEvent event = new ServletContextAttributeEvent(this, name, oldValue); + listeners.forEach(listener -> listener.attributeReplaced(event)); } - }); + } } @Override diff --git a/smart-servlet-maven-plugin/src/main/java/org/smartboot/maven/plugin/servlet/Starter.java b/smart-servlet-maven-plugin/src/main/java/org/smartboot/maven/plugin/servlet/Starter.java index 299115c..2086bbf 100644 --- a/smart-servlet-maven-plugin/src/main/java/org/smartboot/maven/plugin/servlet/Starter.java +++ b/smart-servlet-maven-plugin/src/main/java/org/smartboot/maven/plugin/servlet/Starter.java @@ -27,7 +27,7 @@ import java.io.IOException; */ public class Starter { - public Starter(String path, String contentPath, int port, ClassLoader classLoader) throws Exception { + public Starter(String path, String contentPath, int port, ClassLoader classLoader) throws Throwable { System.out.println("path: " + path); System.out.println("contentPath: " + contentPath); ContainerRuntime containerRuntime = new ContainerRuntime(); diff --git a/spring-boot-starter/src/main/java/org/smartboot/springboot/starter/ConfigurableSmartWebServerFactory.java b/spring-boot-starter/src/main/java/org/smartboot/springboot/starter/ConfigurableSmartWebServerFactory.java index 25f1525..2f5d147 100644 --- a/spring-boot-starter/src/main/java/org/smartboot/springboot/starter/ConfigurableSmartWebServerFactory.java +++ b/spring-boot-starter/src/main/java/org/smartboot/springboot/starter/ConfigurableSmartWebServerFactory.java @@ -38,7 +38,11 @@ public class ConfigurableSmartWebServerFactory extends AbstractServletWebServerF deployment.setClassLoader(getServletClassLoader()); deployment.setDisplayName(getDisplayName()); deployment.addServletContainerInitializer(initializer); - return new SmartServletServer(servletRuntime, getPort()); + try { + return new SmartServletServer(servletRuntime, getPort()); + } catch (Throwable e) { + throw new RuntimeException(e); + } } @Override diff --git a/spring-boot-starter/src/main/java/org/smartboot/springboot/starter/SmartServletServer.java b/spring-boot-starter/src/main/java/org/smartboot/springboot/starter/SmartServletServer.java index 00e8c6b..0ca2860 100644 --- a/spring-boot-starter/src/main/java/org/smartboot/springboot/starter/SmartServletServer.java +++ b/spring-boot-starter/src/main/java/org/smartboot/springboot/starter/SmartServletServer.java @@ -36,7 +36,7 @@ public class SmartServletServer implements WebServer { private final int port; - public SmartServletServer(ServletContextRuntime runtime, int port) { + public SmartServletServer(ServletContextRuntime runtime, int port) throws Throwable { this.port = port; containerRuntime = new ContainerRuntime(); containerRuntime.addRuntime(runtime); diff --git a/testsuite/src/main/java/org/smartboot/servlet/testsuite/JettyEmbeddedContainer.java b/testsuite/src/main/java/org/smartboot/servlet/testsuite/JettyEmbeddedContainer.java index 204ad63..9a5ceb1 100644 --- a/testsuite/src/main/java/org/smartboot/servlet/testsuite/JettyEmbeddedContainer.java +++ b/testsuite/src/main/java/org/smartboot/servlet/testsuite/JettyEmbeddedContainer.java @@ -23,7 +23,13 @@ import org.jboss.arquillian.core.api.annotation.Inject; import org.jboss.shrinkwrap.api.Archive; import org.jboss.shrinkwrap.descriptor.api.Descriptor; import org.smartboot.http.common.utils.Mimetypes; -import org.smartboot.http.server.*; +import org.smartboot.http.server.HttpBootstrap; +import org.smartboot.http.server.HttpRequest; +import org.smartboot.http.server.HttpResponse; +import org.smartboot.http.server.HttpServerHandler; +import org.smartboot.http.server.WebSocketHandler; +import org.smartboot.http.server.WebSocketRequest; +import org.smartboot.http.server.WebSocketResponse; import org.smartboot.http.server.impl.WebSocketRequestImpl; import org.smartboot.http.server.impl.WebSocketResponseImpl; import org.smartboot.servlet.ContainerRuntime; @@ -103,7 +109,11 @@ public class JettyEmbeddedContainer implements DeployableContainer archive) throws DeploymentException { try { - ServletContextRuntime app = appProvider.createApp(containerRuntime,archive); + ServletContextRuntime app = appProvider.createApp(containerRuntime, archive); app.start(); @@ -163,7 +173,7 @@ public class JettyEmbeddedContainer implements DeployableContainer Date: Thu, 13 Jul 2023 19:52:04 +0800 Subject: [PATCH 12/13] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../servlet/ServletContextRuntime.java | 7 +- .../servlet/impl/HttpServletResponseImpl.java | 9 +-- .../servlet/impl/ServletContextImpl.java | 17 +++-- .../dispatcher/RequestDispatcherImpl.java | 4 +- .../testsuite/test/AsynccontextTest.java | 64 +++++++++---------- .../testsuite/test/GenericServletTest.java | 14 ++++ 6 files changed, 70 insertions(+), 45 deletions(-) diff --git a/servlet-core/src/main/java/org/smartboot/servlet/ServletContextRuntime.java b/servlet-core/src/main/java/org/smartboot/servlet/ServletContextRuntime.java index 20e3fee..a275d8f 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/ServletContextRuntime.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/ServletContextRuntime.java @@ -262,7 +262,12 @@ public class ServletContextRuntime { req.setAttribute(RequestDispatcher.ERROR_EXCEPTION, e); req.setAttribute(RequestDispatcher.ERROR_MESSAGE, e.getMessage()); req.setAttribute(RequestDispatcher.ERROR_STATUS_CODE, HttpStatus.INTERNAL_SERVER_ERROR.value()); - req.getRequestDispatcher(finalLocation).forward(req, resp); + if (finalLocation != null) { + req.getRequestDispatcher(finalLocation).forward(req, resp); + } else { + LOGGER.error("error location is null"); + e.printStackTrace(resp.getWriter()); + } } }); } diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java index 29feb62..8bc5cbb 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/HttpServletResponseImpl.java @@ -254,13 +254,14 @@ public class HttpServletResponseImpl implements HttpServletResponse { @Override public PrintWriter getWriter() throws IOException { + if (writer != null) { + return writer; + } //if the getOutputStream method has already been called for this response object - if (servletOutputStream != null && servletOutputStream.isCommitted()) { + if (servletOutputStream != null) { throw new IllegalStateException("getOutputStream has already been called."); } - if (writer == null) { - writer = new PrintWriter(new ServletPrintWriter(getOutputStream(), getCharacterEncoding())); - } + writer = new PrintWriter(new ServletPrintWriter(getOutputStream(), getCharacterEncoding())); return writer; } diff --git a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletContextImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletContextImpl.java index 93ce486..6827246 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletContextImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/impl/ServletContextImpl.java @@ -442,18 +442,21 @@ public class ServletContextImpl implements ServletContext { ServletContextEvent event = new ServletContextEvent(this); contextListener.contextInitialized(event); deploymentInfo.addServletContextListener(contextListener); - } else if (ServletRequestListener.class.isAssignableFrom(listener.getClass())) { + } + if (ServletRequestListener.class.isAssignableFrom(listener.getClass())) { deploymentInfo.addServletRequestListener((ServletRequestListener) listener); - } else if (ServletContextAttributeListener.class.isAssignableFrom(listener.getClass())) { + } + if (ServletContextAttributeListener.class.isAssignableFrom(listener.getClass())) { deploymentInfo.addServletContextAttributeListener((ServletContextAttributeListener) listener); - } else if (HttpSessionListener.class.isAssignableFrom(listener.getClass())) { + } + if (HttpSessionListener.class.isAssignableFrom(listener.getClass())) { deploymentInfo.addHttpSessionListener((HttpSessionListener) listener); - } else if (HttpSessionAttributeListener.class.isAssignableFrom(listener.getClass())) { + } + if (HttpSessionAttributeListener.class.isAssignableFrom(listener.getClass())) { deploymentInfo.addSessionAttributeListener((HttpSessionAttributeListener) listener); - } else if (ServletRequestAttributeListener.class.isAssignableFrom(listener.getClass())) { + } + if (ServletRequestAttributeListener.class.isAssignableFrom(listener.getClass())) { deploymentInfo.addRequestAttributeListener((ServletRequestAttributeListener) listener); - } else { - throw new RuntimeException(listener.toString()); } } diff --git a/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/RequestDispatcherImpl.java b/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/RequestDispatcherImpl.java index 6e22370..636c983 100644 --- a/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/RequestDispatcherImpl.java +++ b/servlet-core/src/main/java/org/smartboot/servlet/plugins/dispatcher/RequestDispatcherImpl.java @@ -122,7 +122,7 @@ class RequestDispatcherImpl implements RequestDispatcher { // 如果包含后续请求,那么这些属性 会被后面包含请求的相应属性值替换。 //如果通过 getNamedDispatcher 方法获得包含的 servlet,那么不能设置这些属性。 - Object requestUri = requestImpl.getRequestURI(); + String requestUri = requestImpl.getRequestURI(); Object contextPath = requestImpl.getContextPath(); Object servletPath = requestImpl.getServletPath(); Object pathInfo = requestImpl.getPathInfo(); @@ -143,6 +143,8 @@ class RequestDispatcherImpl implements RequestDispatcher { if (queryString != null) { requestWrapper.setAttribute(INCLUDE_QUERY_STRING, queryString); } + String[] array = StringUtils.split(dispatcherURL, "?"); + requestWrapper.setRequestUri(array[0]); } HandlerContext handlerContext = new HandlerContext(requestWrapper, responseWrapper, servletContext, named); diff --git a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/AsynccontextTest.java b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/AsynccontextTest.java index f4681bb..d48ace1 100644 --- a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/AsynccontextTest.java +++ b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/AsynccontextTest.java @@ -1,32 +1,32 @@ -/* - * Copyright (C) [2022] smartboot [zhengjunweimail@163.com] - * - * 企业用户未经smartboot组织特别许可,需遵循AGPL-3.0开源协议合理合法使用本项目。 - * - * Enterprise users are required to use this project reasonably - * and legally in accordance with the AGPL-3.0 open source agreement - * without special permission from the smartboot organization. - */ - -package org.smartboot.servlet.testsuite.test; - -import com.sun.ts.tests.servlet.api.jakarta_servlet.asynccontext.URLClient; -import org.junit.jupiter.api.Test; -import org.slf4j.LoggerFactory; - -/** - * Unit test for simple App. - */ -public class AsynccontextTest extends URLClient { - - @Test - public void foo() throws Exception { - // - } - - @Test - public void bar() throws Exception { - LoggerFactory loggerFactory; - } - -} +///* +// * Copyright (C) [2022] smartboot [zhengjunweimail@163.com] +// * +// * 企业用户未经smartboot组织特别许可,需遵循AGPL-3.0开源协议合理合法使用本项目。 +// * +// * Enterprise users are required to use this project reasonably +// * and legally in accordance with the AGPL-3.0 open source agreement +// * without special permission from the smartboot organization. +// */ +// +//package org.smartboot.servlet.testsuite.test; +// +//import com.sun.ts.tests.servlet.api.jakarta_servlet.asynccontext.URLClient; +//import org.junit.jupiter.api.Test; +//import org.slf4j.LoggerFactory; +// +///** +// * Unit test for simple App. +// */ +//public class AsynccontextTest extends URLClient { +// +// @Test +// public void foo() throws Exception { +// // +// } +// +// @Test +// public void bar() throws Exception { +// LoggerFactory loggerFactory; +// } +// +//} diff --git a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/GenericServletTest.java b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/GenericServletTest.java index 1da0536..797d71a 100644 --- a/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/GenericServletTest.java +++ b/testsuite/src/test/java/org/smartboot/servlet/testsuite/test/GenericServletTest.java @@ -11,6 +11,20 @@ package org.smartboot.servlet.testsuite.test; import com.sun.ts.tests.servlet.api.jakarta_servlet.genericservlet.URLClient; +import org.junit.jupiter.api.Test; + +import java.util.Properties; public class GenericServletTest extends URLClient { + @Test + public void init_ServletConfigServletExceptionTest() throws Exception { + String testName = "init_ServletConfigServletExceptionTest"; + TEST_PROPS.setProperty("testname", testName); + TEST_PROPS.setProperty("status-code", "500"); + Properties var10000 = TEST_PROPS; + String var10002 = this.getContextRoot(); + var10000.setProperty("request", "GET " + var10002 + "/" + testName + " HTTP/1.1"); + TEST_PROPS.setProperty("search_string", "Status Code: 500|Exception: javax.servlet.ServletException: in init of Init_ServletConfigServletExceptionTestServlet"); + this.invoke(); + } } -- Gitee From 29ae634f9c80d45936a6d338b8fd7c5af72f2cd5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=88=80?= Date: Thu, 13 Jul 2023 20:05:21 +0800 Subject: [PATCH 13/13] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index a98b1be..ee2ce2d 100644 --- a/pom.xml +++ b/pom.xml @@ -120,8 +120,8 @@ org.apache.maven.plugins maven-compiler-plugin - 11 - 11 + 1.8 + 1.8 UTF-8 -- Gitee