什么是web資源:web資源就是指request,response,session,servlet的api
為什么需要訪問web資源:因為圖片上傳,需要獲取圖片的目錄,就需要通過action來訪問web資源,向作用域讀寫數據。。。。。。等等
怎么訪問web資源:
和servlet解耦的方式訪問:有限的訪問servlet的 api對象,有限的方法
使用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"; }
