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

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

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

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

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

JSP

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

Java

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

servlet

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

Q&A

解決済

2回答

9774閲覧

boolean型の使い方がわからない

RyoM

総合スコア90

MySQL

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

Java EE

Java EE(Java Enterprise Edition)はJavaベースのテクノロジーとその相互運用の仕様をまとめたものです。サーバとクライアントのアーキテクチャを規定し、特定アプリケーションのクラス用に定義されたテクノロジー設定のプロファイルを使用します。

JSP

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

Java

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

servlet

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

0グッド

0クリップ

投稿2016/08/17 22:13

お世話になります。
java始めて4か月の初心者です。
以下のソースに載っている部分のboolean型の使い方が今まで見てきたものと形が違うので困っています。
おそらく、前ページから情報(userとpass)を取得しその値もしくは文字列がが同一であればtrueを返すとかそういう意味なんでしょうが、その前についているauthUserというのがよくわかりません。
一体これは普通は何を示したもので次のif文であるif(check)の部分ではcheckの中身がtrueであるならばという意味になるのでしょうか?

java

1boolean check = authUser(user, pass); 2 if (check){ 3 /* 認証済みにセット */ 4 session.setAttribute("login", "OK"); 5 6 /* 本来のアクセス先へ飛ばす */ 7 String target = (String)session.getAttribute("target"); 8 response.sendRedirect(target); 9 }else{ 10 /* 認証に失敗したら、ログイン画面に戻す */ 11 session.setAttribute("status", "Not Auth"); 12 response.sendRedirect("/auth/Login"); 13 } 14 }

こちらより以下が上記のコードの全文です。

java

1import java.io.*; 2import javax.servlet.*; 3import javax.servlet.http.*; 4import java.sql.*; 5 6public class LoginCheck2 extends HttpServlet { 7 protected Connection conn = null; 8 9 public void init() throws ServletException{ 10 String url = "jdbc:mysql://localhost/auth"; 11 String user = "authtest"; 12 String password = "authtest"; 13 14 try { 15 Class.forName("com.mysql.jdbc.Driver").newInstance(); 16 conn = DriverManager.getConnection(url, user, password); 17 }catch (ClassNotFoundException e){ 18 log("ClassNotFoundException:" + e.getMessage()); 19 }catch (SQLException e){ 20 log("SQLException:" + e.getMessage()); 21 }catch (Exception e){ 22 log("Exception:" + e.getMessage()); 23 } 24 } 25 26 public void destory(){ 27 try{ 28 if (conn != null){ 29 conn.close(); 30 } 31 }catch (SQLException e){ 32 log("SQLException:" + e.getMessage()); 33 } 34 } 35 36 public void doPost(HttpServletRequest request, HttpServletResponse response) 37 throws IOException, ServletException{ 38 39 response.setContentType("text/html; charset=Shift_JIS"); 40 PrintWriter out = response.getWriter(); 41 42 String user = request.getParameter("user"); 43 String pass = request.getParameter("pass"); 44 45 HttpSession session = request.getSession(true); 46 47 boolean check = authUser(user, pass); 48 if (check){ 49 /* 認証済みにセット */ 50 session.setAttribute("login", "OK"); 51 52 /* 本来のアクセス先へ飛ばす */ 53 String target = (String)session.getAttribute("target"); 54 response.sendRedirect(target); 55 }else{ 56 /* 認証に失敗したら、ログイン画面に戻す */ 57 session.setAttribute("status", "Not Auth"); 58 response.sendRedirect("/auth/Login"); 59 } 60 } 61 62 protected boolean authUser(String user, String pass){ 63 /* 取りあえずユーザー名とパスワードが入力されていれば認証する */ 64 if (user == null || user.length() == 0 || pass == null || pass.length() == 0){ 65 return false; 66 } 67 68 try { 69 String sql = "SELECT * FROM user_table WHERE user = ? && pass = ?"; 70 PreparedStatement pstmt = conn.prepareStatement(sql); 71 72 pstmt.setString(1, user); 73 pstmt.setString(2, pass); 74 ResultSet rs = pstmt.executeQuery(); 75 76 if (rs.next()){ 77 return true; 78 }else{ 79 return false; 80 } 81 }catch (SQLException e){ 82 log("SQLException:" + e.getMessage()); 83 return false; 84 } 85 } 86}

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2016/08/17 22:23

無駄な4ヶ月だったのでしょうか? 最初の1ヶ月目でやってると思いますが
guest

回答2

0

ベストアンサー

ざっくりとしたレベルで説明しますと、
先ずauthUserメソッドというのが、
ユーザ認証に成功した(入力されたログイン情報でユーザテーブルからレコードが取得できた)場合はtrue、失敗したらfalseを返却します。

次にcheckという変数に、
authUserメソッドの実行結果を保存しています。

最後にcheckがtrueかそうでないかで、画面の遷移先などを制御しています。

ちなみに以下は、

Java

1 if(check){

以下と同値となります。

Java

1 if(check == true){

###追記
ただこの辺は文法の基礎の基礎なので、
このレベルでつまづいてるのはまずいです。

もう一度基礎を復習し直すことをお勧めします。

投稿2016/08/17 22:31

編集2016/08/17 22:35
Panzer_vor

総合スコア1636

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

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

RyoM

2016/08/17 22:57

if(check)がif(check == ?)を意味するということを知りませんでした。 教えていただいてありがとうございます。
Panzer_vor

2016/08/17 23:04

if文の括弧内は「booleanで評価できるもの」であれば良いということを理解しておいていただければ良いかなと。 今回のケースでは、 authUserはboolean型を返却するので下記のような書き換えも可能です。 (可読性云々の問題はありますが) if (authUser(user, pass)) {
guest

0

authUser() は全文の中で定義されている protected boolean authUser(String user, String pass){ から始まる関数を呼び出しています。
ご覧のとおり、この関数は true または false を戻り値としていますので、check にはそのどちらかがはいります。

今までの boolean がどのようなものなのか逆に気になりますが、通常 boolean と言えば true または false の値を取ります。

ifboolean を判定します。if (a == 1) {check = (a == 1); if (check) { は同じものです。

投稿2016/08/17 22:34

Zuishin

総合スコア28660

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

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

RyoM

2016/08/17 23:01

今まで見てきたものは boolean a = trueといったものしかなく、このような使い方をするとは知りませんでした。教えていただきありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問