Struts2 学习系列 (2) 访问web资源
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
在 Action 中, 可以通過(guò)以下方式訪問(wèn) web 的 HttpSession, HttpServletRequest, HttpServletResponse 等資源
I. 和 Servlet API 解耦的方式: 只能訪問(wèn)有限的 Servlet API 對(duì)象, 且只能訪問(wèn)其有限的方法(讀取請(qǐng)求參數(shù), 讀寫域?qū)ο蟮膶傩? 使 session 失效...).
> 使用 ActionContext
ActionContext actionContext = ActionContext.getContext();Map<String, Object> sessionMap = actionContext.getSession();Map<String, Object> applicationMap = actionContext.getApplication();Map<String, Object> requestMap = (Map<String, Object>) actionContext.get("request");requestMap.put("requestKey", "requestValue");Map<String, Object> parameters = actionContext.getParameters();System.out.println(((String[])parameters.get("name"))[0]);parameters.put("age", 100);
> 實(shí)現(xiàn) XxxAware 接口 import java.util.Map;import org.apache.struts2.interceptor.ApplicationAware; import org.apache.struts2.interceptor.ParameterAware; import org.apache.struts2.interceptor.RequestAware; import org.apache.struts2.interceptor.SessionAware;public class TestAwareAction implements ApplicationAware, SessionAware, RequestAware,ParameterAware{private Map<String, Object> application;@Overridepublic void setApplication(Map<String, Object> application) {this.application = application;}@Overridepublic void setParameters(Map<String, String[]> parameters) {}@Overridepublic void setRequest(Map<String, Object> request) {// TODO Auto-generated method stub}@Overridepublic void setSession(Map<String, Object> session) {// TODO Auto-generated method stub}public String execute(){//1. 向 application 中加入一個(gè)屬性: applicationKey2 - applicationValue2application.put("applicationKey2", "applicationValue2");//2. 從 application 中讀取一個(gè)屬性 date, 并打印. System.out.println(application.get("date"));return "success";}}
> 選用的建議: 若一個(gè) Action 類中有多個(gè) action 方法, 且多個(gè)方法都需要使用域?qū)ο蟮?Map 或 parameters, 則建議使用
Aware 接口的方式
> session 對(duì)應(yīng)的 Map 實(shí)際上是 SessionMap 類型的! 強(qiáng)轉(zhuǎn)后若調(diào)用其 invalidate() 方法, 可以使其 session 失效!
II. 和 Servlet API 耦合的方式: 可以訪問(wèn)更多的 Servlet API 對(duì)象, 且可以調(diào)用其原生的方法.
> 使用 ServletActionContext直接訪問(wèn) Servlet API 將使 Action 與 Servlet 環(huán)境耦合在一起, ?測(cè)試時(shí)需要有 Servlet 容器, 不便于對(duì) Action 的單元測(cè)試.?
> 實(shí)現(xiàn) ServletXxxAware 接口.
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
轉(zhuǎn)載于:https://my.oschina.net/gaoguofan/blog/753203
總結(jié)
以上是生活随笔為你收集整理的Struts2 学习系列 (2) 访问web资源的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 滑动listview隐藏和显示顶部布局
- 下一篇: iOS数组越界