版权声明:博客知识产权来源命运的信徒,切勿侵权 https://blog.csdn.net/qq_37591637/article/details/84938282
这个方法相比较ActionContext而言,如果一个Action类中的多个方法都涉及到了取值设置值得情况,最好用XxxAware接口方法
下面是一个例子
package cn.com.action;
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 AwareAction implements ApplicationAware, SessionAware,
RequestAware, ParameterAware {
/*
* author:命运的信徒 date:2018/12/10
* arm:掌握Action获取web资源的解耦方式之Aware接口的方式ApplicationAware
* ,SessionAware,RequestAware,ParameterAware
*/
/*
* 1.第一步,继承相应的接口如 2.添加接口的方法(自动添加) 3.赋值 4.执行方法获取值
*/
private Map<String, String[]> parameters;
private Map<String, Object> requests;
private Map<String, Object> applications;
private Map<String, Object> sessions;
public void setParameters(Map<String, String[]> parameters) {
// TODO Auto-generated method stub
this.parameters = parameters;
}
@Override
public void setRequest(Map<String, Object> requests) {
// TODO Auto-generated method stub
this.requests = requests;
}
@Override
public void setSession(Map<String, Object> sessions) {
// TODO Auto-generated method stub
this.sessions = sessions;
}
@Override
public void setApplication(Map<String, Object> applications) {
// TODO Auto-generated method stub
this.applications = applications;
}
public String execute(){
applications.put("applicationkey", "applicationvalue");
sessions.put("sessionkey", "sessionvalue");
requests.put("requestkey", "requestvalue");
//parameters不可以放值只可以取值
String[] str=parameters.get("tt");
System.out.println(str[0]);
return "success";
}
}
index.jsp页面就是一个链接请求
<a href="aware.action?tt=yecunwanzhai">aware接口</a>
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>
<action name="aware" class="cn.com.action.AwareAction" >
<result>/context.jsp</result>
</action>
</package>
</struts>
显示参数的页面
<h4>Aware Test</h4>
application:${applicationScope.applicationkey }<br><br>
session:${sessionScope.sessionkey }<br><br>
request:${requestScope.requestkey }<br><br>
parameter:${parameters.tt[0] }<br><br>