2.struts2訪問web資源(在struts2中獲取session,request等等)


什么是web資源:web資源就是指requestresponsesessionservletapi

為什么需要訪問web資源:因為圖片上傳,需要獲取圖片的目錄,就需要通過action來訪問web資源,向作用域讀寫數據。。。。。。等等

怎么訪問web資源:

  servlet解耦的方式訪問:有限的訪問servletapi對象,有限的方法

    使用ActionContext去訪問

    實現XXXAware這個接口

  servlet耦合的方式訪問:可以訪問更多(全部)的servlet的API

 

    使用ServletActionContext去訪問

    實現ServletXXXAware這個接口

    

  1.解耦合和方式使用ActionContext獲取web資源 

/**
     * 獲取Application作用域
     * @return
     */
    public String execute(){
        //獲取Action的上下文,就是action的一些運行信息,環境等等
        ActionContext actionContext=ActionContext.getContext();
        //得到封裝過的application
        Map<String, Object> application=actionContext.getApplication();
        //把數據放到application的作用域
        application.put("name", "小白");
        return "success";
    }
    /**
     * 獲取session作用域
     * @return
     */
    public String execute2(){
        //獲取Action的上下文,就是action的一些運行信息,環境等等
        ActionContext actionContext=ActionContext.getContext();
        //得到封裝過的session
        Map<String, Object> session=actionContext.getSession();
        //把數據放到session的作用域
        session.put("name2", "小白2");
        return "success";
    }
    /**
     * 獲取Request作用域
     * @return
     */
    public String execute3(){
        //獲取Action的上下文,就是action的一些運行信息,環境等等
        ActionContext actionContext=ActionContext.getContext();
        //得到封裝過的request
        Map<String, Object> request=(Map<String, Object>) actionContext.get("request");
        //把數據放到request的作用域
        request.put("name3", "小白3");
        return "success";
    }

    /**
     * 獲取請求參數(不推薦使用,Struts會封裝)
     * @return
     */
    public String params(){
        //獲取Action的上下文,就是action的一些運行信息,環境等等
        ActionContext actionContext=ActionContext.getContext();
        //獲取請求參數,得到參數的對象
        Map<String, Object> params= actionContext.getParameters();
        String name=((String[])params.get("name"))[0];
        String sex=((String[])params.get("sex"))[0];
        System.out.println(name+":"+sex);
        return "success";
    }
    

  2.解耦合和方式使用XXXAware獲取web資源

/**
 * 只要實現對應的ApplicationAware接口,或者SessionAware等就可以
 * @author Administrator
 *
 */
public class ApplicationDemo implements ApplicationAware{
    Map<String, Object> application;
    
    public String execute(){
        application.put("xx","xx");
        return "success";    
    }
    public void setApplication(Map<String, Object> application) {
        this.application=application;    
    }
}

  3.耦合和方式使用ActionContext獲取web資源(其他的使用方式類似)

    public String execute(){
        //通過ServletActionContext可以獲取需要的Servlet api相關的對象
        HttpServletRequest request=ServletActionContext.getRequest();
        String name =request.getParameter("name");
        request.setAttribute("name", "小白");
        HttpSession session= ServletActionContext.getRequest().getSession();
        session.setAttribute("name2", "小白2");
        return "success";
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM