1. 程式人生 > >Struts2 通過ActionContext物件獲取WEB資源之解耦方式的ActionContext方法

Struts2 通過ActionContext物件獲取WEB資源之解耦方式的ActionContext方法

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>