質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.49%
JSP

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

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

0回答

1138閲覧

EclipseでWebアプリが表示できません(500エラー)。

x0707x

総合スコア10

JSP

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

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2019/01/02 08:51

編集2019/01/02 09:00

前提・実現したいこと

学校でTomcat、MySQLを用いてWebアプリを作ったので、自宅でも表示させたいと思ったのでEclipseを用いて色々と構成をしていたのですが、表示がされない様なので今回質問をさせて頂きました。

先ず環境ですが
・Windows 10
・Eclipse 2018 12(All in oneの64bit版Java Full Edition(C:pleiadesにあります))
・Apache Tomcat/8.5.37(C:Tomcat8.5にあります)
・jdk1.8.0_77
・MySQL 8.0
になります。

下記の図が、表示が出来た時のTomcatの構成です。
tomcatの構成図
Eclipseでは、上記のファイルを用いて構成を行いました。
下記は、Eclipseのファイル構成になります。
Eclipseのファイル構成

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

TomcatのサーバーでGachaServlet.javaを右クリック→サーバで実行をしましたところ、下記の様なエラーが出ました。
500エラー

ソースコード

以下が、今回で使うファイルのソースコードです。

  • GachaServlet.java
import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; import gacha.*; import java.util.Random; import java.sql.*; public class GachaServlet extends HttpServlet { private static String DB_NAME = "gacha_db"; private static String DB_USER = "root"; private static String DB_PASS = "root"; private static String LOGIN_JSP = "WEB-INF/Login.jsp"; private static String START_JSP = "WEB-INF/Start.jsp"; private static String MISS_JSP = "WEB-INF/Miss.jsp"; private static String HIT_JSP = "WEB-INF/Hit.jsp"; private static String LOG_JSP = "WEB-INF/log.jsp"; private static String RANKING_JSP = "WEB-INF/ranking.jsp"; public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { doProcess(req, res); } public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { doProcess(req, res); } protected void doProcess(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { String nextView = ""; DatabaseConnector dc = null; UserManager um = null; RankingManager rm = null; Random r = new Random(); int N = r.nextInt(100); try { dc = new DatabaseConnector(DB_NAME, DB_USER, DB_PASS); dc.openConnection(); um = new UserManager(dc); rm = new RankingManager(dc); req.setCharacterEncoding("UTF-8"); res.setContentType("text/html; charset=UTF-8"); PrintWriter out = res.getWriter(); String action = req.getParameter("action"); if(action == null) { action = ""; } if(action.equals("") || action.equals("loginPage")) { nextView = LOGIN_JSP; } else if(action.equals("login")) { if(login(um, req)) { nextView = START_JSP; } else { nextView = LOGIN_JSP; } } else if(action.equals("logout")) { nextView = logout(req); } else if(action.equals("registration")) { nextView = registration(um, req); } else if(action.equals("gacha_result")) { if(N >= 0 && 95 > N){ nextView = miss(req); } else { Connection con=null; Statement st=null; String login="root"; String passwd="root"; ResultSet rs = null; nextView = hit(req, rm); } } else if(action.equals("start")) { nextView = START_JSP; } else if(action.equals("log")) { nextView = LOG_JSP; } else if(action.equals("log_reset")) { Connection con=null; Statement st=null; String login="root"; String passwd="root"; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost/gacha_db" + "?useUnicode=true&characterEncoding=UTF-8" + "&autoReconnect=true"; con = DriverManager.getConnection(url, login, passwd); st = con.createStatement(); String sql = "truncate table log_tbl"; rs = st.executeQuery(sql); } catch (Exception e) { } finally { try { rs.close(); con.close(); st.close(); } catch (Exception e) { } } nextView = LOG_JSP; } else if(action.equals("ranking")) { nextView = RANKING_JSP;//showRanking(rm, req); } if(nextView.equals("")) { req.setAttribute("message", "不正なアクションが要求されました(" + req.getParameter("action") + ")"); nextView = LOGIN_JSP; } dc.closeConnetion(); } catch(Exception e) { e.printStackTrace(); req.setAttribute("message", "例外が発生しました:" + e.toString()); nextView = LOGIN_JSP; } finally { req.getRequestDispatcher(nextView).forward(req, res); } } private boolean login(UserManager um, HttpServletRequest req) throws Exception { String userName = req.getParameter("uname"); String password = req.getParameter("pass"); if(!isValid(userName) || !isValid(password)) { req.setAttribute("message", "記入漏れがあります"); return false; } else if(um.authenticate(userName, password) == false) { req.setAttribute("message", "ユーザ名またはパスワードが違います"); return false; } else { HttpSession session = req.getSession(true); int add = 0; session.setAttribute("userName", userName); session.setAttribute("add", add); req.setAttribute("message", "認証に成功しました"); } return true; } private String registration(UserManager um, HttpServletRequest req) throws Exception { String userName = req.getParameter("uname"); String password = req.getParameter("pass"); String password2 = req.getParameter("pass2"); if(!isValid(userName) || !isValid(password) || !isValid(password2)) { req.setAttribute("message", "記入漏れがあります"); } else if(!password.equals(password2)) { req.setAttribute("message", "パスワードが確認用と一致しません"); } else if(um.registration(userName, password)) { req.setAttribute("message", "登録に成功しました"); } else { req.setAttribute("message", "すでに登録されています"); } return LOGIN_JSP; } private String logout(HttpServletRequest req) { HttpSession session = req.getSession(false); if(session != null) { session.invalidate(); req.setAttribute("message", "ログアウトしました"); } return LOGIN_JSP; } private String miss(HttpServletRequest req){ HttpSession session = req.getSession(true); int add = (Integer)session.getAttribute("add"); add += 100; session.setAttribute("add", add); return MISS_JSP; } private String hit(HttpServletRequest req, RankingManager rm) { HttpSession session = req.getSession(true); int add = (Integer)session.getAttribute("add"); add += 100; session.setAttribute("add", add); int MONEY = add; String UNAME = (String)session.getAttribute("userName"); rm.RankingSet(MONEY, UNAME); session.setAttribute("add", 0); return HIT_JSP; } protected boolean isValid(String str) { if(str != null && !str.equals("")) { return true; } else { return false; } } }

試したこと

今回、環境を整えるにあたり、行ったこと、確認したことを書きます。

  • ウィンドウ→設定で、一般→ワークスペース→UTF-8を確認。
  • Java→インストール済みのJRE→C:\Program Files\Java\jdk1.8.0_77に設定。

コンパイラー準拠レベルは1.8。

  • Tomcatをインストール後、EclipseのプラグインでTomcatをインストールしました。

また、ウィンドウ→設定のTomcatでTomcatバージョンを8.xで選択、TomcatホームをC:Tomcat8.5に選択、コンテキスト宣言モードをコンテキスト・ファイルに選択。
JVM設定は、Javaのjdk1.8.0_77を選択。

  • サーバー→ランタイム環境のディレクトリをC:Tomcat8.5、JREをjdk1.8.0_77に選択。
  • 本プロジェクのを実行は、GachaServlet.javaを右クリック→実行→サーバーで実行。

新規サーバーは、Tomcat v8.5 サーバーで、ランタイム環境は上記のTomcat8.5に選択。

  • MySQLをインストールし、データベースとテーブルを作成後、EclipseのパースペクティブでDB Viewerを選択。登録→JDBCドライバをC:\Program Files (x86)\MySQL\Connector J 8.0/mysql-connector-java-8.0.13.jarに選択。→JDBC Driverをcom.mysql.jdbc.Driver、Type4、接続文字列をjdbc:mysql://localhost:3306?characterEncoding=UTF-8&serverTimezone=JST、ユーザ名とパスワードを入力後、接続。

下記の図は、接続後の構成になります。
DB Viewerの構成図

今回、初めて質問をさせて頂いたのですが、見辛いかと思いましたら大変申し訳御座いません。
どうぞ、宜しくお願い致します。
また、文字数制限がある様なので、本アプリで使いますソースコードを後に載せさせて頂きます。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/01/02 09:05

スタックトレースがそのままの理由なのになぜ無関係な場所を調べる?
x0707x

2019/01/02 09:33

このプログラムを使った際の環境下では、このようなエラーが出ずに閲覧することが出来ました。 その為、今回のエラーがなぜ起きてしまったのかが分からないのです・・・。
退会済みユーザー

退会済みユーザー

2019/01/02 09:49

普通に NullPoiterException のスタックトレースがでてますが。。。 まあ、一部例外が発生したあと無視してるので起きそうだなぁとは思えます。 ちなみにどの行とは指摘しません。行数もずれていればインデントもずれてるのでまともには読んでません。 多分最新ではないのでしょう
退会済みユーザー

退会済みユーザー

2019/01/02 09:58

あと Tree もどきと プロジェクトエクスプローラーでの JSPの位置が違うのでコードが違うんじゃね
x0707x

2019/01/02 10:25

成程、NullPointerExceotionという事ですので、どこかがnullになっていておかしいという事なんですね。 インデントが崩れているとの事なので、この後フォーマットを行ってもう少し見やすくしてみます! また、ご指摘頂いた通りにJSPのTomcatの構造が、Eclipseでの構造と違うようなので、そこの点も直してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問