teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

書式の改善

2018/09/18 03:04

投稿

mutani
mutani

スコア20

title CHANGED
File without changes
body CHANGED
@@ -1,7 +1,18 @@
1
1
  こんにちは、最近servletやDAOクラスの勉強を行っているのですが
2
2
  以下のようなエラーがでました。
3
3
  解決案をご教授いただけないでしょうか。
4
+ <試したこと>
5
+ ・SQLよりデータを取得できているか。別クラスを作成し、コンソール出力はできました。
4
6
 
7
+ ・tomcatのバージョンを変えてみましたが改善されませんでした。
8
+
9
+ ・サーブレットの以下内容をコメントアウトするとエラーはでません。
10
+   t_productDAO t_productBean = new t_productDAO();
11
+   List<t_productBean>productList = t_productBean.findAll();
12
+   request.setAttribute("productList", productList);
13
+ 以上です。
14
+
15
+
5
16
  エラー内容及びservlet、daoクラスのソースを記載しておきます。
6
17
 
7
18
  よろしくお願いいたします。

1

書式の改善

2018/09/18 03:04

投稿

mutani
mutani

スコア20

title CHANGED
File without changes
body CHANGED
@@ -2,20 +2,18 @@
2
2
  以下のようなエラーがでました。
3
3
  解決案をご教授いただけないでしょうか。
4
4
 
5
+ エラー内容及びservlet、daoクラスのソースを記載しておきます。
6
+
7
+ よろしくお願いいたします。
8
+ **エラー内容**
9
+ ```
5
10
  HTTPステータス 500 - Internal Server Error
6
-
7
-
8
11
  Type Exception Report
9
-
10
12
  メッセージ サーブレットの実行により例外を投げました
11
-
12
13
  説明 The server encountered an unexpected condition that prevented it from fulfilling the request.
13
-
14
14
  例外
15
15
  javax.servlet.ServletException: サーブレットの実行により例外を投げました
16
16
  org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
17
-
18
-
19
17
  原因
20
18
  java.lang.NoClassDefFoundError: java/sql/Driver
21
19
  java.base/java.lang.ClassLoader.findBootstrapClass(Native Method)
@@ -34,11 +32,127 @@
34
32
  javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
35
33
  javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
36
34
  org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
35
+ 注意 原因のすべてのスタックトレースは、のログに記録されています
36
+ Apache Tomcat/9.0.10
37
+ ```
38
+ **servlet**
39
+ ```
40
+ package servlet;
37
41
 
42
+ import java.io.IOException;
43
+ import java.util.List;
38
44
 
45
+ import javax.servlet.RequestDispatcher;
39
- 注意 原因のすべてのスタックトレースは、のログに記録されています
46
+ import javax.servlet.ServletException;
47
+ import javax.servlet.annotation.WebServlet;
48
+ import javax.servlet.http.HttpServlet;
49
+ import javax.servlet.http.HttpServletRequest;
50
+ import javax.servlet.http.HttpServletResponse;
40
51
 
52
+ import dao.t_productDAO;
53
+ import model.t_productBean;
41
54
 
55
+ /**
56
+ * Servlet implementation class ProductList
57
+ */
42
- Apache Tomcat/9.0.10
58
+ @WebServlet("/ProductList")
59
+ public class ProductList extends HttpServlet {
60
+ private static final long serialVersionUID = 1L;
43
61
 
62
+ public ProductList() {
63
+ super();
64
+ }
65
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
66
+ response.setCharacterEncoding("UTF-8");
67
+
68
+ t_productDAO t_productBean = new t_productDAO();
69
+ List<t_productBean>productList = t_productBean.findAll();
70
+ request.setAttribute("productList", productList);
71
+
72
+ RequestDispatcher rd = request.getRequestDispatcher("/ProductList.jsp" );
73
+ rd.forward(request,response);
74
+ }
75
+ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
76
+ doGet(request, response);
77
+ }
78
+ }
79
+ ```
80
+ **DAO**
81
+ ```
82
+ package dao;
83
+
84
+ import java.sql.Connection;
85
+ import java.sql.DriverManager;
86
+ import java.sql.PreparedStatement;
87
+ import java.sql.ResultSet;
88
+ import java.sql.SQLException;
89
+ import java.util.ArrayList;
90
+ import java.util.List;
91
+
92
+ import model.t_productBean;
93
+
94
+ public class t_productDAO {
95
+ //ここからメンバ変数定義
96
+ private final String driver = "com.mysql.jdbc.Driver";
97
+ private final String url = "jdbc:mysql://localhost/wbr_inventory_control?characterEncoding=UTF-8&serverTimezone=JST";
98
+ private final String user = "testuser";
99
+ private final String password = "pass";
100
+
101
+ public List<t_productBean> findAll() {
102
+ Connection conn = null;
103
+ List<t_productBean>productList = new ArrayList<t_productBean>();//リスト名(リスト作成
104
+
105
+ try {
106
+ //JDBCドライバを読み込み
107
+ Class.forName(driver);
108
+
109
+ //データベースへの接続
110
+ conn = DriverManager.getConnection(url,user,password);
111
+
112
+ //SELECT文を準備
113
+ String sql = "SELECT * FROM t_product";
114
+ PreparedStatement pstmt = conn.prepareStatement(sql);
115
+
116
+ //SElECT文を実行し、結果を取得
117
+ ResultSet rs = pstmt.executeQuery();
118
+
119
+ while(rs.next()) { //select文の結果をArrayListに格納
120
+ int product_id = rs.getInt("product_id");
121
+ String product_genre_code = rs.getString("product_genre_code");
122
+ String product_name = rs.getString("product_name");
123
+ String product_maker = rs.getString("product_maker");
124
+ int product_price = rs.getInt("product_price");
125
+ int product_stock = rs.getInt("product_stock");
126
+ int product_sales = rs.getInt("product_sales");
127
+ String product_remarks = rs.getString("product_remarks");
128
+
129
+ t_productBean T_product = new t_productBean(product_id,product_genre_code,product_name
130
+ ,product_maker,product_price,product_stock,product_sales,product_remarks);
131
+ productList.add(T_product);
132
+
133
+ }
134
+
135
+ }catch(SQLException e) { //例外SQL例外あり
136
+ e.printStackTrace();
137
+ return null;
138
+ } catch (ClassNotFoundException e) { //ノットファウンドあり
139
+ e.printStackTrace();
140
+ return null;
141
+ }finally { //catchがなくても必ず実行
142
+ //データベース切断
143
+ if(conn != null) {
144
+ try {
145
+ conn.close();
146
+ }catch(SQLException e) {
147
+ e.printStackTrace();
148
+ return null;
149
+ }
150
+ }
151
+ }
152
+ return productList;
153
+ }
154
+ }
155
+ ```
156
+
157
+
44
158
  何卒よろしくお願いいたします。