MENU

Eclipseでlocalhost:8080で404エラーが出たの

f:id:kiserukun:20210611090227p:plain  
Eclipsejspファイルにアクセスする際にlocalhost:8080で404エラーがでました。

f:id:kiserukun:20210713142808p:plain

なぜ起きていたのか

エラーの原因はファイルの位置とパスの指定ミスでした。

以下の順番でファイル移動を行います

htmlファイル → サーブレットjspファイル

 
サーブレットjspファイル

この間でlocalhost:8080で404エラーが表示されていました。

原因のコード

ファイルの位置
f:id:kiserukun:20210713145000p:plain
jspファイルをwebappの直下においていました。
doPostには以下のようにパスを指定していました。

/**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   request.setAttribute("input", input);
   RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/Answer.jsp");
   dispatcher.forward(request, response);
  }

修正後

f:id:kiserukun:20210713150649p:plain

/**
  * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
  */
 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   request.setAttribute("input", input);
   RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/Answer.jsp");
   dispatcher.forward(request, response);
  }

WEB-INFにjspフォルダを作成し、jspファイルをそこに置き 遷移先のパスも変更。

request.getRequestDispatcher("/WEB-INF/jsp/Answer.jsp")

【Amazonプライムビデオ】おすすめのシットコム3選!!

f:id:kiserukun:20210712092346p:plain

ドラマを見る際に一時間は長いなと思ったことありませんか?

そんな時は、海外ドラマのシットコムを見るのが一番!

一話完結で一話あたり時間は約30分!

今回はご飯を食べながら、サクッと観れる海外ドラマを3つ選びました。

どの作品も、見終わったあとのlost感が辛かったです・・・

おすすめのシットコム

フレンズ

ビッグバン★セオリー

モダンファミリー

【一株投資】複利の力

f:id:kiserukun:20210619154605p:plain 6月の配当金が出揃いました。




税引き後の配当金は4,374円でした・・・


年間、一万円いくでしょうか? 怪しいところです。


複利の力

金融庁のページより資産シミュレーションができます。

www.fsa.go.jp

現在は毎月2万円ほど投資に回している状態なので
毎月積立額を2万円、利回り4%、20年間運用すると 最終積立金額7,335,493円 になります。


利回り4%だと、それなりにリスクを負ってこの金額です。


もし、月5万円ほど投資に回すことができれば
毎月積立額を5万円、利回り4%、20年間運用すると 最終積立金額18,338,731円


月3万円の差で 1年間36万円 × 20年間 = 720万円
18,338,731(積立額を5万円) - 7,335,493(積立額を2万円) = 11,003,238円
11,003,238円 - 7,200,000 = 3,803,238円


複利に力で約400万円の差が生まれています。


これを見ると、早く投資して、長く持つことで複利の恩恵を受けやすくなります。


株主アンケートについて

東京海上ホールディングスの株主向けアンケート結果がありました

f:id:kiserukun:20210712105445j:plain


9年以上保有している人が約4分の1を占めています。


自分は短期売買では勝てないとわかっているので


安定的な企業を長く持ち続けて


長期投資を前提に、これからも投資をしていきたいと思っています。


あとがき

今後株価はどうなるのでしょうか・・・
リーマンショックを経験したことがないので暴落の恐怖が想像できません。
えげつないことになるんだろうなと思いつつ、貯金は貯金で確保します。

【Java】文字列(String)を数値(int)に変換する方法

f:id:kiserukun:20210611090227p:plain

Javaを勉強して「文字列→数値」の変換する機会がよくあります。
コマンドライン引数の値はString型として読み込まれるので、コマンドライン引数を使う機会が多いと自然に使う頻度は多くなるのかなと思っています。

文字列 → 数値

int i = Integer.parseInt(a);

数値 → 文字列

String a = String.valueOf(i);

 

こんな感じで使っています

public class Main {
    public static void main(String[] args) {
        int i = Integer.parseInt(args[0]);
    }
}


あとがき

csvファイルを読み込む際にもStringの配列として格納して値を使用するので その際にも文字列→数値に変換して使用していました。  

使用回数は多いですが、実際はほとんどコピペしているのであまり書いたことがありません・・・

【Java】HashMapの使い方と注意点

f:id:kiserukun:20210611090227p:plain  
HashMapを使ったので記録として残しておきます。

Mapについて

mapは[キー]と[値]をペアとして格納するデータ構造になっています

putを使って値を格納、getを使って値を所得する

import java.util.HashMap;
import java.util.Map;
 
public class Main {
 
 Map<String, String> map = new HashMap<>();
 
    public static void main(String[] args) {
        Main main = new Main();
        main.exec();
    }
    
     public void exec(){   
        map.put("key1", "広島");
        map.put("key2", "山口");
        map.put("key3", "岡山");
        
        System.out.println(map.get("key1"));
        System.out.println(map.get("key2"));
        System.out.println(map.get("key3"));
    }
}
>広島
>山口
>岡山

データを格納するときは[キー]と[値]をセットで記述します。 データを取り出すときは[キー]を指定することで値を取り出します。

1つずつ値を取り出す

1つずつ取り出すにはfor文を使います

import java.util.HashMap;
import java.util.Map;
 
public class Main {
 
 Map<String, String> map = new HashMap<>();
 
    public static void main(String[] args) {
        Main main = new Main();
        main.exec();
    }
      public void exec(){
        map.put("key1", "広島");
        map.put("key2", "山口");
        map.put("key3", "岡山");
        
        for (String key : map.keySet()) {
          String value = map.get(key);
          System.out.println(key + ":" + value);
        }
    }
}
>key1:広島
>key2:山口
>key3:岡山

注意点

HashMap (Java SE 11 & JDK 11 )

このクラスはマップの順序を保証しません。特に、その順序を常に一定に保つことを保証しません。

公式に載っているように順番が一定ではないようです。

私が確認したところ格納量が5つ以上になると並び順がバラバラになって取り出されました。

import java.util.HashMap;
import java.util.Map;
 
public class Main {
 
 Map<String, String> map = new HashMap<>();
 
    public static void main(String[] args) {
        Main main = new Main();
        main.exec();
    }
      public void exec(){
        map.put("key1", "広島");
        map.put("key2", "山口");
        map.put("key3", "岡山");
        map.put("key4", "広島");
        map.put("key5", "山口");
        map.put("key6", "岡山");
        
        for (String key : map.keySet()) {
          String value = map.get(key);
          System.out.println(key + ":" + value);
        }
    }
}
>key1:広島
>key2:山口
>key5:山口
>key6:岡山
>key3:岡山
>key4:広島

少しだけバラバラに取り出されています

データが多くなるともっとデータがごちゃごちゃになって返ってきそうなので 使い方には注意したいと思います。

あとがき

今はArrayList,HashMapしか使ったことがないので
TreeSetやTreeMapなど勉強していきたいと思います。

【Java】継承に継承を重ねオーバーライドする

f:id:kiserukun:20210611090227p:plain

継承を重ねることができることは知ってるけどどうやって書くの?
オーバーライドってよくわからない!

と思ったので、継承を理解していく為に記録しておきます。

継承に継承を重ねる

public class Main {
  public static void main(String[] args) {
    UltraHero ul = new UltraHero();
    ul.attack(); //UktraHeroのattackを実行
    SuperHero sh = new SuperHero();
    sh.attack(); //SuperHeroのattackを実行
    Hero h = new Hero();
    h.attack(); //Heroのattackを実行
  }
}

public class Hero {
  public void attack() {
      System.out.println("攻撃力は10");
  }
}

public class SuperHero extends Hero {
  public void attack() {
      System.out.println("攻撃力は20");
  }
}

public class UltraHero extends SuperHero {
  public void attack() {
      System.out.println("攻撃力は30");
  }
}

プログラムを実行すると
それぞれのattackメソッドが実行されます

>攻撃力は30
>攻撃力は20
>攻撃力は10

オーバーライドしてみる

コマンドライン引数を使い入力した数字によって 実行結果が変わるようにします。  
Mainクラスでは継承末端の孫であるUltraHeroクラスを呼び出します。

public class Main {
  public static void main(String[] args) {
    UltraHero ul = new UltraHero();
    ul.attack(args);
  }
}

public class Hero {//親
  public void attack(String[] args) {
    int hp =  Integer.parseInt(args[0]);
    if (hp == 10) {
      System.out.println("攻撃力は10");
    } else {
      System.out.println("攻撃できません");
    }
  }
}

public class SuperHero extends Hero {//子
  public void attack(String[] args) {
    int hp =  Integer.parseInt(args[0]);
    if (hp == 20) {
      System.out.println("攻撃力は20");
    } else {
      super.attack(args);
    }
  }
}

public class UltraHero extends SuperHero {//孫
  public void attack(String[] args) {
    int hp =  Integer.parseInt(args[0]);
    if (hp == 30) {
      System.out.println("攻撃力は30");
    } else {
      super.attack(args);
    }
  }
}

 

コマンドライン引数に30を入力します

>攻撃力は30

 

コマンドライン引数に20を入力します

>攻撃力は20

SuperHeroクラスのattackメソッドが実行されています  

コマンドライン引数に0を入力します

>攻撃できません

Heroクラスのattackメソッドが実行されています

あとがき

継承を少しかじることができました。
インターフェースは、まだ理解できていないのでこれから勉強していこうと思います。

ヴィア・ホールディングスから株主優待が到着

f:id:kiserukun:20210619154605p:plain

株主優待

到着しましたが・・・ f:id:kiserukun:20210702133523j:plain

250円引になってる!!!!

前回は500円引クーポンだったので優待改悪です・・・

株価低迷してますし、出してくれるだけでもありがたいと思いますが  
優待を目当てに買ったのでショックでした・・・

パステルプリン食べたい・・・