//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. <c:if>判断两个<c:forEach>里的数据是否相等

    问题:两个<c:forEach>嵌套,里面循环的值和外面的值进行比较(里层里的PARENTID是否等于外层的ID),如果相等就显示. <c:forEach items="$ ...

  2. qt的安装及连接sql使用注意

    qt安装与使用 今天写下qt使用的注意事项,qt-project.org上已经更新了qt5的相关库,但是建议不是很熟系qt的朋友,或者说想使用传统qt api而不是qml的朋友, 继续下载老版本4.8 ...

  3. TCP中ECN的工作原理分析二(摘自:RFC3168)

    英文源:http://www.icir.org/floyd/ecn.html 发送端和接收端处理: The TCP Sender For a TCP connection using ECN, new ...

  4. 本地数据jqGrid分页

    var mydata=''; $(function() { var str = ''; str += "<span>共<span id='p_total'></ ...

  5. 菜单工具栏wxPython菜单与工具栏基础示例

    这两天一直在学习菜单工具栏之类的问题,上午正好有机会和大家讨论一下. 1.基本的api介绍 Package wx :: Class Menu Type Menu Method Summary Menu ...

  6. php 写商城网站的总结吧

    ---恢复内容开始--- 在兄弟连培训,这半个月在做一期项目,期间学到了很多东西,可是还有好多没有学会灵活运用.今天在登录界面加入验证码的时候,form提交不过去input里面的验证码,session ...

  7. Java如何根据IP获取当前定位

    当今购物.旅游等服务型的网站如此流行,我们有时候也会碰到这样网站的开发. 在开发此类网站时,为了增加用户的体验感受,我们不得不在用户刚进入网站时定位到用户所在地, 更好的为用户推荐当地产品.比如去哪儿 ...

  8. XAF-UI元素概述

    XAF框架会根据业务模型自动生成默认的UI.一般来说,您可以使用默认的用户界面,但如果它不符合您的要求,您可以自定义它.要做到这一点,你应该知道UI是由哪些元素组成的,以及你可以自定义什么元素,以实现 ...

  9. DW,DM,ODS的区别

    数据仓库的重要应用是将不同来源的数据和异构数据通过ETL整合在一起,为决策分析提供支撑,若在同一个数据库中分不同用户,此意义不大:假设所有有用户都在一个数据库里,如果因为某个原因数据库重启,那么会影响 ...

  10. jemeter逻辑控制器

    1.ForEach控制器 ForEach控制器在用户自定义变量中读取一系列相关的变量.该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值.所以ForEach总是和User Defin ...