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

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

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

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

Java

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

servlet

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

Q&A

解決済

3回答

9584閲覧

if文でnullの場合にしているelseの内容の通りに動きません、どうかお教えください。

edoooooo

総合スコア476

JSP

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

Java

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

servlet

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

0グッド

1クリップ

投稿2016/04/15 04:49

なぜかindex.jspでUserクラスのユーザー名を空欄にしたのに、
loginResult.jspでexample11/Mainに画面が移ってしまいます。
<%if(loginUser!=null && loginUser.getName()!=null && loginUser.getPass()!=null){
のように指定しているのになぜなのでしょうか?

Login.java(servlet)

java

1//Userインスタンス(ユーザー情報)の生成 2 User user=new User(name,pass); 3 4 //ログイン処理 5 LoginLogic loginLogic =new LoginLogic(); 6 boolean isLogin=loginLogic.execute(user); 7 8 //ログイン成功時の処理 9 if(isLogin){ 10 //ユーザー情報をセッションスコープに保存 11 HttpSession session=request.getSession(); 12 session.setAttribute("loginUser", user); 13

loginResult.jsp(WEB-INF/jsp)

java

1 2<h1>どこ粒ログイン</h1> 3<%if(loginUser!=null && loginUser.getName()!=null && loginUser.getPass()!=null){ 4 5 %> 6<p>ログインに成功しました。</p> 7<p>ようこそ<%=loginUser.getName() %>さん</p> 8<a href="/example11/Main">つぶやき投稿.閲覧へ</a> 9<%}else{ %> 10<p>ログインに失敗しましt。</p> 11<a href="/example11/">TOPへ</a> 12<%} %>

User

java

1package model; 2 3import java.io.Serializable; 4public class User implements Serializable{ 5 private String name;//ユーザー名 6 private String pass;//パスワード 7public User(){} 8public User(String name,String pass){ 9 this.name=name; 10 this.pass=pass; 11} 12public String getName(){return name;} 13public String getPass(){return pass;} 14 15} 16

index.jsp

java

1<form action="/example11/Login" method="post"> 2ユーザー名:<input type="text"name="name"><br> 3パスワード:<input type="password"name="pass"><br> 4<input type="submit"value="ログイン">

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

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

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

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

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

guest

回答3

0

getNameは、 UserクラスのString name; の値を返しますから、nullが返される事はありません。
nameに何も代入されていないのであれば、空文字列("")が返されます。

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

の null を "" に書き換えれば、動作するのではないかと思います。

投稿2016/04/15 05:01

coco_bauer

総合スコア6915

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

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

kaputaros

2016/04/15 05:15 編集

横から失礼します。 Userクラスには引数なしコンストラクタもあり、そちらでインスタンスを作成してすぐにgetName()等した場合は、参照型フィールドの初期値であるnullが返ると思うので、その言い方だと語弊を招くのでは?? この場合引数なしコンストラクタは private にするか宣言しないでおくべきかとは思いますが・・・^^;
edoooooo

2016/04/15 05:19

ありがとうございました。length>0 以外でも""でいいのですね 勉強になりました。  ありがとうございます。
guest

0

こんにちは。
nullじゃなくて空文字""なのではないですかね。
各項目をログ出しもしくはそのまま出力してして確認してみましたか?

カラッポかどうかを確認する際は、共通クラスなどに
「null または 空文字 かどうかを判定するメソッド」を用意して使ったりします。

(例) public static isNotBlank(String target){  boolean flag = true; if(target == null || "".equals(target)){ flag = false; } return flag; }

投稿2016/04/15 05:00

編集2016/04/15 05:07
kaputaros

総合スコア1844

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

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

edoooooo

2016/04/15 05:22

if文の中だけでなくメソッドでの使用法もあるのですね 条件が多くなったり、再利用ができないというデメリットが改善されそうです。  いろんなコードを書いて勉強しているのですが、このタイプも作ってみたいと思います。 ありがとうございました。
kaputaros

2016/04/15 05:27

if文の中でそのメソッドを呼び出すんですけどね。 共通便利クラスを1つ定義しておくと、何度も同じ処理を書かなくてすみますよ。 staticなのもミソです。
guest

0

ベストアンサー

index.jspで

html

1ユーザー名:<input type="text" name="name"><br> 2パスワード:<input type="password"name="pass"><br>

このまま入力せずにsubmitした場合、

  • nameの値 : 長さ0の文字列≠null
  • passの値 : 長さ0の文字列≠null

こうなります。

if文で

java

1loginUser.name.length() > 0 && logoinUser.pass.length() > 0

も条件に追加してみてはどうでしょう。

投稿2016/04/15 04:59

tkturbo

総合スコア5572

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

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

edoooooo

2016/04/15 05:20

 ありがとうございます。loginUserはnullでチェックできても、nameやpassはlengthで制限をかけるのですね!  loginUser.name.length() > 0 && loginUser.pass.length() > 0 このようにしてみたのですが、The field User.name is not visible(そのフィールドのUser.nameは目に見えない)となり <%if(loginUser!=null && loginUser.getName().length() > 0 && loginUser.getPass().length() > 0){ %> と下のコードと同じように、したところ、しっかりとelseのactionをさせることができました。ありがとうございました。
tkturbo

2016/04/15 05:21

おおう、getName()とgetPass()を使うのでしたね。。。
edoooooo

2016/04/15 05:34

少し入り組んだところにNameとPassを置いていたので、 すみません、ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問