リクエストに属性を追するには、「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