1.完全解耦合的方式 如果使用该种方式,Struts2框架中提供了一个类,ActionContext类,该类中提供一些方法,通过方法获取Servlet的API 一些常用的方法如下
* static ActionContext getContext() -- 获取ActionContext对象实例* java.util.Map getParameters() -- 获取请求参数,相当于request.getParameterMap();* java.util.Map getSession() -- 获取的代表session域的Map集合,就相当于操作session域。* java.util.Map getApplication() -- 获取代表application域的Map集合* void put(java.lang.String key, java.lang.Object value) -- 注意:向request域中存入值。
/** * 完全解耦合的方式,使用Servlet的API * @author Administrator */public class Demo1Action extends ActionSupport{ private static final long serialVersionUID = -7255855724015241518L; public String execute() throws Exception { // 完全接耦合的方式 ActionContext context = ActionContext.getContext(); // 获取到请求的参数,封装所有请求的参数 Map map = context.getParameters(); // 遍历获取数据 Set keys = map.keySet(); for (String key : keys) { // 通过key,来获取到值 String [] vals = (String[]) map.get(key); System.out.println(key+" : "+Arrays.toString(vals)); } // 如果向request对象中存入值 context.put("msg", "小东东"); // 获取其他map集合 context.getSession().put("msg", "小苍"); context.getApplication().put("msg", "小泽"); return SUCCESS; }}
2.使用原生Servlet的API的方式--简单方便 * Struts2框架提供了一个类,ServletActionContext,该类中提供了一些静态的方法 * 具体的方法如下 * getPageContext() * getRequest() * getResponse() * getServletContext()
/** * 原生的API * @author Administrator * */public class Demo2Action extends ActionSupport{ private static final long serialVersionUID = -864657857993072618L; public String execute() throws Exception { // 获取到request对象 HttpServletRequest request = ServletActionContext.getRequest(); request.setAttribute("msg", "小东东"); request.getSession().setAttribute("msg", "美美"); ServletActionContext.getServletContext().setAttribute("msg", "小凤"); HttpServletResponse response = ServletActionContext.getResponse(); // 使用输出流,输出内容 return SUCCESS; }}