🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

Q&A

解決済

1回答

1228閲覧

dogetを使った遷移がうまくいきません。

nikonikoniko

総合スコア5

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

1グッド

1クリップ

投稿2019/12/30 14:05

前提・実現したいこと

サーブレットを使って、動的アプリケーションを作っています。

「hoge==null」のときに遷移を成功させたいです。
コンパイルは成功するものの、実行時に例外エラーが発生します。

下記のコードに、問題ありますでしょうか?

発生している問題・エラーメッセージ

エラー500
java.lang.NullPointerException
servlet.WelcomeServlet.doGet(WelcomeServlet.java:38)
javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

エラーメッセージ

### 該当のソースコード <サーブレット(WelcomeServlet)> protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String hoge = request.getParameter("hoge"); System.out.println(hoge); String forwardPass =null; if(hoge.equals("done")) { forwardPass = "/WEB-INF/jsp/myPage.jsp"; }else { forwardPass = "/WEB-INF/jsp/login.jsp"; } RequestDispatcher dispatcher = request.getRequestDispatcher(forwardPass); dispatcher.forward(request, response); } <jsp> <a href="/characterStorage/WelcomeServlet"><font face="Comic Sans MS">ログイン<br/> <font size="35">login</font></font> </a> ### 試したこと switch文を使ったり、 else if(hoge == null)を試したりしました。 自分なりに調べたのですが、一向に進まないため、皆さんのお力をお借りしたいです。 また、初めての質問のため、足りない部分があったら申し訳ありません。 因みに、エラーコードにある38行目は、 「if(hoge.equals("done"))」 の部分になります。 「System.out.println(hoge);」 の部分では「null」と表示されます。 ### 補足情報(FW/ツールのバージョンなど) tomcat8.0
A-pZ👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

下記のコードに、問題ありますでしょうか?

問題もなにも, hoge が null なら hoge.equals("done") で NullPointerException が出るのは java としては当然でしょう. servlet も doGet も関係ありません.

hoge が "done" なら forwardPass = "/WEB-INF/jsp/myPage.jsp",
それ以外なら forwardPass = "/WEB-INF/jsp/login.jsp"
ということでしたら,

java

1 if(hoge != null && hoge.equals("done")) { 2 forwardPass = "/WEB-INF/jsp/myPage.jsp"; 3 } else { 4 forwardPass = "/WEB-INF/jsp/login.jsp"; 5 }

もしくは

java

1 if("done".equals(hoge)) { 2 forwardPass = "/WEB-INF/jsp/myPage.jsp"; 3 } else { 4 forwardPass = "/WEB-INF/jsp/login.jsp"; 5 }

では如何でしょうか.

投稿2019/12/30 14:22

jimbe

総合スコア13202

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nikonikoniko

2019/12/30 14:50

jimbe様、ご回答ありがとうございます。 下の方を試してみたところ、スムーズに遷移がいきました。大変助かりました。ありがとうございます。 ご回答頂いた二つのコードをヒントに、より理解を深め、技術を磨いていきたいと思います。 年末のお忙しいお時間にも関わらず、本当にありがとうございました。 良いお年をお迎えくださいませ。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問