備忘録として残します。
人に説明したりするのが僕にとって良いアウトプットになっているのでもし間違っていましたらご指摘宜しくお願い致します。
今後も追加予定です。
##equalsメソッド
equalsメソッドとは、文字列の比較を行うことができる命令文です。
比較といえば基本データ型である整数の比較があります。
基本データ型の整数比較とは異なり、equalsを使用する際は、参照データ型の文字列比較になる点が異なります。
eaualsメソッドでは、一致するときにtrueを返し、一致しない場合にはfalseを返します。
##アプリケーションプロパティズのcontext-pathについて。
server.servlet.context-path=/spring_training
HTML内でパスを通すときに以下のように
/spring_training/lesson01_08/login
spring_trainingのルート設定をしているということになるので、フォルダの前に明記する必要がある。
##コントローラーの命名
コントローラーには拡張子前にControllerと名付ける必要がある。
コントローラーとして認識されない。
##フィルタクラス
「フィルタ(フィルタクラス)」とは、各コントローラの実行前に共通して実行したい処理(共通処理)をまとめたクラスのことです。
コントローラを実行する前に、以下のような共通処理を実行したい場合があります。
❑ アクセス中のユーザのログイン情報がセッション中に存在するか確認する(ログインチェック)
❑ ログイン中のユーザの権限で対象のコントローラにアクセス可能か確認する(権限チェック)
このような処理を各コントローラ内に記述すると、冗長的なコードが増えてしまい、改修時の修正箇所が多くなるなどのデメリットがあります。そのため、このような処理はフィルタとして作成することが一
般的です。
package jp.co.sss.shop.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import org.springframework.stereotype.Component;
@Component
public class Message01Filter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
System. out .println("Done Message01Filter");
chain.doFilter(request, response);
}
}
##@Component アノテーション
フィルタを Spring の DI コンテナに登録するために、クラスブロックに@Component アノテーションを
付与します。
##Filter インターフェース
クラスをフィルタとして機能させるためには、Filter インターフェースを実装(implements)する必要
があります。
##Filter#doFilter()メソッド
doFilter()メソッドは、Filter インターフェースからオーバーライドしたメソッドです。このメソッドは
フィルタが呼ばれた際に実行されます。
doFilter()メソッドの引数を下表に記載します。
###doFilter()メソッドの引数
型 | 役割 |
---|---|
ServletRequest | リクエスト情報を管理する。 |
ServletResponse | レスポンス情報を管理する。 |
FilterChain | 他のフィルタを探して実行する。 |
##ServletException クラス
ServletException クラスは、Spring のベースとなる技術 Servlet に関するエラーをあらわす例外クラスです。
IOException クラスと一緒に Filter#doFilter()メソッドから送出するように定義されているため、
これらの例外クラスに対して、送出、または例外処理を行うように記述する必要があります。
##FilterChain#doFilter()メソッド
フィルタ中の doFilter()メソッド内では、引数 chain から同名のメソッドが呼び出されています。
このdoFilter()メソッドは FilterChain インターフェースで定義されているものであり、Filter#doFilter()メソッドとは別機能です。
このメソッドは他に実行可能なフィルタが存在するかを探索します。
そして、存在する場合は、対象のフィルタ中の doFilter()メソッドが呼び出されて実行されます。
また、他に実行可能なフィルタが存在しない場合は、元々リクエスト対象だったプログラムの処理が実行されます。
FilterChain#doFilter()メソッドにより、複数のフィルタの実行、およびリクエスト対象のプログラムの実行ができる。