質問編集履歴
6
タイトルの変更
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
セッションスコープ
|
1
|
+
セッションスコープに値を保存しているはずなのに、NullPointerエラーが出てしまう。
|
body
CHANGED
File without changes
|
5
s
title
CHANGED
File without changes
|
body
CHANGED
@@ -8,6 +8,8 @@
|
|
8
8
|
|
9
9
|
謎が多いです。やれることはやったのですが、解決できません。
|
10
10
|
|
11
|
+
お願いします、助けてください。
|
12
|
+
|
11
13
|
### 発生している問題・エラーメッセージ
|
12
14
|
```
|
13
15
|
HTTPステータス 500 -
|
4
d
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,6 +6,8 @@
|
|
6
6
|
|
7
7
|
ユーザー登録が完了した後に、ユーザーIDとパスワードを用いてログインをしようとしている時に以下のエラーがでました。
|
8
8
|
|
9
|
+
謎が多いです。やれることはやったのですが、解決できません。
|
10
|
+
|
9
11
|
### 発生している問題・エラーメッセージ
|
10
12
|
```
|
11
13
|
HTTPステータス 500 -
|
3
詳細を付け加えました
title
CHANGED
File without changes
|
body
CHANGED
@@ -338,6 +338,8 @@
|
|
338
338
|
|
339
339
|
ですが、その後ログインを試みたところ、エラーメッセージの通りなのですが、User_MainPageServlet.javaの〇部分にてエラーが発生しました。NullPointerと出ているので対象の値がNullになっているかと思ったのですが、セッションに保存されており、セッションを呼び出していると思ってますので謎が深まっております。ちなみにlogin.jspにて入力したユーザーIDとパスワードをSystem.out.println(~)にてちゃんと値が格納されているか確認をしたところ、しっかりコンソールにて出力されていました。
|
340
340
|
|
341
|
+
session.setAttribute("userbeanses", ub)で値を設定後、別のサーブレットでUserBean ub = (UserBean) session.getAttribute("userbeanses");するとnullになってしまう理由が理解できません....(get/setしているはずなのに)
|
342
|
+
|
341
343
|
多数の長いソースコードを張り付けて申し訳ありませんがご協力本当によろしくお願いいたします。
|
342
344
|
|
343
345
|
|
2
マークダウンに変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -7,7 +7,10 @@
|
|
7
7
|
ユーザー登録が完了した後に、ユーザーIDとパスワードを用いてログインをしようとしている時に以下のエラーがでました。
|
8
8
|
|
9
9
|
### 発生している問題・エラーメッセージ
|
10
|
+
```
|
11
|
+
HTTPステータス 500 -
|
10
12
|
|
13
|
+
|
11
14
|
type 例外レポート
|
12
15
|
|
13
16
|
メッセージ
|
@@ -16,8 +19,7 @@
|
|
16
19
|
|
17
20
|
例外
|
18
21
|
java.lang.NullPointerException
|
19
|
-
MainPage.User_MainPageServlet.doGet(User_MainPageServlet.java:45)
|
20
|
-
MainPage.User_MainPageServlet.doPost(User_MainPageServlet.java:
|
22
|
+
MainPage.User_MainPageServlet.doPost(User_MainPageServlet.java:36)
|
21
23
|
javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
|
22
24
|
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
|
23
25
|
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
|
@@ -25,9 +27,11 @@
|
|
25
27
|
|
26
28
|
注意 原因のすべてのスタックトレースは、Apache Tomcat/8.0.36のログに記録されています
|
27
29
|
|
28
|
-
### 該当のソースコード
|
29
30
|
|
31
|
+
Apache Tomcat/8.0.36
|
32
|
+
```
|
30
|
-
|
33
|
+
###1.UserBean.java
|
34
|
+
```
|
31
35
|
package User;
|
32
36
|
import java.io.Serializable;
|
33
37
|
public class UserBean implements Serializable{
|
@@ -109,9 +113,9 @@
|
|
109
113
|
}
|
110
114
|
|
111
115
|
}
|
112
|
-
|
116
|
+
```
|
113
|
-
|
114
|
-
|
117
|
+
###2.User_RegisterServlet.java(サーブレットクラス)
|
118
|
+
```
|
115
119
|
package MainPage;
|
116
120
|
|
117
121
|
import java.io.IOException;
|
@@ -133,81 +137,86 @@
|
|
133
137
|
private static final long serialVersionUID = 1L;
|
134
138
|
|
135
139
|
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
136
|
-
|
140
|
+
/*文字コードエンコーディング*/
|
137
141
|
request.setCharacterEncoding("UTF-8");
|
138
142
|
response.setCharacterEncoding("UTF-8");
|
139
143
|
response.setContentType("text/html;charset=UTF-8");
|
140
144
|
|
141
145
|
|
142
|
-
|
146
|
+
/*遷移先*/
|
143
|
-
|
147
|
+
String url = null;
|
144
148
|
|
145
|
-
|
149
|
+
/*User情報取得*/
|
146
|
-
|
150
|
+
UserBean ub = new User.UserBean();
|
147
151
|
|
152
|
+
/*パラメータの取得*/
|
148
|
-
|
153
|
+
String name= request.getParameter("name");
|
149
|
-
|
154
|
+
String sex = request.getParameter("sex");
|
150
|
-
|
155
|
+
String age = request.getParameter("age");
|
151
|
-
|
156
|
+
String year = request.getParameter("year");
|
152
|
-
|
157
|
+
String month = request.getParameter("month");
|
153
|
-
|
158
|
+
String day = request.getParameter("day");
|
154
|
-
|
159
|
+
String height = request.getParameter("tall");
|
155
|
-
|
160
|
+
String weight = request.getParameter("weight");
|
156
|
-
|
161
|
+
String userid = request.getParameter("userid");
|
157
|
-
|
162
|
+
String password = request.getParameter("password");
|
158
163
|
|
159
|
-
|
164
|
+
String birth = year+"年"+month+"月"+day+"日";
|
160
165
|
|
161
166
|
|
162
|
-
|
167
|
+
ub.setName(name);
|
163
|
-
|
168
|
+
ub.setSex(sex);
|
164
|
-
|
169
|
+
ub.setAge(age);
|
165
|
-
|
170
|
+
ub.setBirth(birth);
|
166
|
-
|
171
|
+
ub.setHeight(height);
|
167
|
-
|
172
|
+
ub.setWeight(weight);
|
168
|
-
|
173
|
+
ub.setUserid(userid);
|
169
|
-
|
174
|
+
ub.setPassword(password);
|
170
175
|
|
171
|
-
System.out.println(ub.getName());
|
172
|
-
System.out.println(ub.getSex());
|
173
|
-
System.out.println(ub.getAge());
|
174
|
-
System.out.println(ub.getBirth());
|
175
|
-
System.out.println(ub.getHeight());
|
176
|
-
System.out.println(ub.getWeight());
|
177
|
-
System.out.println(ub.getUserid());
|
178
|
-
System.out.println(ub.getPassword());
|
179
176
|
|
177
|
+
/*パラメータを取得で来ているかどうかの確認*/
|
178
|
+
System.out.println(ub.getName());
|
179
|
+
System.out.println(ub.getSex());
|
180
|
+
System.out.println(ub.getAge());
|
181
|
+
System.out.println(ub.getBirth());
|
182
|
+
System.out.println(ub.getHeight());
|
183
|
+
System.out.println(ub.getWeight());
|
184
|
+
System.out.println(ub.getUserid());
|
180
|
-
|
185
|
+
System.out.println(ub.getPassword());
|
181
|
-
session.setAttribute("userbeanses", ub);
|
182
|
-
UserBean ub_test = (UserBean) session.getAttribute("userbeanses");
|
183
186
|
|
184
|
-
☆ System.out.println(ub_test.getName());
|
185
|
-
System.out.println(ub_test.getSex());
|
186
|
-
System.out.println(ub_test.getAge());
|
187
|
-
System.out.println(ub_test.getBirth());
|
188
|
-
System.out.println(ub_test.getHeight());
|
189
|
-
System.out.println(ub_test.getWeight());
|
190
|
-
System.out.println(ub_test.getUserid());
|
191
|
-
|
187
|
+
HttpSession session = request.getSession();
|
192
|
-
//ログイン判定
|
193
|
-
|
188
|
+
session.setAttribute("userbeanses", ub);
|
189
|
+
UserBean ub_test = (UserBean) session.getAttribute("userbeanses");
|
194
190
|
|
191
|
+
/*セッションスコープに保存されているかの確認*/
|
192
|
+
System.out.println(ub_test.getName());
|
193
|
+
System.out.println(ub_test.getSex());
|
194
|
+
System.out.println(ub_test.getAge());
|
195
|
+
System.out.println(ub_test.getBirth());
|
196
|
+
System.out.println(ub_test.getHeight());
|
197
|
+
System.out.println(ub_test.getWeight());
|
198
|
+
System.out.println(ub_test.getUserid());
|
199
|
+
System.out.println(ub_test.getPassword());
|
200
|
+
//ログイン判定
|
201
|
+
UserAuthBean uab = new User.UserAuthBean();
|
202
|
+
|
195
|
-
|
203
|
+
if(uab.execute(ub) == true) {
|
196
|
-
|
204
|
+
/*認証に成功*/
|
197
|
-
//Beansをセッションオブジェクトに保存
|
198
|
-
|
205
|
+
url = "/WEB-INF/Login_Register/register_end.jsp";
|
199
|
-
|
206
|
+
}else{
|
200
|
-
|
207
|
+
/*認証に失敗*/
|
201
|
-
|
208
|
+
url = "/WEB-INF/Login_Register/register_error.jsp";
|
202
|
-
|
209
|
+
}
|
203
|
-
|
210
|
+
/*画面遷移*/
|
204
|
-
|
211
|
+
ServletContext servletContext = getServletContext();
|
205
|
-
|
212
|
+
RequestDispatcher rd = servletContext.getRequestDispatcher(url);
|
206
|
-
|
213
|
+
rd.forward(request, response);
|
207
|
-
|
214
|
+
}
|
208
215
|
}
|
209
216
|
|
210
|
-
|
217
|
+
```
|
218
|
+
###3.login.jsp(JSPファイル)
|
219
|
+
```
|
211
220
|
<login.jsp(jspファイル(ログイン画面))
|
212
221
|
<%@ page language="java" contentType="text/html; charset=UTF-8"
|
213
222
|
pageEncoding="UTF-8"%>
|
@@ -239,9 +248,10 @@
|
|
239
248
|
|
240
249
|
</body>
|
241
250
|
</html>
|
251
|
+
```
|
242
252
|
|
243
|
-
|
244
|
-
|
253
|
+
###4.User_MainPageServlet.java(サーブレットクラス)
|
254
|
+
```
|
245
255
|
package MainPage;
|
246
256
|
|
247
257
|
import java.io.IOException;
|
@@ -255,55 +265,74 @@
|
|
255
265
|
import javax.servlet.http.HttpSession;
|
256
266
|
|
257
267
|
import User.UserBean;
|
258
|
-
|
268
|
+
|
259
|
-
* Servlet implementation class User_MainPageServlet
|
260
|
-
*/
|
261
269
|
@WebServlet("/MainPage/User_MainPageServlet")
|
262
270
|
public class User_MainPageServlet extends HttpServlet {
|
263
271
|
private static final long serialVersionUID = 1L;
|
264
272
|
|
273
|
+
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
274
|
+
/*文字コードエンコーディング*/
|
275
|
+
request.setCharacterEncoding("UTF-8");
|
276
|
+
response.setCharacterEncoding("UTF-8");
|
277
|
+
response.setContentType("text/html;charset=UTF-8");
|
265
278
|
|
279
|
+
/*遷移先*/
|
280
|
+
String url = null;
|
281
|
+
|
282
|
+
/*ログイン-ユーザーID_パスワード情報取得*/
|
283
|
+
String userid_login = request.getParameter("userid_login");
|
284
|
+
String password_login = request.getParameter("password_login");
|
285
|
+
|
286
|
+
HttpSession session = request.getSession();
|
287
|
+
|
288
|
+
UserBean ub = (UserBean) session.getAttribute("userbeanses");
|
289
|
+
|
266
|
-
|
290
|
+
if(userid_login == ub.getUserid() && password_login == ub.getPassword()) {
|
291
|
+
url = "/WEB-INF/Menu/mainmenu.jsp";
|
292
|
+
}else if((ub.getUserid() == "" && ub.getPassword() == "") || userid_login != ub.getUserid()&& password_login!=ub.getPassword()){
|
293
|
+
url = "WEB-INF/Login_Register/login_error";
|
294
|
+
}
|
295
|
+
|
296
|
+
/*画面遷移*/
|
297
|
+
RequestDispatcher rd = request.getRequestDispatcher(url);
|
267
|
-
|
298
|
+
rd.forward(request, response);
|
268
299
|
}
|
269
300
|
|
301
|
+
|
270
302
|
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
271
|
-
|
303
|
+
/*文字コードエンコーディング*/
|
272
304
|
request.setCharacterEncoding("UTF-8");
|
273
305
|
response.setCharacterEncoding("UTF-8");
|
274
306
|
response.setContentType("text/html;charset=UTF-8");
|
275
307
|
|
276
|
-
|
308
|
+
/*遷移先*/
|
277
|
-
|
309
|
+
String url = null;
|
278
310
|
|
279
|
-
|
311
|
+
/*ログイン-ユーザーID_パスワード情報取得*/
|
280
|
-
|
312
|
+
String userid_login = request.getParameter("userid_login");
|
281
|
-
|
313
|
+
String password_login = request.getParameter("password_login");
|
282
314
|
|
283
|
-
|
315
|
+
HttpSession session = request.getSession();
|
284
316
|
|
285
|
-
|
317
|
+
UserBean ub = (UserBean) session.getAttribute("userbeanses");
|
286
318
|
|
287
|
-
|
319
|
+
if(userid_login == ub.getUserid() && password_login == ub.getPassword()) {
|
288
|
-
|
320
|
+
url = "/WEB-INF/Menu/mainmenu.jsp";
|
289
|
-
|
321
|
+
}else if((ub.getUserid() == "" && ub.getPassword() == "") || userid_login != ub.getUserid()&& password_login!=ub.getPassword()){
|
290
|
-
!= ub.getUserid()&& password_login!=ub.getPassword()){
|
291
|
-
|
322
|
+
url = "WEB-INF/Login_Register/login_error";
|
292
|
-
|
323
|
+
}
|
293
324
|
|
294
|
-
System.out.println(ub.getUserid());
|
295
|
-
System.out.println(ub.getPassword());
|
296
|
-
|
297
|
-
|
298
|
-
|
325
|
+
/*画面遷移*/
|
299
|
-
|
326
|
+
RequestDispatcher rd = request.getRequestDispatcher(url);
|
300
|
-
|
327
|
+
rd.forward(request, response);
|
301
328
|
}
|
302
329
|
}
|
303
330
|
|
304
331
|
|
332
|
+
```
|
305
333
|
|
306
334
|
|
335
|
+
|
307
336
|
### 試したこと
|
308
337
|
試したことというよりかは、ちゃんとセッションスコープに保存ができているかどうかの確認なのですが、User_Registerervlet.javaの☆部分にてSystem.out.println(ub_test.~)という形でセッションスコープに値がしっかり保存されているかどうかの確認をしたところ、しっかりコンソールにて値が出力されていました。
|
309
338
|
|
1
サーバーの種類追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -309,9 +309,9 @@
|
|
309
309
|
|
310
310
|
ですが、その後ログインを試みたところ、エラーメッセージの通りなのですが、User_MainPageServlet.javaの〇部分にてエラーが発生しました。NullPointerと出ているので対象の値がNullになっているかと思ったのですが、セッションに保存されており、セッションを呼び出していると思ってますので謎が深まっております。ちなみにlogin.jspにて入力したユーザーIDとパスワードをSystem.out.println(~)にてちゃんと値が格納されているか確認をしたところ、しっかりコンソールにて出力されていました。
|
311
311
|
|
312
|
-
多数の長いソースコードを張り付けて申し訳ありませんがご協力よろしくお願いいたします。
|
312
|
+
多数の長いソースコードを張り付けて申し訳ありませんがご協力本当によろしくお願いいたします。
|
313
313
|
|
314
314
|
|
315
|
+
|
315
316
|
### 補足情報(FW/ツールのバージョンなど)
|
316
|
-
|
317
|
-
|
317
|
+
サーバー:Tomcat8.0vサーバー
|