- - PR -
servletからjspを呼ぶときにnullPointerExceptionがでます
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-11-17 16:25
今、jspからservletを呼び出し,servletからjspに戻すプログラムを作っているのですが、
サーブレットからjspになぜか画面遷移しません。 調査して見たところnullPointerExceptionがrd.forward(req,res)からエラーが出ていることがわかりました わかる方がいればなぜnullPointerExceptionがでるのか教えていただけないでしょうか? 環境はtomcat4.0,Apache,ローカル環境です 下記にコードを書きます。 見やすくするため大幅に文を省略しています。(動作は変わらず) Test.jsp <%@ page contentType="text/html; charset=shift_jis" %> <html> <head> <title>山猫軒 コメントブック</title> </head> <body> <form action="http://localhost:8080/cb/servlet/store" method="post"> <input type="submit" value="送信"> </form> </center> </body> </html> store.java import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import javax.servlet.ServletException; import java.io.IOException; import java.io.PrintWriter; import java.text.DateFormat; import java.util.Date; import java.text.SimpleDateFormat; import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; public class store extends HttpServlet { protected void doPost(HttpServletRequest req,HttpServletResponse res) throws IOException,ServletException { res.setContentType("text/html; charset=Shift_JIS"); String next=""; next="/../../entry/test.jsp"; try{ ServletContext con=getServletContext(); RequestDispatcher rd=con.getRequestDispatcher(next); rd.forward(req,res); }catch(Exception e){ PrintWriter out=res.getWriter(); out.println(e); } } } [ メッセージ編集済み 編集者: kセイバー 編集日時 2005-11-17 16:31 ] | ||||||||||||||||
|
投稿日時: 2005-11-17 16:58
こんにちは。
Exception発生時のトレースがないのではっきりしたことは言えませんが、forward先の jsp側でNullPointerExceptionが発生しているということはないですか? Servletのロジック的には特に問題はなさそうなので。。。 | ||||||||||||||||
|
投稿日時: 2005-11-17 16:58
#よくわからないので参考までに
>RequestDispatcher rd=con.getRequestDispatcher(next); で取得したrdがnullなだけでしょうね.. >next="/../../entry/test.jsp"; を絶対パスにかえるとどうなります? | ||||||||||||||||
|
投稿日時: 2005-11-17 18:30
このパスだと
構成はこんな感じかな
実際の構成はこんな感じだと予想
上記の予想からtest.jspが見つからないのでrdにNullが入ってるに1票でしょうか
[ メッセージ編集済み 編集者: ミソジマエ 編集日時 2005-11-17 19:46 ] | ||||||||||||||||
|
投稿日時: 2005-11-17 19:29
みなさん、お返事いただきありがとう、ございます。
現在、分析中ですが、聞かれたことをわかっている範囲で答えます ディレクトリについてですが、 tomcat4.0--webapps--cb--entry--test.jsp | | --web-inf--classes--store.java です 発生元についてですが、 念入りにしらべましたがnullpointerexceptionがでているのはやはりrd.forward(req,res)です。 直接URLを試す話については /Http://localhost:8080/cb/entry/test.jsp と入力して実行すると Http status 404とでました 直接IEのアドレスバーに入れるとうまくいきます 今日は、会社から帰るため返事は明日になります。 [ メッセージ編集済み 編集者: kセイバー 編集日時 2005-11-17 19:35 ] [ メッセージ編集済み 編集者: kセイバー 編集日時 2005-11-17 19:37 ] [ メッセージ編集済み 編集者: kセイバー 編集日時 2005-11-17 19:38 ] [ メッセージ編集済み 編集者: kセイバー 編集日時 2005-11-17 19:38 ] | ||||||||||||||||
|
投稿日時: 2005-11-17 21:03
ならば、rd がnullなのでしょうね。
getRequestDispatcher()の引数に渡すパスは、 絶対パスでもなく、相対パスでもなく、「コンテキスト相対パス」です。 | ||||||||||||||||
|
投稿日時: 2005-11-18 10:36
お返事いただきありがとうございます。
../を./に変えたらうまくいきました。 next="/././entry/test.jsp"; ですありがとうございました | ||||||||||||||||
|
投稿日時: 2005-11-18 10:45
./と../がどういった意味なのかもう一度調べなおされたほうが良いかと思います。 その書き方でも動くかと思いますが |