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

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

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

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

Java

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

servlet

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

Q&A

解決済

2回答

2314閲覧

loginUserがnullかだけでなくその要素のNameとPassのどちらもないとログインできないようにしたいです。

edoooooo

総合スコア476

JSP

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

Java

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

servlet

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

0グッド

0クリップ

投稿2016/04/15 01:28

java

1このコードをこの下のコードをその下のコードに変更したところ、NullPointerExceptionが出ます。 2<%if(loginUser!=null) %> 3 4<% if(loginUser.getName()!=null & loginUser.getPass()!=null){ %> 5

jspのコードの全体です。

java

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3 <%@ page import="model.User" %> 4 <% 5 //セッションスコープからユーザー情報を取得 6 User loginUser=(User)session.getAttribute("loginUser"); 7 %> 8<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 9<html> 10<head> 11<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 12<title>どこつぶログイン</title> 13</head> 14<body> 15<h1>どこ粒ログイン</h1> 16/* 17 18このコードをこの下のコードをその下のコードに変更したところ、NullPointerExceptionが出ます。 19<%if(loginUser!=null) %> 20 21*/ 22<% if(loginUser.getName()!=null & loginUser.getPass()!=null){ %> 23 24<p>ログインに成功しました。</p> 25<p>ようこそ<%=loginUser.getName() %>さん</p> 26<a href="/example11/Main">つぶやき投稿.閲覧へ</a> 27<%}else{ %> 28<p>ログインに失敗しましt。</p> 29<a href="/example11/">TOPへ</a> 30<%} %> 31</body> 32</html>

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

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

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

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

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

guest

回答2

0

java

1//セッションスコープからユーザー情報を取得 2User loginUser=(User)session.getAttribute("loginUser");

この時点でまだセッションに「loginUser」がセットされていなければ「loginUser == null」になってしまいます。
なので、

java

1if(loginUser.getName()!=null & loginUser.getPass()!=null){

この先頭部分は

java

1if(null.getName()!=null

とやってるのと同じことになるのでNullPointerExceptionが出るのです。
ちゃんと判定するなら

java

1if (loginUser != null && loginUser.getName() != null && loginUser.getPass() != null) {

のようにしないとまずいでしょ。

投稿2016/04/15 01:43

tkturbo

総合スコア5572

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

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

edoooooo

2016/04/15 04:15

ありがとうございます。jspで名前も、パスワードも入力しなかった時に限って、エラーになっていました。 if文では、抜け道のないように()内を記述したいと思います。
guest

0

ベストアンサー

loginUserのnullチェックが消えたため、loginUserがnullの場合に落ちます。
loginUserのnullチェックも別途行う必要があります。

Java

1// loginUserのnullチェックと中身のnullチェックを同時に 2if(loginUser != null && loginUser.getName()!= null && loginUser.getPass()!= null){ 3 // nullでなければ処理 4}

または、

Java

1// 先にloginUserのnullチェック 2if(loginUser != null){ 3 // loginUserがnullでなければ、中身のnullチェック 4 if(loginUser.getName()!=null && loginUser.getPass()!=null){ 5 // 中身もnullでなければ処理 6 } 7}

あと、論理積演算子は"&"と"&&"の2つがあります、
処理が異なるので注意して使用してください。

"&&"を使用した場合は、左辺がfalseであった場合、
全体の結果がfalseになることが確定しているので右辺の評価を行いません。

"&"の演算子だった場合、左辺がfalseであった場合でも、右辺の評価が実行されます。

論理和演算子も同じく"|"と"||"があります。
こちらは"||"の場合、左辺がtrueだったら右辺の処理が行われなくなります。

自分が行いたい処理をよく考え、適切な演算子を使ってください。

投稿2016/04/15 02:01

編集2016/04/15 02:03
abs123

総合スコア1280

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

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

edoooooo

2016/04/15 04:14

ありがとうございます。たしかに、jspで名前も、パスワードも入力しなかった時にエラーになっていました。 if文では、抜け道のないように()内を記述したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問