//解耦,封装了web资源——1.使用ActionContext
public String testweb()
{
//访问web资源
System.out.println("OK");
//单例模式,action实例的上下文对象
ActionContext ac=ActionContext.getContext();
//1获取application资源
Map<String, Object> mp=ac.getApplication();
System.out.println("app1="+mp.get("app1"));
//放入新的键值对
mp.put("app2", "2app");
//2获取Session资源
Map<String, Object> ms= ac.getSession();
System.out.println("ses1="+ms.get("ses1"));
ms.put("ses2", "2ses");
//3获取request资源
Map<String, Object> mq=(Map<String, Object>)ac.get("request");
System.out.println("req1"+mq.get("req1")); //取不到之前的值,只可以赋新值
mp.put("req3", "3req");
mq.put("req2", "2req");
//4直接获取传递的参数Parameters
Map<String, Object> mu=ac.getParameters();
//返回结果为数组类型
System.out.println("user="+mu.get("user"));
//强制转型
String[]str=(String[])mu.get("user");
//遍历
for(String a:str)
{
System.out.println(a);
}
//放入新参数不能被获取到
mu.put("pw", new String[]{"1233"});//这么写是错误的
return "success";
}
package 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 TestAware implements ApplicationAware,SessionAware,RequestAware,ParameterAware {
private Map<String, Object> mp;
private Map<String, Object> ms;
private Map<String, Object> mq;
private Map<String, String[]> mm;
//实现ApplicationAware接口的方法
//提供给Struts2,放入application的数据集合,进行调用
@Override
public void setApplication(Map<String, Object> arg0) {
// TODO 自动生成的方法存根
//接收
mp=arg0;
}
@Override
public void setSession(Map<String, Object> arg0) {
// TODO 自动生成的方法存根
ms=arg0;
}
@Override
public void setRequest(Map<String, Object> arg0) {
// TODO 自动生成的方法存根
mq=arg0;
}
@Override
public void setParameters(Map<String, String[]> arg0) {
// TODO 自动生成的方法存根
mm=arg0;
}
public String testAware()
{
//1访问application
System.out.println("app1="+mp.get("app1"));
mp.put("app2", "2222app");
//2访问session
System.out.println("ses1="+ms.get("ses1"));
ms.put("ses2", "2222ses2");
//3访问request
System.out.println("req1="+mq.get("req1"));//之前设置的在这访问不到
mq.put("req2", "2222req2");
//4访问Parameter
String[] str=mm.get("user");
for(String a:str)
System.out.println("suer="+a);
mm.put("pw", new String[]{"122"});//在这设置获取不到
return "success";
}
}
package com.action;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
public class TestServlet {
public String testServlet()
{
//访问原生的web资源
//1.得到ServletContext,相当于application
ServletContext sc= ServletActionContext.getServletContext();
System.out.println("app1="+sc.getAttribute("app1"));
sc.setAttribute("app2", "你妹啊app2");
//2.访问Session
HttpServletRequest hsr=ServletActionContext.getRequest();//先得到request
HttpSession hs=hsr.getSession();//得到Session
System.out.println("ses1"+hs.getAttribute("ses1"));
hsr.setAttribute("ses2", "原生2ses2");
//3.访问request
System.out.println("req1"+hsr.getAttribute("req1"));
hsr.setAttribute("req2", "原生req2");
//4.访问parameter
System.out.println(hsr.getParameter("user"));
System.out.println(hsr.getParameter("user"));
return"success";
}
}
package com.action;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.util.ServletContextAware;
public class TestServletAware implements ServletRequestAware, ServletContextAware {
private ServletContext sc;
private HttpServletRequest hsr;
private HttpSession hs;
@Override
public void setServletContext(ServletContext arg0) {
// TODO 自动生成的方法存根
sc=arg0;
}
@Override
public void setServletRequest(HttpServletRequest arg0) {
// TODO 自动生成的方法存根
hsr=arg0;
hs=arg0.getSession();
}
public String testsa()
{
System.out.println("app1="+sc.getAttribute("app1"));
sc.setAttribute("app2", "原生的app2");
hsr.setAttribute("req2", "132req2");
System.out.println("ses1="+hs.getAttribute("ses1"));
hs.setAttribute("ses2", "123ses2");
System.out.println("user="+hsr.getParameter("user"));
return"success";
}
}