//ActionContext 方式

package com.hanqi.action;

import java.util.Map;

import com.opensymphony.xwork2.ActionContext;

public class TestAction {

//封装

//解耦

//用ActionContext

public String testWeb()

{

//访问Web资源

System.out.println("经过了Action类");

//单例模式

//Action实例的上下文对象

ActionContext ac=ActionContext.getContext();

		//1.获取application
Map<String,Object>mapApp=ac.getApplication(); System.out.println("app1="+mapApp.get("app1")); //放入新的键值对
mapApp.put("app2","新放入的application"); //2.获取session资源
Map<String,Object>ses=ac.getSession(); System.out.println("ses="+ses.get("ses1")); ses.put("ses2", "新放入的session");
ses.remove("ses1"); Map<String,Object>mapReq=(Map<String,Object>)ac.get("request"); //不能获取之前的request属性
System.out.println("req="+mapReq.get("req1"));
//可以放入新的
mapReq.put("req2", "新放入的request");
//4直接获取传递的参数
Map<String,Object>mapPar=ac.getParameters();
//参数值被封装成String[]
String[]str=(String[])mapPar.get("user");
for(String t:str)
{
System.out.println("user="+t);
}
//放入新的参数,不能被获取到
mapPar.put("pw", new String[]{"123456"});
return "success";
}

}

实现接口方式

package com.hanqi.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 TestActionAware implements ApplicationAware

,SessionAware ,RequestAware,ParameterAware{

private Map<String, Object> mapApp,mapSes,mapReq;

private Map<String, String[]>mapPar;
//实现ApplicationAware接口的方法
//提供给StrutS2进行调用,放入Application的数据集合
@Override
public void setApplication(Map<String, Object> arg0) { //接收
mapApp=arg0; } public String testAware()
{
//1访问application
System.out.println("app1="+mapApp.get("app1")); mapApp.put("app2","以Aware方式放入的Application"); //2.访问session
System.out.println("ses1="+mapSes.get("ses1")); mapSes.put("ses2", "以Aware方式放入的session"); //3. 访问Request
System.out.println("req1="+ mapReq.get("req1")); mapReq.put("req2", "以Aware方式放入的request");
//4.访问Parameter
String[]str=mapPar.get("user");
for(String st:str)
{
System.out.println("user="+st);
}
mapPar.put("pw",new String[]{"123"}); return "success"; } @Override
public void setSession(Map<String, Object> arg0) { mapSes=arg0; } @Override
public void setRequest(Map<String, Object> arg0) {
mapReq=arg0; } @Override
public void setParameters(Map<String, String[]> arg0) {
mapPar=arg0;
}

}

action 耦合方式的更多相关文章

  1. Struts2中的Action类(解耦方式,耦合方式)

    一.解耦方式 特点:对web资源进行了封装,便于单元测试. 实现:ActionContext和接口方式 1.ActionContext 特点:Action执行的上下文对象.保存了执行Action所需要 ...

  2. MVC 在视图中获取当前的Controller、Action的方式

    在视图中获取Controller和Action的方式: Controller: @ViewContext.RouteData.Route.GetRouteData(this.Context).Valu ...

  3. [原创]java WEB学习笔记55:Struts2学习之路---详解struts2 中 Action,如何访问web 资源,解耦方式(使用 ActionContext,实现 XxxAware 接口),耦合方式(通过ServletActionContext,通过实现 ServletRequestAware, ServletContextAware 等接口的方式)

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  4. action解耦方式

    ServletAction方式,必须要有Servlet容器作支持 package com.hanqi.action; import javax.servlet.ServletContext; impo ...

  5. structs2的action实现方式

    Action的实现方式第一种:在web.xml中添加配置<filter> <filter-name>struts2</filter-name> <filter ...

  6. [水煮 ASP.NET Web API2 方法论](3-7)默认 Action 请求方式以及 NonActionAttribute

    问题 在 Controller 中有一个 public 的方法,但是又不想将这个 publlic 方法暴露成为一个 API. 解决方案 ASP.NET Web API 中,正常是通过 HTTP 谓词来 ...

  7. MVC Action控制方式

    1.Controller 的OnActionExecuting中控制 protected override void OnActionExecuting(ActionExecutingContext ...

  8. Struts 2访问Servlet API

    在servlet中可以通过servlet API来获取Session,在Struts中如何获取Session呢? 解析:将用户名放入session 两种方案 1. 与Servlet API解耦的访问方 ...

  9. Struts 2 实现Action的几种方式_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 Action用于处理用户的请求,因此也被称为业务控制器.每个Action类就是一个工作单元,Struts 2框架负责将用 ...

随机推荐

  1. window.open()详解及浏览器兼容性问题

    一.基本语法:window.open(pageURL,name,parameters)其中:pageURL 为子窗口路径name  为子窗口名字parameters 为窗口参数(各参数用逗号分隔) 二 ...

  2. ASP.NET页面之间传递值的几种方式(转载)

    页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...

  3. 【Linux】CentOS 学习笔记之二(命令)

    打开文件夹: cd finename 创建目录:mkdir  /filename mkdir -p /test/123/111        (多级目录) 删除目录: rmdir 删除目录或文件: r ...

  4. WCF全双工数据传输

    项目结构: 客户端: using System; using System.Collections.Generic; using System.Linq; using System.Text; usi ...

  5. dede搜索引擎

    1.dede模板中的html: <form action="{dede:fieldname='phpurl'/}/search.php" name="formsea ...

  6. JavaScript的事件机制

    JavaScript的事件机制 摘要 事件是将JavaScript脚本与网页联系在一起的主要方式,是JavaScript中最重要的主题之一,深入理解事件的工作机制以及它们对性能的影响至关重要.本文将详 ...

  7. [ios2] 关于CGBitmapContextCreate【转】

    CGContextRef CGBitmapContextCreate ( void *data, size_t width, size_t height, size_t bitsPerComponen ...

  8. Scrapy框架安装配置小结

    Windows 平台: 系统是 Win7 Python  2.7.7版本 官网文档:http://doc.scrapy.org/en/latest/intro/install.html 1.安装Pyt ...

  9. 国内的阿里云MAVEN仓库,速度很快

    配置很简单,修改conf文件夹下的settings.xml文件,添加如下镜像配置: <mirrors> <mirror> <id>alimaven</id&g ...

  10. Kali

    http://zydhacker.blog.163.com/blog/static/211795073201447337920/