Struts2 通过ActionContext对象获取WEB资源之解耦方式的ActionContext方法

版权声明:博客知识产权来源命运的信徒,切勿侵权 https://blog.csdn.net/qq_37591637/article/details/84935253

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>

猜你喜欢

转载自blog.csdn.net/qq_37591637/article/details/84935253