This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit 5674941dddf60f028fc77f2dea0424bcb0d5c59c Author: Mark Thomas <ma...@apache.org> AuthorDate: Wed Sep 22 16:06:51 2021 +0100 Add the Servlet/JSP version specific tests for Servlet 6.0 / JSP 3.1 --- .../tomcat/util/descriptor/DigesterFactory.java | 10 ++++++ .../tomcat/util/descriptor/XmlIdentifiers.java | 6 ++++ .../apache/tomcat/util/descriptor/web/WebXml.java | 2 +- .../servlet/resources/TestSchemaValidation.java | 14 ++++++++ test/org/apache/jasper/TestJspC.java | 8 +++++ test/org/apache/jasper/compiler/TestJspConfig.java | 18 +++++++++++ test/org/apache/jasper/compiler/TestValidator.java | 27 ++++++++++++++++ .../jasper/servlet/TestJspCServletContext.java | 10 ++++++ test/webapp-6.0/WEB-INF/tags11.tld | 37 ++++++++++++++++++++++ test/webapp-6.0/WEB-INF/tags12.tld | 37 ++++++++++++++++++++++ test/webapp-6.0/WEB-INF/tags20.tld | 37 ++++++++++++++++++++++ test/webapp-6.0/WEB-INF/tags21.tld | 37 ++++++++++++++++++++++ test/webapp-6.0/WEB-INF/tags30.tld | 37 ++++++++++++++++++++++ test/webapp-6.0/WEB-INF/tags31.tld | 37 ++++++++++++++++++++++ test/webapp-6.0/WEB-INF/web.xml | 36 +++++++++++++++++++++ test/webapp-6.0/el-as-literal.jsp | 21 ++++++++++++ test/webapp-6.0/tld-versions.jsp | 33 +++++++++++++++++++ 17 files changed, 406 insertions(+), 1 deletion(-) diff --git a/java/org/apache/tomcat/util/descriptor/DigesterFactory.java b/java/org/apache/tomcat/util/descriptor/DigesterFactory.java index 046e768..823b4fe 100644 --- a/java/org/apache/tomcat/util/descriptor/DigesterFactory.java +++ b/java/org/apache/tomcat/util/descriptor/DigesterFactory.java @@ -135,6 +135,16 @@ public class DigesterFactory { addSelf(systemIds, "jakartaee_web_services_2_0.xsd"); addSelf(systemIds, "jakartaee_web_services_client_2_0.xsd"); + // from JakartaEE 10 + add(systemIds, XmlIdentifiers.WEB_60_XSD, locationFor("web-app_6_0.xsd")); + add(systemIds, XmlIdentifiers.WEB_FRAGMENT_60_XSD, locationFor("web-fragment_6_0.xsd")); + add(systemIds, XmlIdentifiers.TLD_31_XSD, locationFor("web-jsptaglibrary_3_1.xsd")); + addSelf(systemIds, "web-common_6_0.xsd"); + addSelf(systemIds, "jakartaee_10.xsd"); + addSelf(systemIds, "jsp_3_1.xsd"); + addSelf(systemIds, "jakartaee_web_services_2_0.xsd"); + addSelf(systemIds, "jakartaee_web_services_client_2_0.xsd"); + SERVLET_API_PUBLIC_IDS = Collections.unmodifiableMap(publicIds); SERVLET_API_SYSTEM_IDS = Collections.unmodifiableMap(systemIds); } diff --git a/java/org/apache/tomcat/util/descriptor/XmlIdentifiers.java b/java/org/apache/tomcat/util/descriptor/XmlIdentifiers.java index 60327c9..1f492a7 100644 --- a/java/org/apache/tomcat/util/descriptor/XmlIdentifiers.java +++ b/java/org/apache/tomcat/util/descriptor/XmlIdentifiers.java @@ -85,6 +85,12 @@ public final class XmlIdentifiers { public static final String TLD_30_XSD = JAKARTAEE_9_NS + "/web-jsptaglibrary_3_0.xsd"; public static final String WEBSERVICES_20_XSD = JAKARTAEE_9_NS + "/jakartaee_web_services_2_0.xsd"; + // from Jakarta EE 10 + public static final String JAKARTAEE_10_NS = JAKARTAEE_9_NS; + public static final String WEB_60_XSD = JAKARTAEE_10_NS + "/web-app_6_0.xsd"; + public static final String WEB_FRAGMENT_60_XSD = JAKARTAEE_10_NS + "/web-fragment_6_0.xsd"; + public static final String TLD_31_XSD = JAKARTAEE_10_NS + "/web-jsptaglibrary_3_1.xsd"; + private XmlIdentifiers() { } } \ No newline at end of file diff --git a/java/org/apache/tomcat/util/descriptor/web/WebXml.java b/java/org/apache/tomcat/util/descriptor/web/WebXml.java index 62b5ed7..8384413 100644 --- a/java/org/apache/tomcat/util/descriptor/web/WebXml.java +++ b/java/org/apache/tomcat/util/descriptor/web/WebXml.java @@ -237,7 +237,7 @@ public class WebXml extends XmlEncodingBase implements DocumentProperties.Charse } // Derived major and minor version attributes - private int majorVersion = 5; + private int majorVersion = 6; private int minorVersion = 0; public int getMajorVersion() { return majorVersion; } public int getMinorVersion() { return minorVersion; } diff --git a/test/jakarta/servlet/resources/TestSchemaValidation.java b/test/jakarta/servlet/resources/TestSchemaValidation.java index d47d2b2..223e5be 100644 --- a/test/jakarta/servlet/resources/TestSchemaValidation.java +++ b/test/jakarta/servlet/resources/TestSchemaValidation.java @@ -158,4 +158,18 @@ public class TestSchemaValidation { Assert.assertEquals(0, handler.getWarnings().size()); } + + @Test + public void testWebapp_6_0() throws Exception { + XmlErrorHandler handler = new XmlErrorHandler(); + Digester digester = DigesterFactory.newDigester( + true, true, new WebRuleSet(false), true); + digester.setErrorHandler(handler); + digester.push(new WebXml()); + WebXml desc = (WebXml) digester.parse( + new File("test/webapp-6.0/WEB-INF/web.xml")); + Assert.assertEquals("6.0", desc.getVersion()); + Assert.assertEquals(0, handler.getErrors().size()); + Assert.assertEquals(0, handler.getWarnings().size()); + } } diff --git a/test/org/apache/jasper/TestJspC.java b/test/org/apache/jasper/TestJspC.java index bee686b..b544c7b 100644 --- a/test/org/apache/jasper/TestJspC.java +++ b/test/org/apache/jasper/TestJspC.java @@ -111,6 +111,14 @@ public class TestJspC { verify(webappOut); } + @Test + public void precompileWebapp_6_0() throws IOException { + File appDir = new File("test/webapp-6.0"); + File webappOut = new File(outputDir, appDir.getName()); + precompile(appDir, webappOut); + verify(webappOut); + } + private void verify(File webappOut) { // for now, just check some expected files exist Assert.assertTrue(new File(webappOut, "generated_web.xml").exists()); diff --git a/test/org/apache/jasper/compiler/TestJspConfig.java b/test/org/apache/jasper/compiler/TestJspConfig.java index 27cc143..9389c2c 100644 --- a/test/org/apache/jasper/compiler/TestJspConfig.java +++ b/test/org/apache/jasper/compiler/TestJspConfig.java @@ -174,4 +174,22 @@ public class TestJspConfig extends TomcatBaseTest { Assert.assertTrue(result.indexOf("<p>00-hello world</p>") > 0); } + + @Test + public void testServlet60NoEL() throws Exception { + Tomcat tomcat = getTomcatInstance(); + + File appDir = new File("test/webapp-6.0"); + // app dir is relative to server home + tomcat.addWebapp(null, "/test", appDir.getAbsolutePath()); + + tomcat.start(); + + ByteChunk res = getUrl("http://localhost:" + getPort() + + "/test/el-as-literal.jsp"); + + String result = res.toString(); + + Assert.assertTrue(result.indexOf("<p>00-hello world</p>") > 0); + } } diff --git a/test/org/apache/jasper/compiler/TestValidator.java b/test/org/apache/jasper/compiler/TestValidator.java index 80f949c..e2b36e8 100644 --- a/test/org/apache/jasper/compiler/TestValidator.java +++ b/test/org/apache/jasper/compiler/TestValidator.java @@ -243,6 +243,33 @@ public class TestValidator extends TomcatBaseTest { Assert.assertTrue(result.indexOf("<p>07-hello world</p>") > 0); } + @Test + public void testTldVersions60() throws Exception { + Tomcat tomcat = getTomcatInstance(); + + File appDir = + new File("test/webapp-6.0"); + // app dir is relative to server home + tomcat.addWebapp(null, "/test", appDir.getAbsolutePath()); + + tomcat.start(); + + ByteChunk res = getUrl("http://localhost:" + getPort() + + "/test/tld-versions.jsp"); + + String result = res.toString(); + + Assert.assertTrue(result.indexOf("<p>00-hello world</p>") > 0); + Assert.assertTrue(result.indexOf("<p>#{'01-hello world'}</p>") > 0); + Assert.assertTrue(result.indexOf("<p>02-hello world</p>") > 0); + Assert.assertTrue(result.indexOf("<p>#{'03-hello world'}</p>") > 0); + Assert.assertTrue(result.indexOf("<p>04-hello world</p>") > 0); + Assert.assertTrue(result.indexOf("<p>#{'05-hello world'}</p>") > 0); + Assert.assertTrue(result.indexOf("<p>06-hello world</p>") > 0); + Assert.assertTrue(result.indexOf("<p>07-hello world</p>") > 0); + Assert.assertTrue(result.indexOf("<p>08-hello world</p>") > 0); + } + public static class Echo extends TagSupport { private static final long serialVersionUID = 1L; diff --git a/test/org/apache/jasper/servlet/TestJspCServletContext.java b/test/org/apache/jasper/servlet/TestJspCServletContext.java index 4fbcd51..57cd4e9 100644 --- a/test/org/apache/jasper/servlet/TestJspCServletContext.java +++ b/test/org/apache/jasper/servlet/TestJspCServletContext.java @@ -134,6 +134,16 @@ public class TestJspCServletContext { @Test + public void testWebapp_6_0() throws Exception { + File appDir = new File("test/webapp-6.0"); + JspCServletContext context = new JspCServletContext( + null, appDir.toURI().toURL(), null, false, false); + Assert.assertEquals(6, context.getEffectiveMajorVersion()); + Assert.assertEquals(0, context.getEffectiveMinorVersion()); + } + + + @Test public void testWebresources() throws Exception { File appDir = new File("test/webresources/dir1"); JspCServletContext context = new JspCServletContext( diff --git a/test/webapp-6.0/WEB-INF/tags11.tld b/test/webapp-6.0/WEB-INF/tags11.tld new file mode 100644 index 0000000..3c7ae98 --- /dev/null +++ b/test/webapp-6.0/WEB-INF/tags11.tld @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--><!DOCTYPE taglib + PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" + "http://java.sun.com/dtd/web-jsptaglibrary_1_1.dtd"> +<taglib> + <tlibversion>1.0</tlibversion> + <jspversion>1.1</jspversion> + <shortname>Tags11</shortname> + <uri>http://tomcat.apache.org/tags11</uri> + + <tag> + <name>Echo</name> + <tagclass>org.apache.jasper.compiler.TestValidator$Echo</tagclass> + <bodycontent>empty</bodycontent> + <attribute> + <name>echo</name> + <required>yes</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + +</taglib> \ No newline at end of file diff --git a/test/webapp-6.0/WEB-INF/tags12.tld b/test/webapp-6.0/WEB-INF/tags12.tld new file mode 100644 index 0000000..533235b --- /dev/null +++ b/test/webapp-6.0/WEB-INF/tags12.tld @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--><!DOCTYPE taglib + PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" + "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> +<taglib> + <tlib-version>1.0</tlib-version> + <jsp-version>1.2</jsp-version> + <short-name>Tags12</short-name> + <uri>http://tomcat.apache.org/tags12</uri> + + <tag> + <name>Echo</name> + <tag-class>org.apache.jasper.compiler.TestValidator$Echo</tag-class> + <body-content>empty</body-content> + <attribute> + <name>echo</name> + <required>yes</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + +</taglib> \ No newline at end of file diff --git a/test/webapp-6.0/WEB-INF/tags20.tld b/test/webapp-6.0/WEB-INF/tags20.tld new file mode 100644 index 0000000..056c484 --- /dev/null +++ b/test/webapp-6.0/WEB-INF/tags20.tld @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--><taglib xmlns="http://java.sun.com/xml/ns/j2ee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee + http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" + version="2.0"> + <tlib-version>1.0</tlib-version> + <short-name>Tags20</short-name> + <uri>http://tomcat.apache.org/tags20</uri> + + <tag> + <name>Echo</name> + <tag-class>org.apache.jasper.compiler.TestValidator$Echo</tag-class> + <body-content>empty</body-content> + <attribute> + <name>echo</name> + <required>yes</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + +</taglib> \ No newline at end of file diff --git a/test/webapp-6.0/WEB-INF/tags21.tld b/test/webapp-6.0/WEB-INF/tags21.tld new file mode 100644 index 0000000..4a19675 --- /dev/null +++ b/test/webapp-6.0/WEB-INF/tags21.tld @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--><taglib xmlns="http://java.sun.com/xml/ns/javaee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee + http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd" + version="2.1"> + <tlib-version>1.0</tlib-version> + <short-name>Tags21</short-name> + <uri>http://tomcat.apache.org/tags21</uri> + + <tag> + <name>Echo</name> + <tag-class>org.apache.jasper.compiler.TestValidator$Echo</tag-class> + <body-content>empty</body-content> + <attribute> + <name>echo</name> + <required>yes</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + +</taglib> \ No newline at end of file diff --git a/test/webapp-6.0/WEB-INF/tags30.tld b/test/webapp-6.0/WEB-INF/tags30.tld new file mode 100644 index 0000000..76443f5 --- /dev/null +++ b/test/webapp-6.0/WEB-INF/tags30.tld @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--><taglib xmlns="http://java.sun.com/xml/ns/javaee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee + http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_3_0.xsd" + version="3.0"> + <tlib-version>1.0</tlib-version> + <short-name>Tags30</short-name> + <uri>http://tomcat.apache.org/tags30</uri> + + <tag> + <name>Echo</name> + <tag-class>org.apache.jasper.compiler.TestValidator$Echo</tag-class> + <body-content>empty</body-content> + <attribute> + <name>echo</name> + <required>yes</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + +</taglib> \ No newline at end of file diff --git a/test/webapp-6.0/WEB-INF/tags31.tld b/test/webapp-6.0/WEB-INF/tags31.tld new file mode 100644 index 0000000..7d8ef32 --- /dev/null +++ b/test/webapp-6.0/WEB-INF/tags31.tld @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--><taglib xmlns="http://java.sun.com/xml/ns/javaee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee + http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_3_1.xsd" + version="3.1"> + <tlib-version>1.0</tlib-version> + <short-name>Tags31</short-name> + <uri>http://tomcat.apache.org/tags31</uri> + + <tag> + <name>Echo</name> + <tag-class>org.apache.jasper.compiler.TestValidator$Echo</tag-class> + <body-content>empty</body-content> + <attribute> + <name>echo</name> + <required>yes</required> + <rtexprvalue>true</rtexprvalue> + </attribute> + </tag> + +</taglib> \ No newline at end of file diff --git a/test/webapp-6.0/WEB-INF/web.xml b/test/webapp-6.0/WEB-INF/web.xml new file mode 100644 index 0000000..ed9955d --- /dev/null +++ b/test/webapp-6.0/WEB-INF/web.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee + https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd" + version="6.0" + metadata-complete="true"> + + <display-name>Tomcat Servlet 6.0 Tests</display-name> + <description> + Provides a web application used by the Tomcat unit tests to ensure that + Tomcat meets the requirements of the current JSP and Servlet specification + for web applications that declare that they follow version 6.0 of the + Servlet specification and version 3.1 of the JSP specification. This + typically means ensuring that features introduced in later versions of the + specification do not change the behaviour of applications that declared an + earlier version of the specification. + </description> + +</web-app> \ No newline at end of file diff --git a/test/webapp-6.0/el-as-literal.jsp b/test/webapp-6.0/el-as-literal.jsp new file mode 100644 index 0000000..f48e114 --- /dev/null +++ b/test/webapp-6.0/el-as-literal.jsp @@ -0,0 +1,21 @@ +<%-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--%> +<html> + <body> + <p>00-${'hello world'}</p> + </body> +</html> \ No newline at end of file diff --git a/test/webapp-6.0/tld-versions.jsp b/test/webapp-6.0/tld-versions.jsp new file mode 100644 index 0000000..c20d743 --- /dev/null +++ b/test/webapp-6.0/tld-versions.jsp @@ -0,0 +1,33 @@ +<%-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--%> +<html><body> +<%@ taglib prefix="tags11" uri="http://tomcat.apache.org/tags11" %> +<%@ taglib prefix="tags12" uri="http://tomcat.apache.org/tags12" %> +<%@ taglib prefix="tags20" uri="http://tomcat.apache.org/tags20" %> +<%@ taglib prefix="tags21" uri="http://tomcat.apache.org/tags21" %> +<%@ taglib prefix="tags30" uri="http://tomcat.apache.org/tags30" %> +<%@ taglib prefix="tags31" uri="http://tomcat.apache.org/tags31" %> +<tags11:Echo echo="${'00-hello world'}"/> +<tags11:Echo echo="#{'01-hello world'}"/> +<tags12:Echo echo="${'02-hello world'}"/> +<tags12:Echo echo="#{'03-hello world'}"/> +<tags20:Echo echo="${'04-hello world'}"/> +<tags20:Echo echo="#{'05-hello world'}"/> +<tags21:Echo echo="${'06-hello world'}"/> +<tags30:Echo echo="${'07-hello world'}"/> +<tags31:Echo echo="${'08-hello world'}"/> +</body></html> \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org