日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

struts2访问session的两种方法

發布時間:2025/6/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 struts2访问session的两种方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Struts2 的Action中若希望訪問Session對象,可采用兩種方式:

??? 1、從ActionContext中獲取;

??? 2、實現SessionAware接口。

??? 1、從ActionContext中獲取:

??? import java.util.Map;

??? import com.opensymphony.xwork2.ActionContext;

??? import com.opensymphony.xwork2.ActionSupport;

??? public class SessionTestAction extends ActionSupport {

??? public String execute() {

??? ActionContext actionContext = ActionContext.getContext();

??? Map session = actionContext.getSession();

??? session.put("USER_NAME", "Test User");

??? return SUCCESS;

??? }

??? }

??? import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class SessionTestAction extends ActionSupport { public String execute() { ActionContext actionContext = ActionContext.getContext(); Map session = actionContext.getSession(); session.put("USER_NAME", "Test User"); return SUCCESS; } }

??? 2、實現SessionAware接口:

??? [java] view plaincopyprint?

??? import java.util.Map;

??? import org.apache.struts2.interceptor.SessionAware;

??? import com.opensymphony.xwork2.ActionSupport;

??? public class SessionTest1Action extends ActionSupport implements SessionAware {

??? private Map session;

??? public void setSession(Map session) {

??? this.session = session;

??? }

??? public String execute() {

??? this.session.put("USER_NAME", "Test User 1");

??? return SUCCESS;

??? }

??? }

??? import java.util.Map; import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionSupport; public class SessionTest1Action extends ActionSupport implements SessionAware { private Map session; public void setSession(Map session) { this.session = session; } public String execute() { this.session.put("USER_NAME", "Test User 1"); return SUCCESS; } }

??? 進一步閱讀Struts2.1.8.1源碼,SessionAware接口的實現方式如下:

??? struts-default.xml配置:

??? <interceptors>

??? …

??? <interceptor name="servletConfig" class="org.apache.struts2.interceptor.ServletConfigInterceptor"/>

??? …

??? </interceptors>

??? <interceptor-stack name="defaultStack">

??? …

??? <interceptor-ref name="servletConfig"/>

??? …

??? </interceptor-stack>

??? <interceptors> … <interceptor name="servletConfig" class="org.apache.struts2.interceptor.ServletConfigInterceptor"/> … </interceptors> <interceptor-stack name="defaultStack"> … <interceptor-ref name="servletConfig"/> … </interceptor-stack>

??? 打開ServletConfigInterceptor.java源碼:

??? public String intercept(ActionInvocation invocation) throws Exception {

??? final Object action = invocation.getAction();

??? final ActionContext context = invocation.getInvocationContext();

??? …

??? if (action instanceof SessionAware) {

??? ((SessionAware) action)。setSession(context.getSession());

??? }

??? …

??? return invocation.invoke();

??? }

??? public String intercept(ActionInvocation invocation) throws Exception { final Object action = invocation.getAction(); final ActionContext context = invocation.getInvocationContext(); … if (action instanceof SessionAware) { ((SessionAware) action)。setSession(context.getSession()); } … return invocation.invoke(); }

??? 即在攔截器處理過程中發現目標Action實現了SessionAware接口,便會調用Action中已經實現的setSession(…) 方法,將ActionContext中包裝的Session注入目標Action中。目標Action也就可以進一步對Session進行操作了。

總結

以上是生活随笔為你收集整理的struts2访问session的两种方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。