cookies = new MultiMap<>();
+ try (HttpResponse resp = path("/session?name=n1").exec("GET")) {
+ assert "n1".equals(resp.bodyAsString());
+
+ for (String cookie : resp.cookies()) {
+ String[] nameAndValues = cookie.split(";")[0].split("=");
+ cookies.add(nameAndValues[0], nameAndValues[1]);
+ }
+ }
+
+ assert "n1".equals(path("/session").cookies(cookies).get());
+ }
+
+ @Test
+ public void ct0() {
+ assert path("/ct0").exec("GET").contentType() == null;
+ }
+
+ @Test
+ public void ct1() {
+ assert path("/hello").exec("GET").contentType()
+ .startsWith(MimeType.TEXT_PLAIN_VALUE);
+ }
+}
\ No newline at end of file
diff --git a/solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/resources/app.properties b/solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/resources/app.properties
new file mode 100644
index 0000000000000000000000000000000000000000..86a341a08ed77496740b48c6a7ef53fc2b70a4a3
--- /dev/null
+++ b/solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/resources/app.properties
@@ -0,0 +1,15 @@
+server.port=8182
+server.request.maxRequestSize=2Mb
+server.session.timeout=3600
+
+solon.app.name=demoapp
+solon.app.group=demo
+
+solon.output.meta=1
+
+custom.user=world
+
+#solon.view.mapping.vm: org.noear.solon.view.jsp.JspRender
+solon.view.mapping.jsp=org.noear.solon.view.jsp.JspRender
+
+solon.view.prefix=/templates
diff --git a/solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/resources/static/jinjin.htm b/solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/resources/static/jinjin.htm
new file mode 100644
index 0000000000000000000000000000000000000000..7660a18b04c6b50e29938871d16f7a82b3251dcf
--- /dev/null
+++ b/solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/resources/static/jinjin.htm
@@ -0,0 +1,10 @@
+
+
+
+
+ Title
+
+
+我就是静静!(静态文件的静)
+
+
\ No newline at end of file
diff --git a/solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/resources/templates/helloworld.jsp b/solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/resources/templates/helloworld.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..5a33331dc521e5791f6c78165e5f3d7f1d07ce03
--- /dev/null
+++ b/solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/resources/templates/helloworld.jsp
@@ -0,0 +1,18 @@
+<%@ page import="java.util.Random" %>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+
+
+ ${title}
+
+
+
+ page path: ${ctx.path()}
+
+
+ properties: custom.user :${user}
+
+
+ ${m.name} : ${message} (我想
静静)
+
+
+
\ No newline at end of file
diff --git a/solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/resources/templates/helloworld2.jsp b/solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/resources/templates/helloworld2.jsp
new file mode 100644
index 0000000000000000000000000000000000000000..1793a6aa8bb1786ba2305b227b5b52fc92261bd9
--- /dev/null
+++ b/solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/resources/templates/helloworld2.jsp
@@ -0,0 +1,20 @@
+<%@ page import="java.util.Random" %>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<%@ taglib prefix="ct" uri="/tags" %>
+
+
+ ${title}
+
+
+
+ page path: ${ctx.path()}
+
+
+ properties: custom.user :${user}
+
+
+ ${m.name} : ${message} (我想静静)
+
+
+
+
\ No newline at end of file
diff --git a/solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/resources/templates/tags.tld b/solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/resources/templates/tags.tld
new file mode 100644
index 0000000000000000000000000000000000000000..6042a560c96b9de68cb18f88e8e0c7bda4132cf4
--- /dev/null
+++ b/solon-jakarta-projects/solon-server/solon-server-undertow-jakarta/src/test/resources/templates/tags.tld
@@ -0,0 +1,18 @@
+
+
+ 自定义标签库
+ 1.1
+ ct
+ /tags
+
+
+ footer
+ demo3013.widget.FooterTag
+ empty
+
+
+
\ No newline at end of file