我关注 content/data.jsp
页面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
...
</head>
<body>
<jsp:include page="../template/header.jsp"/>
<jsp:include page="../template/footer.jsp"/>
</body>
</html>
其中 header.jsp
和 footer.jsp
只是普通的html文件 . 效果很好 . 然后我将这些行添加到我的 web.xml
文件中:
<servlet>
<servlet-name>data</servlet-name>
<jsp-file>/content/data.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>data</servlet-name>
<url-pattern>/data/*</url-pattern>
</servlet-mapping>
当我尝试请求 contextpath/data
而不是 contextpath/content/data.jsp
时,我得到以下错误堆栈跟踪:
ERROR [io.undertow.request](默认任务-29)UT005023:对/ contextpath / data的异常处理请求:org.apache.jasper.JasperException:javax.servlet.ServletException:org.apache中的java.lang.StackOverflowError . jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)[jastow-1.0.0.Final.jar:1.0.0.Final] org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:390) [jastow-1.0.0.Final.jar:1.0.0.Final]在org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:326)[jastow-1.0.0.Final.jar:1.0.0 .Final] at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:259)[jastow-1.0.0.Final.jar:1.0.0.Final] at javax.servlet.http.HttpServlet.service( HttpServlet.java:790)[jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final] at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)[下载] -servlet-1.0.15.Final.jar:1.0.15.Final] at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.hand leRequest(ServletSecurityRoleHandler.java:61)[undertow-servlet-1.0.15.Final.jar:1.0.15.Final] at io.undertow.jsp.JspFileHandler.handleRequest(JspFileHandler.java:27)[jastow-1.0.0 .Final.jar:1.0.0.Final] at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)[undertow-servlet-1.0.15.Final.jar:1.0.15.Final] at at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)[undertow-core-1.0.15.Final . jar:1.0.15.Final] at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113)[afow-servlet-1.0.15.Final.jar:1.0.15.Final] at io io.underto的.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56)[undertow-servlet-1.0.15.Final.jar:1.0.15.Final] w.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)[undertow-core-1.0.15.Final.jar:1.0.15.Final] at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler . java:45)[undertow-core-1.0.15.Final.jar:1.0.15.Final] at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61)[undertow-servlet-1.0 .15.Final.jar:1.0.15.Final] at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)[undertow-core-1.0.15.Final.jar:1.0.15.Final ]在io.undertow.security.handlers的io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70)[undertow-servlet-1.0.15.Final.jar:1.0.15.Final] . 在io.undertow.server.handl的SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)[undertow-core-1.0.15.Final.jar:1.0.15.Final] ers.PredicateHandler.handleRequest(PredicateHandler.java:25)[undertow-core-1.0.15.Final.jar:1.0.15.Final] at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler . java:61)在io.undertow.server.handlers的io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25)[undertow-core-1.0.15.Final.jar:1.0.15.Final] .PredicateHandler.handleRequest(PredicateHandler.java:25)[undertow-core-1.0.15.Final.jar:1.0.15.Final] at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240)[ underow-servlet-1.0.15.Final.jar:1.0.15.Final] at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227)[undertow-servlet-1.0.15.Final.jar:在io.undertow的io.undertow.servlet.handlers.ServletInitialHandler.access $ 000(ServletInitialHandler.java:73)[undertow-servlet-1.0.15.Final.jar:1.0.15.Final]的1.0.15.Final] . servlet.handlers.ServletInitialHandler $ 1.handle在io.undertow.server.Connectors.executeRootHandler(Connectors.java:177)上请求(ServletInitialHandler.java:146)[undertow-servlet-1.0.15.Final.jar:1.0.15.Final][undertow-core-1.0.15.Final.jar:1.0.15.Final] at io.undertow.server.HttpServerExchange $ 1.run(HttpServerExchange.java:727)[undertow-core-1.0.15.Final.jar: 1.0.15.Final] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)[rt.jar:1.7.0_45] at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615 )[rt.jar:1.7.0_45]在java.lang.Thread.run(Thread.java:744)[rt.jar:1.7.0_45]引起:javax.servlet.ServletException:java.lang.StackOverflowError
等等 . 完整的堆栈跟踪是巨大的,但如果你需要我会写它 .
2 回答
但我使用web.xml中的下一个结构
在web.xml中使用
<include-prelude>
和<include-coda>
而不是基于<jsp:include>
的模板后,问题就消失了 . 我刚才补充道到我的
web.xml
并从jsp文件中完全删除了丑陋的重复<jsp:include page="../template/header.jsp"/>
和<jsp:include page="../template/footer.jsp"/>
行 . 现在URL映射正常工作 .