struts2框架中的IoC

ptjs 12年前發布 | 2K 次閱讀 TeXpen Apache Cayenne

學習三大框架,對spring中的IoC和DI并不陌生,但是對struts2中的IoC你又知道多少呢!

現將學習過程的一點小結拿來與大家分享!

在struts2的Action中如何取得request ,session,application呢!

(一)取得Map類型的request,session,application

    實現RequestAware,SessionAware,Application接口,通過IoC取得Map類型。示例如下:

package com.bjsxt.action;

import java.util.Map;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.struts2.interceptor.ApplicationAware;
import org.apache.struts2.interceptor.RequestAware;
import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction1 extends ActionSupport implements RequestAware,
        SessionAware, ApplicationAware {
    // 聲明username屬性
    private String username;
    // 聲明request屬性
    private Map<String, Object> request;
    // 聲明session屬性
    private Map<String, Object> session;
    // 聲明 application屬性
    private Map<String, Object> application;

    // 重寫execute方法,這里并沒有使用ServletActionContext.getRequest()來獲得request對象,這是因為實現了ServletRequestAware
    public String execute() throws Exception {
        request.put("req", "i am request arrt!!");
        session.put("session", "i am session attr");
        application.put("application", "i am application");
        return SUCCESS;
    }

    // Username的get方法
    public String getUsername() {
        return username;
    }

    // Username的set方法
    public void setUsername(String username) {
        this.username = username;
    }

    // 重寫 RequestAware中的方法
    @Override
    public void setRequest(Map<String, Object> request) {
        // TODO Auto-generated method stub
        this.request = request;

    }

    // 重寫 SessionAware中的方法
    @Override
    public void setSession(Map<String, Object> session) {
        // TODO Auto-generated method stub
        this.session = session;

    }

    // 重寫 ApplicationAware中的方法
    @Override
    public void setApplication(Map<String, Object> application) {
        // TODO Auto-generated method stub
        this.application = application;
    }

}

   

(二)取得真實類型的HttpServletRequest,HttpSession,ServletContext

    實現ServletRequestAware,ServletContextAware接口,通過IoC取得真實類型。示例如下:

package com.bjsxt.action;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.util.ServletContextAware;
import com.opensymphony.xwork2.ActionSupport;
public class LoginAction1 extends ActionSupport implements ServletRequestAware,ServletContextAware {
    //聲明username屬性
    private String username;
    //聲明request屬性
    HttpServletRequest request;
    //聲明session屬性
    HttpSession session;
    //聲明 application屬性
    ServletContext application;

    // 重寫execute方法,這里并沒有使用ServletActionContext.getRequest()來獲得request對象,這是因為實現了ServletRequestAware
    public String execute() throws Exception {
        request.setAttribute("req", "i am request arrt!!");
        request.getSession().setAttribute("session", "i am session attr");
        application.setAttribute("application", "i am application");
        return SUCCESS;
    }
    //Username的get方法
    public String getUsername() {
        return username;
    }
    //Username的set方法
    public void setUsername(String username) {
        this.username = username;
    }
    //重寫ServletContext中的方法
    @Override
    public void setServletContext(ServletContext application) {
        // TODO Auto-generated method stub
        this.application = application;
    }
    //重寫ServletRequest中的方法
    @Override
    public void setServletRequest(HttpServletRequest request) {
        // TODO Auto-generated method stub
        this.request = request;
    }

}

 本文由用戶 ptjs 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!