web-dev-qa-db-ja.com

ServletRequestのセッション変数

フィルタを介してセッション変数にアクセスする必要があります。それが可能かどうかさえわかりません。実際には、問題はdoFilterメソッドタイプがjavax.Servlet.Filter実装はServletRequestですが、HttpServletはクラスを継承しますが、doPostメソッドパラメーターrequestはHttpServletRequestです。

  1. フィルタのServletRequestのセッションにアクセスできますか?
  2. 私はそれをすべきですか?
  3. 何をすすめますか?

ありがとう!

13
Alex

得られた ServletRequestHttpServletRequest にキャストするだけです。

@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) req;
    HttpSession session = request.getSession(false);
    // ...
}

参照:

26
BalusC

できますよ。 ServletRequestを使用すると、属性を含むセッションにアクセスできます。フィルタ、サーブレット、jsp、セッションリスナーのいずれかで、いつでも属性を確認、追加、削除、および変更できます。この手法は非常に便利であり、特に同じセッション内の異なるコンポーネント間の通信に使用されます。

0
AlexR