Struts2 通過ActionContext物件獲取WEB資源之解耦方式的ActionContext方法
阿新 • • 發佈:2018-12-11
1.首先明白什麼是WEB資源?
就是httpservletrequest、httpsession等servlet API的原生資源
2.怎麼操控
2.1 和servlet API解耦的方式(訪問有限,只能訪問關鍵的)
XxxAware介面、ActionContext
2.2、和servlet API耦合的方式(可以訪問原生的)
ServletXxxAware介面、ServletActionContext
我們開始第一講 和sercvlet API解耦方式之ActionContext方式
package cn.com.action; import java.util.Map; import com.opensymphony.xwork2.ActionContext; public class TestActionContext { /* * ActionContext:是Action類的上下文物件 我們這個類就是Action; * ActionContext主要的操作物件有Application session request parameters */ public String execute() { // 0.首先獲取上下文物件 ActionContext actioncontext = ActionContext.getContext(); // 1.Aplication Map<String, Object> applicationmap = actioncontext.getApplication(); // 對物件可讀可寫 // 1.1 application寫入物件 applicationmap.put("applicationkey", 12); // 1.2 application讀取物件 前提是前臺的jsp頁面裡面有這個屬性 /* * 例如我在index.jsp頁面上給了aplication一個屬性,程式碼如下 * <%application.setAttribute("tian", "2018-10-22");%> */ String a = (String) applicationmap.get("tian"); System.out.println("a:" + a); // 2.Session Map<String, Object> sessionmap = actioncontext.getSession(); // 2.1往session裡面寫入物件 // 注意:key不能是session-key不能有"-"符號存在,電腦會識別不了 sessionmap.put("sessionkey", "session-value"); // 2.2取前臺頁面的session的屬性 /* * <%session.setAttribute("jiang", "happy_you"); %> */ String session = (String) sessionmap.get("jiang"); System.out.println("session:" + session); // 3.Request // request物件本身就就是一個鍵值對 Map<String, Object> requestmap = (Map<String, Object>) actioncontext.get("request"); requestmap.put("requestkey", "requestvalue"); /*這裡有一個很大的疑問,就是怎麼獲取前臺頁面request的實現 <% request.setAttribute("nan", "wanzyecun"); %> 但是在這裡書寫獲取的程式碼不對requestmap.get("nan")獲取的是null */ // 4.Parameters //只能讀不可以取值 Map<String,Object> parametermap=actioncontext.getParameters(); //注意這個獲取的是一個數組;正如一個屬性名為name的可以有多個,不是唯一性的 String[] tjn=(String[]) parametermap.get("tjn"); String t=tjn[0]; System.out.println("tjn:"+t); return "success"; } }
index.jsp頁面、
<body>
<%application.setAttribute("tian", "2018-10-22");%>
<%session.setAttribute("jiang", "happy_you"); %>
<% request.setAttribute("nan", "wanzyecun"); %>
<a href="context.action?tjn=atsgj">hello world</a>
</body>
success.jsp
<body> Application:${applicationScope.applicationkey}<br><br> Sessionset:${sessionScope.sessionkey}<br><br> Sessionget:${sessionScope.jiang }<br><br> requetset:${requestScope.requestkey }<br><br> <%-- requestget:${requestScope.nan }<br><br> --%> parameters:${parameters.tjn[0] }<br><br> </body>
struts.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="tjn" extends="struts-default"> <action name="url" class="cn.com.action.Info" method="save"> <result name="success">/WEB-INF/pages/success.jsp</result> </action> <action name="context" class="cn.com.action.TestActionContext"> <result>/context.jsp</result> </action> </package> </struts>