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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Eclipse

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

servlet

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

Q&A

解決済

1回答

6056閲覧

jspの画面が遷移しない

masaking

総合スコア30

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Eclipse

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

servlet

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

0グッド

0クリップ

投稿2019/11/01 08:20

IpCheckのサーブレットファイルを実行し、ipEntryでパソコンの管理番号を入力し、データベースにアクセスして、ipアドレスを引き出して、ipResultで出力するだけのプログラムを作ろうとしています。
ipEntryにpcのidを打ち込んでも、画面が遷移せずに困っています。

どうすれば、データベースからipアドレスを引っ張り出して表示することができるでしょうか

ipEntry.jsp

Java.jsp

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<title>IP調査</title> 8</head> 9<body> 10 <h1>IP調査</h1> 11 <form action="/ipChecker/IpCheck" method="get"> 12 PCのID: <input type="text" name="ip"> 13 <br> 14 <input type="submit" value="送信"> 15 </form> 16</body> 17</html>

ipResult.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="model.IP" %> <% IP ip = (IP) request.getAttribute("ipList"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>ip結果</title> </head> <body> <h1>ip結果</h1> PCのID:<%= ip.getIpAddress() %><br> IPアドレス:<%= ip.getPcID() %> <a href="/ipchecker/ipEntry">戻る</a> </body> </html>

サーブレット
ipCheck.java

package servlet; import java.io.IOException; import java.util.List; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import model.IP; import model.IpSelect; @WebServlet("/IpCheck") public class IpCheck extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/ipEntry.jsp"); dispatcher.forward(request, response); } protected void dopost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ IpSelect ipSelect = new IpSelect(); List<IP> ipList = ipSelect.execute(); request.setAttribute("ipList", ipList); RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/ipResult.jsp"); dispatcher.forward(request, response); } }

モデル
IpSelect.java

package model; import java.util.List; import dao.IpDAO; public class IpSelect { public List<IP> execute(){ IpDAO dao = new IpDAO(); List<IP> ipList =dao.findAll(); return ipList; } }

IP.java

package model; import java.io.Serializable; public class IP implements Serializable{ private String pcID; private String ipAddress; public IP() {} public IP (String pcID,String ipAddress) { this.pcID = pcID; this.ipAddress=ipAddress; } public String getIpAddress() { return ipAddress; } public void setIpAddress(String ipAddress) { this.ipAddress = ipAddress; } public String getPcID() { return pcID; } public void setPcID(String pcID) { this.pcID = pcID; } }

IpDAO

package dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import model.IP; public class IpDAO{ private final String JDBC_URL = "jdbc:mysql://localhost:3306/pcm?useUnicode=true&\r\n" + "useJDBCCompliantTimezoneShift=true&\r\n" + "useLegacyDatetimeCode=false&\r\n" + "serverTimezone=UTC"; private final String DB_USER = "root"; private final String DB_PASS = "y21password"; public List<IP> findAll() { List<IP> ipList = new ArrayList<>(); try (Connection conn = DriverManager.getConnection(JDBC_URL, DB_USER, DB_PASS)){ String sql = "SELECT pc_id, ip_address from ip_address_revised"; PreparedStatement pStmt = conn.prepareStatement(sql); ResultSet rs = pStmt.executeQuery(); while (rs.next()) { String id = rs.getString("pc_id"); String ip = rs.getString("ip_address"); IP ipbeans = new IP(id,ip); ipList.add(ipbeans); } } catch (SQLException e) { e.printStackTrace(); return null; } return ipList; } }

ファイル構成です

Microsoft Windows [Version 10.0.17763.737]
Widnows10 Pro version 1809

mysql Ver 8.0.17 for Win64 on x86_64 (MySQL Community Server - GPL)
mysql-connector-java-8.0.17.jar
java version "1.8.0_221"

Eclipse
Version: 2019-09 R (4.13.0)
Build id: 20190917-1200

C:\Program Files (x86)\Java\jre1.8.0_221
C:\Program Files (x86)\Java\jdk1.5.0

初めてのJAVAなので、至らない点多いと思いますが、社内で教えてくれる人もいないため、よろしくお願いいたします。

足りない情報ありましたらご連絡ください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ipEntry.jsp

html

1<form action="/ipChecker/IpCheck" method="get">

このformで送信すると、@IpCheckのdoGetが呼び出されるので、検索処理を実装しているdoPostが呼び出されないからです。methodはpostにしましょう。

なお、dopostメソッドは doPost が正しい名前です。

投稿2019/11/01 12:26

A-pZ

総合スコア12011

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

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

masaking

2019/11/04 03:58

ありがとうございます。ipEntry.jspで、method="get"をmethod="post"に、 また、 IpCheck.javaを、 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException のようにdoPostに書き換えました。 その結果、HTTPステータス 405 – Method Not Allowed タイプ ステータスレポート メッセージ HTTPのPOSTメソッドは、このURLではサポートされていません。 説明 リクエストラインで受信されたメソッドは、オリジンサーバーによって認識されますが、ターゲットリソースによってサポートされていません。 というエラーが出ました。 自分で調べたところ、doPostの中身がおかしいのかな、とおもうのですが、具体的に何が良くないのかいまいちわからないです。 どこがおかしいのでしょうか?
A-pZ

2019/11/04 04:17

doPostに記載された内容には誤りがありませんでした。 他のクラスでコンパイルエラーが出ている場合は、Webアプリケーションに反映されない場合があります。見たところtestクラスが邪魔をしているようですので、こちらを削除するか、コメントアウトしてコンパイルエラーをなくした状態で、サーバを再起動してください。
masaking

2019/11/11 04:32

コメントありがとうございます。 ファイルを削除して再起動したところ、以下のように出てきました。 HTTPステータス 500 – Internal Server Error タイプ 例外報告 メッセージ [/WEB-INF/jsp/ipResult.jsp] の処理中に行番号 [13] で例外が発生しました。 説明 サーバーは予期しない条件に遭遇しました。それはリクエストの実行を妨げます。 例外 org.apache.jasper.JasperException: [/WEB-INF/jsp/ipResult.jsp] の処理中に行番号 [13] で例外が発生しました。 10: </head> 11: <body> 12: <h1>ip結果</h1> 13: PCのID:<%= ip.getIpAddress() %><br> 14: IPアドレス:<%= ip.getPcID() %> 15: <a href="/ipchecker/ipEntry">戻る</a> 16: </body> Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:625) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:514) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) servlet.IpCheck.doPost(IpCheck.java:34) javax.servlet.http.HttpServlet.service(HttpServlet.java:660) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 根本原因 java.lang.NullPointerException org.apache.jsp.WEB_002dINF.jsp.ipResult_jsp._jspService(ipResult_jsp.java:131) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) servlet.IpCheck.doPost(IpCheck.java:34) javax.servlet.http.HttpServlet.service(HttpServlet.java:660) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 注意 原因のすべてのスタックトレースは、サーバのログに記録されています むずかしいです。。。。何が悪いのか。。。 どこを直せばよいでしょうか? 自分で調べたところ、NullPointerExceptionとあるので、例外的な処理に対する記述ができていない、ということなのかなーとは思うのですけど
masaking

2019/11/11 06:33

C:\Users\A2482\Desktop\pleiades\tomcat\9\lib\mysql-connector-java-8.0.17.jar は、JAVAリソースーライブラリーーapatche tomat v9.0直下に配置しております
A-pZ

2019/11/11 15:42

実行時に JSPの13行目 <%= ip.getIpAddress() %> でNullPointerExceptionが出ているので、ip の値がnullのようです。 ところでそのJSPの中で、<% IP ip = (IP) request.getAttribute("ipList"); %> としていますが、 このJSPを表示しているサーブレットでは、 List<IP> ipList = ipSelect.execute(); request.setAttribute("ipList", ipList); このipListがnullになっています。さらには、ipListの型は、 List<IP> ですので、JSPでは <% List<IP> ipList = (List<IP>) request.getAttribute("ipList"); %> が正しいです。 まずは値が取得できること、さらにはJSPでnullチェックをすべきでしょう。そのあと、Listに入っているIPクラスを分解して処理するようにしましょう。
masaking

2019/11/13 06:23

モデルのファイルをmainメソッドを作って動かした結果、確かに値は取れました。 nullチェックおよび、IPクラスの分解のやり方はわからなかったのですが、ご指摘のように、requestクラス? の型をList<IP>にしたらうまく通りました。ありがとうございます。 しかし、ipアドレスの一覧が取得されるだけで、フォームに入力した値で検索はできていないです。 そこをどうにかしようとしています今度は。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問