//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. ul和li实现分两列(多列)布局显示

    简单语句实现DIV+CSS分两列(多列)布局显示 <style type="text/css"> .my ul { width: 210px; } .my li { w ...

  2. java调用Oracle存储存储过程

    数据库表和增删改的procedure参照(http://www.cnblogs.com/J-wym/p/3292913.html) 1.测试添加数据的procedure public void tes ...

  3. 《Head First Python》学习笔记03 异常处理

    异常(运行时错误): 当代码逻辑遇到意外事件时,比如打开一个文件,却发现文件不存在.这时是增加额外的代码处理逻辑,还是捕获异常呢?答案是:Python优先推荐捕获异常,然后恢复. Python异常机制 ...

  4. centos 6.4 x64安装bugfree

    第一步:下载xampp-linux-1.8.1.tar.gz [root@SVNMANAGER ~]# tar -zxvf xampp-linux-1.8.1.tar.gz -C /opt [root ...

  5. CSS3样式linear-gradient的使用

    linear-gradient linear-gradient是CSS3中新增的样式,主要用于颜色的渐变效果.MDN地址 linear-gradient在不同内核下使用方式不同,详细内容可参考w3cp ...

  6. Mvc分页组件MvcSimplePager代码重构

    1 Mvc分页组件MvcSimplePager代码重构 1.1 Intro 1.2 MvcSimplePager 代码优化 1.3 MvcSimplePager 使用 1.4 End Mvc分页组件M ...

  7. 项目在JDK1.8环境下的一个Bug

    今天发现一个已有的项目在JDK1.8环境下运行时,会报错: The type java.util.Map$Entry cannot be resolved. It is indirectly refr ...

  8. Flexible 弹性盒子模型之CSS flex-wrap 属性

    实例 让弹性盒元素在必要的时候拆行: display:flex; flex-wrap: wrap; 复制 效果预览 浏览器支持 表格中的数字表示支持该属性的第一个浏览器的版本号. 紧跟在 -webki ...

  9. 【CSS学习笔记】CSS初始化

    腾讯QQ官网(http://www.qq.com)样式初始化 body,ol,ul,h1,h2,h3,h4,h5,h6,p,th,td,dl,dd,form,fieldset,legend,input ...

  10. [HMLY]13.请谨慎使用 @weakify 和 @strongify

    前言 相信大部分见过 @weakify 和 @strongify 的开发者都会喜欢上这两个宏.但是很多人只知道它的强大威力,却没有意识到在特定环境下的危险性. 本文将通过代码测试的方式告诉读者,如何正 ...