HttpServletRequestでリクエストに属性追加

リクエストに属性を追するには、「HttpServletRequest」インターフェースの親である「ServletRequest」インターフェースで定義されているsetAttributeメソッドを使います。
そして追加した属性をリクエストから取り出すにはgetAttributeメソッドを用います。

以下は例です。

public int getData(){
    int  number = 10;
    HttpServletRequest request = HttpServletRequestLocator.get();
    int data = (int) request.getAttribute("data");
    if(data != null){
        return data;
    }

    if(request != null){
        request.setAttribute("data",  number);
        return number;
    }
}

これを使うことの有用性としては、一度セットした値は複数回使える為、同じ処理を繰り返しする必要がなくなることです。
今回の例では、あまり必要性が感じられませんが、例えばデータベースからデータを取得するなどを複数回行う可能性がある場合に、
一度リクエストの中に属性と一緒に第二引数をLinkedHashMapクラスなどにしてsetAttributeしてしまえば、
2回目からはデータベースにアクセスすることなくgetAttribute(attributeName).containsKey(keyName)でLinkedHashMapからデータを取得出来るようになります。
スロークエリなどが発行される場合に用いると良さそうです。
ただ、必要なくなったら、値をリフレッシュするなどしないと、何が属性に紐付けられてるのかわからなくなるので、適宜nullなどを代入して、リフレッシュする必要があります。


【参考文献]
・https://www.javadrive.jp/servlet/dispatch/index3.html