2012-03-15 11 views
0

サーブレットからjspにデータを転送したいと思います。 次のコードを使用してjspにサーブレットを転送します。サーブレットとJSPの間でデータを転送する方法は?

RequestDispatcher rd = request.getRequestDispatcher("test2.jsp"); 
rd.forward(request, response); 

次に、次のコードを使用してjspのrequest.setAttribute()メソッドを追加したいと思います。

<%=request.getAttribute("str1") %> 

So。私のコードは、そのようなものです: サーブレットで

request.setAttribute("str1", "Test1"); 
request.setAttribute("str2", "Test2"); 
RequestDispatcher rd = request.getRequestDispatcher("test2.jsp"); 
rd.forward(request, response); 

<body> <p>This is <%=request.getAttribute("str1") %>.</p> <p>This is <%=request.getAttribute("str2") %>.</p> </body> 

JSPでエラーます発送はJSPに場合に発生します。

SEVERE: Error loading WebappClassLoader 
    delegate: false 
    repositories: 
    /WEB-INF/classes/ 
----------> Parent Classloader: 
[email protected] 
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

がスローされた例外は、あなたのコードの周りではありませんhttp://www.coderanch.com/t/361886/Servlets/java/Error-loading-WebappClassLoader-Why

を見てください、そこにあなたのセットアップでいくつかの他の問題があるので、私は最初にそれらを修正示唆しています。 Tomcatを正しくインストールし、環境変数を適切に設定しましたか?デフォルトでは、スタックトレースのその行が古いか(現在は削除/非推奨)を持っているのTomcatの完全古いバージョンを実行していることを伝えます

1
at org.apache.catalina.servlets.InvokerServlet.doPost(InvokerServlet.java:170) 

InvokerServletは、(Tomcatの4.xのオンデフォルトでは非推奨/無効になっていますが、何らかの理由で手動でオンになっています(その人はsecurity holesを認識していませんでした)。このサーブレットはTomcat 7.xで削除されました。

デフォルトでは、invokerサーブレットは/servlet/*のURLパターンにマップされ、/servlet/com.example.MyServletのようなURIパス情報内の完全なサーブレットクラスのみを受け入れます。

java.lang.ClassNotFoundException: test2.jsp 

は基本的に、それはあなたがURI /servlet/test2.jspで起動しようとしている「サーブレット」 test2.jspを見つけることができないことを言っている例外メッセージ。

したがって、それ自体で呼び出されるサーブレットの内部から、InvokerServletという名前のJSPに転送しようとしています。 ServletRequest#getRequestDispatcher()は、つまり、の相対のパスを現在の要求URIに解決します(its javadocも参照)。

特定の問題を解決するには、代わりに絶対パスを指定する必要があります。あなたのJSPがwebcontentのルートに置かれていると仮定すると、接頭辞は/です。例えば。

RequestDispatcher rd = request.getRequestDispatcher("/test2.jsp"); 

しかし、私は本当にその呼び出し側サーブレットを無効にすることをお勧めします。それは完全に時代遅れで、暴力の穴がいっぱいです。私はあなた自身が素敵なTomcat 7を取得し、あなたが現在読んでいる10年前のJSP/Servletチュートリアル/本を捨てることを提案します。 our servlets wiki pageを覗いてみてください。

関連する問題