たな

たな

いろんなことを考えます。いろんなことに挑戦します。Javaのエンジニアです。

Springbootで開発していたらsing inが必要になった

結論

Usernameは user
Passwordは ターミナルに出力されている値
を入力したら、Sing inできます。

突然こんな画面に・・・

Springbootを使って開発をしていて、 http://localhost:8080 にアクセスしたら、いきなり下のような画面が現れました。

f:id:taiheipasocon:20190308231430p:plain

なんやこれ・・・。

SpringSecurityの設定らしいです

デフォルトで設定されるのだとか。 UsernameとPasswordを入力しなければなりません。

Usernameは user が入ります。
Passwordはターミナルなど、起動したところで
Using generated security password: xxxxxx
のような文言が出ていると思うので、xxxxxxのところを入力してください。 初見殺しですね・・・。

おわり。。

Javaの同じ文字列が同じ参照をもつこと

Javaの同じ文字列が同じ参照をもつこと

仕組み自体は知っていたのだけれど、それをinternメソッドというもので、試せることは知らなかった。

まとめ

Javaでは、aaaのように文字列を記述した場合は、同一のオブジェクトを参照する。
それはJavaVMがやってくれている。
明示的にするには、internメソッドを用いる。

実際にやってみる

public class Sample{
    public static void main(String [] args){
        
        String a = "a";
        String aa = "aa";
        String aaa = "aaa";

        //文字列(値)としては同じになるが、オブジェクト(それへのポインタ)は異なるものを比較する
        System.out.println(aaa.equals(a + aa));         //値の比較→true
        System.out.println(aaa == (aa + a));            //ポインタの比較→false
        System.out.println(aaa == (aa + a).intern());   //internメソッドを使用する→true
    }
}

上から順に、
値の比較、ポインタの比較、internメソッドを使ったポインタの比較になっている。
internメソッドを使うことで、「既に同じ文字列があったらそれ参照してなー」ってことだろう。
へーってなった。

おわり。。

JavaでHTMLタグを外したい

JavaでHTMLタグを外したい

Javaでデータを扱っているとき、取得した値のHTMLタグを外したいという状況が発生することがあります。
例えば、画面に表示している文章を取得して、json形式で情報をやりとりしたいというものです。
HTMLをパースすることになります。

まとめ

①jsoup(じぇいすーぷ)を使う
②正規表現を使う

①jsoup

jsoupを使用する方法が良さそうです。
jsoup Java HTML Parser, with best of DOM, CSS, and jquery
jsoupを使用するために、Mavenとかに依存する情報を書いたり、直接jarファイル突っ込んだり。
Maven Repository: org.jsoup » jsoup

②正規表現

私の場合は諸事情により、①が使えませんでした。
次の策として、正規表現を使ってHTMLタグを空欄に書き換える方法を取りました。 以下のように書きました。

(HTMLタグを消したいデータ).replaceAll("<[^>]+>", "");

これで取れます。 例えば、

public class Sample{
    public static void main(String [] args){
        
        String str = "<div>sample</div>";
        System.out.println("str: " + str);

        String str2 = str.replaceAll("<[^>]+>", "");
        System.out.println("str2: " + str2);
    }
}

str: <div>sample</div>
str2: sample

と出力されます。

よかったよかった。

ただ、②正規表現の方法だと文字参照 文字参照 - Wikipedia は消せないので注意してください。

おわり。。

【スポンサーリンク】