在Struts2.0中,Action已经与Servlet API完全分离,这使得Struts2.0的Action具有了更加灵活和低耦合的特性,与Struts1.0相比较而言是个巨大的进步。虽然Struts2.0的Action已经与Servlet API完全分离,但我们在实现业务逻辑处理时经常需要访问Servlet中的对象,如Session、Application等。Struts2.0 提供了一个名字为ActionContext的类,在Action中可以通过该类获得Servlet API。

ActionContext是一个Action的上下文对象,Action运行期间所用到的数据都保存在ActionContext中(如Session,客户端提交的参数等信息)。

在Action中可以通过下面的代码来创建和使用ActionContext类,关于该类的方法介绍如下所示:

ActionContext ac=ActionContext.getContext();

以下是ActionContext类的常用方法

1.Object get(Object key) :通过参数key来查找当前ActionContext中的值

2.Map getApplication() :返回一个Application级的Map对象

3.Static ActionContext getContext() :获得当前线程的ActionContext对象

4.Map getParameters() :返回一个包含所有HttpServletRequest参数信息的Map对象

5.Map getSession() :返回一个Map类型的HttpSession对象

6.Void put(Object key,Object value) :向当前ActionContext对象中存入名值对信息

7.Void setApplication(Map application) :设置Application上下文

8.Void setSession(Map session) :设置一个Map类型的Session值

下面通过一个实例来演示Struts2.0中Action是如何通过ActionContext来访问Servlet API。本实例模仿了登录业务,分别把进行登录的用户名称保存在Application和Session中,然后在JSP页面中读取信息。

首先实现Action,新建一个名字为LoginAction.java的文件,代码如下所示:package com;

import java.util.Map;

import com.opensymphony.xwork2.ActionSupport;

import com.opensymphony.xwork2.ActionContext;

public class loginAction extends ActionSupport {

private String name;

private String pwd;

public String getName(){

return name;

}

public void setName(String name){

this.name=name;

}

public String getPwd(){

return pwd;

}

public void setPwd(String pwd){

this.pwd=pwd;

}

public String checkLogin(){

ActionContext ac=ActionContext.getContext();//获得ActionContext

Map app=ac.getApplication();

ac.getSession().put("login",this.name);//把登录名称放入session中

ac.getApplication().put("login",this.name);//把登录名称放入application中 return SUCCESS;

}

}

loginAction比较简单,只有name和pwd两个属性,这里我们没有实现登录验证,只是简单地把登录名称存放到了session和application中。

下面在struts.xml 文件中对loginAction属性进行配置,代码如下所示:

/p>

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

/index.jsp

下面我们看登录页面login.jsp,代码如下所示:

用户登录

下面介绍显示登录信息的页面,新建一个名字为index.jsp的文件,代码如下所示:

读取session中的信息:欢迎!

读取application中的信息:欢迎!

该页面使用OGNL把存储在session和application中的信息读取了出来

读取session中的信息:欢迎!
读取application中的信息:欢迎!

java actioncontext_Action访问ActionContext | 学步园相关推荐

  1. java jce 安装_BouncyCastle JCE 的安装配置及在java中的使用 | 学步园

    安装BouncyCastle JCE应该按照如下步骤: 1)下载提供者 BouncyCastle可以从www.bouncycastle.org下载,下载后请将它解压缩. 2)将JAR文件拷贝到适当位置 ...

  2. php使用jasperreport,用PHP访问JasperReport | 学步园

    参考文档 把里面的.war文件,拷贝到Tomcat的webapps目录下,如果不用tomcat,可以用java来启动它 重启tomcat后,可以用 看看是否正常运行.端口号可以查看tomcat的日志, ...

  3. java longlong_java Long long | 学步园

    在Java中执行如下的代码: long number = 26012402244; 编译的时候会出现一个错误,提示"过大的整数: 32322355744",如果在Eclipse中书 ...

  4. lotus notes java_Lotus Notes邮件开发——JAVA(2) | 学步园

    利用Notes的JAVA api发送邮件(代码片段) 最近要编写一个利用Notes自动发送邮件的程序,研究一天终于OK了``在这里跟大家分享代码 import lotus.domino.AgentBa ...

  5. java image功能_使用JAI扩展Java Image的功能 | 学步园

    Java Image功能一直都在增强,但是向磁盘写一个图像文件或者返回一个PNG或JPEG依然比较难实现.但是我们可以使用Java Advanced Imaging(JAI)API来解决这个问题.JA ...

  6. java 蚂蚁怕杆_百度面试题–5只蚂蚁走木棍问题的非递归解法(Java调试通过) | 学步园...

    致歉:之前贴的代码有bug. 题目描述: 有一根27厘米的细木杆,在第3厘米.7厘米.11厘米.17厘米.23厘米这五个位置上各有一只蚂蚁.木杆很细,不能同时通过一只蚂蚁.开始时,蚂蚁的头朝左还是朝右 ...

  7. java atomiclong 使用_每天一个Java类之AtomicLong | 学步园

    多线程是面试必被问,而且问的很深的东西啊 关于原子类,也会问到. Random中的seed是用的原子类,因此是线程安全的.但是效率不高. 来看看AtomicLong的实现 因为java的slot只有3 ...

  8. activitythread.java,ActivityThread and ApplicationThread | 学步园

    1. 入口. 以前一直都说Activity的人口是onCreate方法.其实android上一个应用的入口,应该是ActivityThread.和普通的java类一样,入口是一个main方法. pub ...

  9. java 单纯形法_单纯形法 | 学步园

    数学最优化中,由George Dantzig发明的单纯形法(simplex algorithm)是线性规划问题的数值求解的流行技术.有一个Nelder-Mead法或称下山单纯形法,由Nelder和Me ...

最新文章

  1. linux nginx 安装stream,Centos7下Nginx简单搭建与stream模块简单配置
  2. Linux下的/bin、/sbin、/usr/bin、/usr/sbin目录
  3. vSphere Data Protection 6.1.2部署与配置
  4. 静物摄影用光技巧_详解摄影用光技巧,用好光线,拍出好照片。
  5. Android之Launcher分析和修改1——Launcher默认界面配置(default_workspace)
  6. baidu patchrom项目开发详细教程(Being updated)
  7. 镇江 linux技术支持,东云镇江服务器
  8. 静态生成html的原理
  9. php属于复合型人才,【PHP】我国薪水上涨最快的行业
  10. TCP/IP研究(2)-TCB
  11. java多态/重载方法——一个疑难代码引发的讨论
  12. Android UI设计中一些不错的示例及第三方控件
  13. 华为企业网络常用图标大全(附PPT下载)
  14. [笔记]Windows核心编程《二十二》注入DLL和拦截API
  15. Android 如何屏蔽返回键和Home键
  16. xss.haozi练习通关详解
  17. JS中的函数概念和C语言的概念是类似的,c语言和JavaScript的区别有哪些?
  18. StudyJams-第01课_初识Android的View(TextView、ImageView、Button)
  19. 前端工程师的摸鱼日常(3)
  20. 3.3 自动驾驶的安全结构(第三章 自动驾驶汽车的安全保障)

热门文章

  1. 浅析HTTPS与SSL原理
  2. 【论文总结】并发程序变异测试研究综述_田甜,巩敦卫
  3. 怎样掌握在和客户沟通中的小技巧
  4. java sequence_一种java生成数据库sequence的方法技术
  5. 大数据助力南海教育决策
  6. 仿悟空遥控器控制页面
  7. 简单易懂的单纯形法理解
  8. java中润lda,机油_中润圣驰-网商汇
  9. Infineon TC297 reset 内容整理
  10. 【电路原理学习笔记】第2章:电压、电流和电阻:2.5 电阻