源码:

strust.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE struts PUBLIC
  3. "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
  4. "http://struts.apache.org/dtds/struts-2.3.dtd">
  5.  
  6. <struts>
  7. <constant name="struts.action.extension" value="action,do," />
  8. <constant name="struts.devMode" value="true" />
  9. <constant name="struts.enable.DynamicMethodInvocation" value="true" />
  10.  
  11. <package name="default" namespace="/" extends="struts-default">
  12. <default-action-ref name="default" />
  13.  
  14. <action name="test1" class="org.Test.action.TestAction1"
  15. method="test">
  16. <result>/success.jsp</result>
  17. </action>
  18.  
  19. <action name="test2" class="org.Test.action.TestAction2"
  20. method="test">
  21. <result>/success.jsp</result>
  22. </action>
  23.  
  24. <action name="default">
  25. <result>/index.jsp</result>
  26. </action>
  27. </package>
  28. </struts>

success.jsp

  1. <span style="font-size:18px;"><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2.  
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  4. <html>
  5. <head>
  6.  
  7. <title>成功</title>
  8.  
  9. <meta http-equiv="pragma" content="no-cache">
  10. <meta http-equiv="cache-control" content="no-cache">
  11. <meta http-equiv="expires" content="0">
  12. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  13. <meta http-equiv="description" content="This is my page">
  14.  
  15. </head>
  16.  
  17. <body>
  18. ${requestScope.name}
  19. ${sessionScope.name}
  20. ${applicationScope.name}
  21. <br>
  22. </body>
  23. </html></span>

方法一:通过ActionContext来訪问

TestAction1.java

  1. package org.Test.action;
  2.  
  3. import java.util.Map;
  4.  
  5. import com.opensymphony.xwork2.ActionContext;
  6. import com.opensymphony.xwork2.ActionSupport;
  7. import com.opensymphony.xwork2.ModelDriven;
  8.  
  9. public class TestAction1 extends ActionSupport {
  10. private Map<String, Object> request;
  11. private Map<String, Object> session;
  12. private Map<String, Object> application;
  13.  
  14. public TestAction1() {
  15. this.request = (Map)ActionContext.getContext().get("request");
  16. this.session = (Map)ActionContext.getContext().getSession();
  17. this.application = (Map)ActionContext.getContext().getApplication();
  18. }
  19.  
  20. public String test() {
  21. System.out.println("TestAction1:test");
  22. this.request.put("name", "张三");
  23. this.session.put("name", "李四");
  24. this.application.put("name", "王五");
  25. return SUCCESS;
  26. }
  27.  
  28. }

执行结果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzUzOTM0Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

说明:

1.TestAction1的

类中:定义Map类型的request,session,application对象

构造方法中:通过ActionContext获取这三个对象

test()方法中:用put方法设置属性

2.success.jsp:通过EL语言查看request,session,application对象的name属性的值

方法二:IOC(控制反转)。通过实现接口RequestAware,SessionAware, ApplicationAware来訪问

TestAction2.java

  1. package org.Test.action;
  2.  
  3. import java.util.Map;
  4.  
  5. import org.apache.struts2.interceptor.ApplicationAware;
  6. import org.apache.struts2.interceptor.RequestAware;
  7. import org.apache.struts2.interceptor.SessionAware;
  8.  
  9. import com.opensymphony.xwork2.ActionSupport;
  10.  
  11. public class TestAction2 extends ActionSupport implements RequestAware,
  12. SessionAware, ApplicationAware {
  13. private Map<String, Object> request;
  14. private Map<String, Object> session;
  15. private Map<String, Object> application;
  16.  
  17. @Override
  18. public void setApplication(Map<String, Object> application) {
  19. this.application = application;
  20. }
  21.  
  22. @Override
  23. public void setSession(Map<String, Object> session) {
  24. this.session = session;
  25. }
  26.  
  27. @Override
  28. public void setRequest(Map<String, Object> request) {
  29. this.request = request;
  30. }
  31.  
  32. public String test() {
  33. System.out.println("TestAction2:test");
  34. this.request.put("name", "小明");
  35. this.session.put("name", "小华");
  36. this.application.put("name", "小王");
  37. return SUCCESS;
  38. }
  39.  
  40. }

执行结果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzUzOTM0Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzUzOTM0Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

说明:

1.把三个set方法传过来的request,session.application值,赋给我们的request,session.application对象。即通过调用set方法来实例化这三个对象,而TestAction2本身并没有对三个对象进行实例化

struts2学习笔记(2)---Action中訪问ServletAPI获取Map类型的Servlet元素的更多相关文章

  1. struts2学习笔记(3)---Action中訪问ServletAPI获取真实类型的Servlet元素

    一.源码: struts.xml文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE s ...

  2. struts2学习笔记之八:Action中方法的动态调用

    方法一:action名称+!+方法名称+后缀 Action类中增加addUser()和delUser()方法, package com.djoker.struts2; import org.apach ...

  3. 在struts2中訪问servletAPI

    在struts2中訪问servletAPI,通俗点也就是使用servlet中的两个对象request对象和response对象. 前几天看到一个CRM项目的源代码,里面使用request对象和resp ...

  4. Struts2学习笔记(六)——Action处理请求参数

    在struts2框架中关于Action处理请求参数有两种方案(三个方式),表单属性的名称应该和在Action类中定义的成员属性或者在JavaBean中定义的成员属性名称一样: 1.属性驱动 1)直接在 ...

  5. Struts2学习笔记(三)——Action详解

    Action是用于处理请求操作的,它是由StrutsPrepareAndExceuteFilter分发过来的. 1.Action的创建方式 1) POJO类(PlainOldJavaObjects简单 ...

  6. Struts2学习笔记(五)——Action访问Servlet API

    在Strut2中访问Servlet API有三种方式: 1.通过ActionContext访问Servlet API,推荐使用这种,但是这种方案它获取的不是真正的事Servlet API. 步骤: 1 ...

  7. Struts2学习笔记⑧

    今天是Struts2学习笔记的最后一篇文章了.用什么做结尾呢,这两天其实还学了很多东西,没有记录下,今天就查漏补缺一下. 文件上传与下载.FreeMarker以及昨天没做完的例子 文件上传与下载 文件 ...

  8. Struts2学习笔记①

    Struts2 学习笔记① 所有的程序学习都从Hello World开始,今天先跟着书做一个HW的示例. Struts2是一套MVC框架,使用起来非常方便,接触到现在觉得最麻烦的地方是配置文件.我的一 ...

  9. Struts2学习笔记NO.1------结合Hibernate完成查询商品类别简单案例(工具IDEA)

    Struts2学习笔记一结合Hibernate完成查询商品类别简单案例(工具IDEA) 1.jar包准备 Hibernate+Struts2 jar包 struts的jar比较多,可以从Struts官 ...

随机推荐

  1. linux自定义开机启动服务

    转 http://www.cnblogs.com/jimeper/archive/2013/03/12/2955687.html 手工创建服务 1.在/etc/rc.d/init.d目录下创建shel ...

  2. onethink 换空间报错 解决方案

    onethink 换空间的时候有两个配置文件 Application\Common\Conf Application\User\Conf 如果报错先测试数据库 <?php $con = mysq ...

  3. shell 1变量注意点

    定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样. 删除变量 使用 un ...

  4. Activity的"singleTask"之谜

    官方文档称 以这种方式启动的Activity总是属于一个任务的根Activity.果真如此吗?本文将为你解开Activity的"singleTask"之谜. 任务(Task)是个什 ...

  5. mac os x 10.9.1 安装 Homebrew软件包管理工具及brew安装maven3.1.1

    Mac OSX上的软件包管理工具,安装软件或者卸载软件. 打开终端输入(如不行,可参考homebrew官网): ruby -e "$(curl -fsSL https://raw.githu ...

  6. Balanced Lineup

      Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 49061   Accepted: 22975 Case Time Lim ...

  7. iOS 实现脉冲雷达以及动态增减元素 By Swift-感谢分享

    Swift经过Xcode6 Beta4一版更新后,基本上已经可以作为生产工具了,虽然有一些地方和ObjC比起来要“落后”一些,但也无伤大雅.这里就用Xcode6 Beta4+iOS SDK 8.0开发 ...

  8. jquery插件,美化select标签

    最近经常与select打交道,因为ie下的select实在太丑了,css怎么搞都搞不好看,因为程序已经写得差不多了,要再去模拟select改动太大,就想着能否不改动select,同时美化它.借鉴一下这 ...

  9. redis问题解决

    一, redis的奇葩问题:我使用命令 redis-cli shutdown 关闭redis之后就再也灭洋启动了! 尝试1: 使用命令 sudo /etc/init.d/redis-server st ...

  10. 深入了解一下PYTHON中关于SOCKETSERVER的模块-A

    有了这块知识,应该对各类WEB框架有更好的理解吧..FLASK,DJANGO,WEBPY.... #!/usr/bin/env python from BaseHTTPServer import HT ...