「Struts2」ServletActionContextクラスでセッション情報を取得する
説明
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; } }