jackの勉強日記

勉強したことをアウトプットするための日記です。

@RequestParameter・・・??

2週間ぶりくらいの更新です。

もっと更新の頻度を上げてアウトプットをしたいと考えているjackです。

 

最近はJavaとposgreSQLを使用したアプリケーションを作成しています。

JavaフレームワークであるSpringBootやthymeleafを使用し始めましたが、正直理解度は浅いです。。。

今回は@RequestParameterについてです。

ビュー側で入力した値をコントローラ側で受け取る処理はよくあると思います。

その際に使うのが掲題のアノテーションです。

 

*ここからはSpringBoot初学者の説明のため、おそらく語弊があります。

 

具体的にはHTMLのformタグの中に

<input type="text" name="textForm">

みたいな入力欄があるとします。


こうすることによって、先ほど入力した値をtopメソッド内で

textという変数に入れて使用できます。

今まで@PathVariableしか使用していなかったので、こういうやり方もあるのかと学びました。(おそらく@RequestParameterの方が使用頻度高そう。。)

 

@RequestParameterはnullを基本的に許容していません。

なのでフォームを空のまま送信してしまうとエラーが発生します。

そういう場合は上記のコードの様にrequest="false"を指定してあげれば大丈夫です。(私はこのエラーでしばらくハマりました笑)

これからもよく使いそうなので、ここに備忘録として残します。


 

 

 

JavaとMySQLを用いたアプリケーション作成

最近はJavaMySQLを使用して、掲示板のようなアプリケーションを作成していました。

今日コードレビューを受けた際に、初めて知った知識があったのでここに備忘録として残します。

掲示板を使用するユーザーの情報を編集する際に、編集するユーザーのidを取得してデータベースからそのユーザーの情報を引っ張ってくるという時のお話。

前提として、データベース上のuserテーブルのidカラムはint型の数値が入ります。

DAOでsql文を作成する際に、user_id = ?とバインド変数を使用して、後からメソッドの引数としてint型のidを渡していました。

id自体はrequest.getParameter("userId")という形で取得してきていたので、String型での取得ということになります。これをint型にキャストして、

int userId = Integer.parseInt(request.getParameter("userId"))

という形にしてたんですね。

一応機能としては、動きました。

しかし打鍵テストの際に、編集画面のURLに直接、http~userId=hogeと打ち込むと、エラーが発生しました。

理由としては、hogeをint型にキャストできませんよということでした。

ただ、そうなるとint型でもメソッドに引数としてuserIdを渡すのは無理なのでは?と

ハマってしまいました。

結論、ユーザーを検索してくるselectメソッド(引数にString userId)を新しく追加してできました。

データベースから引っ張ってくる際に、String型の数値を(語弊があるかも)用いて検索がかけれることを知りませんでした。

レビューの際に教えていただき、勉強になりましたとさ。

 

3項演算子

随分久しぶりの投稿になってしまいました。

転職先が決まり、引越しなどバタバタ生活していました。

 

3項演算子とは条件分岐によって代入する値を変えたいときにしようするものみたいです。

 

具体的には

int c;

if (a > b) {

c = a;

} else {

c = b;

}

の様な場合です。

これを簡潔にする方法を3項演算子と呼びます。

やり方はこちら。

int c = (a > b) ? a : b;

条件式の中身がtrueの場合は a が、falseの場合は b が c に代入されます。

すごく短くまとまりました。

どんどん学習を進めていきます!

Java boolean型

Javaの変数でboolean型が出てきました。

これは真偽値を表すもので、trueもしくはfalseが入ります。

例えば、

boolean bool = true;

の様になります。

true, falseは" "を付けないことに注意。

また、

boolean bool = 2*9 == 18

の様に書くこともできます。

この場合、右辺の式があっているためboolにはtrueが入ります。

 

Java swich文

switch文は条件分岐に使われます。

if文も条件分岐に使われますが、条件によってはswitch文の方が簡潔にコードを記述できるようです。

 

switch (条件の値) {

case 値1:

  処理1;

  break;

case 値2:

  処理2;

  break;

}

となります。

また、defaultを使うと、caseで指定した値以外の値の処理を行うことができます。

if文のelseのような使い方ですね。

また何かあれば追記します。

Java 変数

Javaで変数を定義するやり方についての備忘録です。

 

ex. numberという変数に3という数値を代入する場合

int numer;

numer = 3;

 

これでnumberに3が代入されました。

Javaではまず変数の型を指定しないといけないんですね。

Rubyとの大きな違いはそこかなと感じました。

型としてはStiring(文字列)とint(数値)というのを今のところ学びました。

おそらくまだまだ出てくるでしょう。

都度、覚えたいなと思います。

 

追記

double型も出てきました。

double型は小数点の値を取り扱う型で、1.2や-15.7などですね。

2.0などもこの型に含まれるようです。

Javaの学習を始めました。。。

最近、転職活動やオリジナルアプリの作成がうまく進まず、モチベーションも上がらない日々が続いています。

そんな中で、ある会社の最終面接にJavaの知識が必要(基礎の基礎的なことですが・・・)とのことで、Progateで勉強を始めました。

はじめに学んだのがprintlnです。

println()は()内の文字列を出力するもので、Rubyでいうputsに近いものかなと感じました。

ProgateではSystem.out.println();という形で出てきましたが、前半部分のSystem.outが何を意味しているのかが分かりません笑

これは改めて勉強したいと思います。

引き続き勉強を頑張ります。