「Struts2」ServletActionContextクラスでセッション情報を取得する

2020年10月15日

説明
1. HttpServletRequest、HttpSessionの取得
ServletActionContext.getContext().getSession();
2.public static String format(String format,Object… args)
指定された書式の文字列と引数を使って、書式付き文字列を返します。
3.Set<Map.Entry<K,V>> entrySet()
このマップに含まれるマッピングの Set ビューを返します。
セットはマップと連動しているので、マップに対する変更はセットに反映され、
また、セットに対する変更はマップに反映されます。
サンプルコード

package com.arkgame.study;

import java.util.Map;
import java.util.Map.Entry;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class SessionInterceptor extends AbstractInterceptor {

      private static final long serialVersionUID = 1L;
      private static final Log log = LogFactory.getLog(SessionInterceptor.class);

      @Override
      public String intercept(ActionInvocation invocation) throws Exception {

            Map<String, Object> mp = ServletActionContext.getContext().getSession();
            log.debug("session begin");
            for (Entry<String, Object> ent : mp.entrySet()) {
                  log.debug("before invoke:" + String.format(ent.getKey(), ent.getValue()));
            }
            String result = invocation.invoke();
            for (Entry<String, Object> ent : mp.entrySet()) {
                  log.debug("after invoke:" + String.format(ent.getKey(), ent.getValue()));
            }
            log.debug("session end");
            return result;
      }

}

 

Java

Posted by arkgame