我想将数据从servlet传输到jsp。 当我使用以下代码将servlet传输到jsp时。
RequestDispatcher rd = request.getRequestDispatcher("test2.jsp");
rd.forward(request, response);
然后我想使用以下代码为jsp添加request.setAttribute()方法。
<%=request.getAttribute("str1") %>
因此。我的代码是这样的: 在Servlet中
request.setAttribute("str1", "Test1");
request.setAttribute("str2", "Test2");
RequestDispatcher rd = request.getRequestDispatcher("test2.jsp");
rd.forward(request, response);
在JSP中
<body>
<p>This is <%=request.getAttribute("str1") %>.</p>
<p>This is <%=request.getAttribute("str2") %>.</p>
</body>
调度到jsp时会发生错误。
SEVERE: Error loading WebappClassLoader
delegate: false
repositories:
/WEB-INF/classes/
----------> Parent Classloader:
org.apache.catalina.loader.StandardClassLoader@18c56d
test2.jsp
java.lang.ClassNotFoundException: test2.jsp
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1360)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1206)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1083)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:806)
at org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:361)
at org.apache.catalina.servlets.InvokerServlet.doPost(InvokerServlet.java:170)
答案 0 :(得分:1)
at org.apache.catalina.servlets.InvokerServlet.doPost(InvokerServlet.java:170)
堆栈跟踪的那一行告诉你要么运行一个完全过时的Tomcat版本,它默认打开旧版(当前已弃用/已删除)InvokerServlet
(Tomcat 4.x),或者一个平庸的Tomcat版本(5.x-6.x),它默认情况下已经弃用/禁用但是以某种方式手动打开(该人显然不知道security holes)。该Tomlet已在Tomcat 7.x中删除。
默认情况下,调用者servlet映射到/servlet/*
的URL模式,并且只接受URI路径信息中的完全限定servlet类,如/servlet/com.example.MyServlet
。
异常消息
java.lang.ClassNotFoundException: test2.jsp
基本上告诉它找不到你试图通过URI test2.jsp
调用的“servlet”/servlet/test2.jsp
。
因此,您尝试从servlet内部转发到JSP,该servlet本身由InvokerServlet
调用。 ServletRequest#getRequestDispatcher()
即将路径 relative 解析为当前请求URI(另请参阅its javadoc)。
因此,要解决您的特定问题,您需要指定绝对路径。假设您的JSP位于webcontent的根目录中,只需添加/
前缀。 E.g。
RequestDispatcher rd = request.getRequestDispatcher("/test2.jsp");
那就是说,我真的建议关闭那个调用者servlet。它完全过时,充满了可洞察性漏洞。我建议给自己一个很好的Tomcat 7并抛弃你正在阅读的那个有着十年历史的JSP / Servlet教程/书。看一下our servlets wiki page。
答案 1 :(得分:0)
查看http://www.coderanch.com/t/361886/Servlets/java/Error-loading-WebappClassLoader-Why
抛出的异常不在你的代码周围,你的设置中还有一些其他问题,所以我建议先修复它们。您是否正确安装了tomcat并正确设置了环境变量?