`

Action 访问ActionContext

阅读更多
  在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属性进行配置,代码如下所示:
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts PUBLIC 
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
    "http://struts.apache.org/dtds/struts-2.0.dtd"> 

<struts> 
<package name="struts2_login" extends="struts-default" namespace="/login"> 
<action name="checkLogin" class="com.loginAction" method="checkLogin"> 
  <result>/index.jsp</result> 
</action> 
</package> 
</struts> 

  loginAction的配置非常简单,这里不再多述,下面我们看登录页面login.jsp,代码如下所示。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<%@ taglib prefix="s" uri="/struts-tags" %> 
<html> 
  <body> 
    <center> 
    <br> 
    <h2>用户登录</h2> 
    <s:form action="checkLogin" namespace="/login"> 
    <s:textfield name="name" label="登录名称" size="15" /> 
    <s:textfield name="pwd" label="登录密码" size="15" /> 
    <s:submit value="登录" /> 
    </s:form> 
    </center> 
  </body> 
</html> 

  登录页面非常简单,这里不再多述。下面介绍显示登录信息的页面,新建一个名字为index.jsp的文件,代码如下所示:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<%@ taglib prefix="s" uri="/struts-tags" %> 
<html> 
  <body> 
    <br> 
    <center><h2> 
    读取session中的信息:欢迎<s:property value="#session.login" />! 
    <br><br> 
    读取application中的信息:欢迎<s:property value="#application.login" />! 
  </body> 
</html> 

  该页面使用OGNL把存储在session和application中的信息读取了出来,如图1-1所示是登录页面的运行效果,我们在登录名称文本框中输入”admin888”。
  单击登录按钮,显示登录信息,如图1-2所示。




  • 大小: 6.9 KB
  • 大小: 12.5 KB
分享到:
评论

相关推荐

    使用Action访问ActionContext方式的网站计数器

    使用Action访问ActionContext方式的网站计数器,可直接运行

    网页访问计数器

    使用Action访问ActionContext方式,编写一个网站计数器,即用户每访问一次页面,页面就会显示一次被访问的累加后的次数。

    jsp中Action使用session方法实例分析

    1.通过ActionContext class中的方法getSession得到  2.Action实现org.apache.struts2.interceptor.SessionAware接口的方式来对session进行操作  下面先看一个采用第一种方式,在action中得到session的例子  代码...

    OGNL表达式语言.txt

    然后把action放进ValueStack,所以action的实例变量可以被OGNL访问。 访问上下文中的对象需要使用#符号标注命名空间,如#application、#session 另外OGNL会设定一个根对象(root对象),在Struts2中根对象是...

    Struts2帮助```````

    一、 方法一:ActionContext方式 15 二、 方式二:Ioc(控制反转)—推荐使用 15 三、 方式三:获取原类型 16 四、 方式四:获取原类型-控制反转 17 十三、 Struts2配置文件模块化包含(include) 17 十四、 默认的...

    Struts2 学习笔记

    一、 方法一:ActionContext方式 15 二、 方式二:Ioc(控制反转)—推荐使用 15 三、 方式三:获取原类型 16 四、 方式四:获取原类型-控制反转 17 十三、 Struts2配置文件模块化包含(include) 17 十四、 默认的...

    struts应用3

    1). Action 类的要求 2). ActionSupport 3)、在 Action 中如何访问 WEB 资源: ①. 通过 ActionContext ②. 通过 Aware 接口 ③. 通过 ServletActionContext

    Struts2中Servlet的配置

    1、在struts2的action中可以通过实现ServletResponseAware/ServletResquestAware接口 (org.apache.struts2.inteceptor.ServletResponseAware/ServletResquestAware)直接访问 HttpServletResponse/HttpServletRequest...

    Struts2+API+标签全解+网页说明

    可以输出值栈、StackContext 、ActionContext中的值。 push:将某个值放入值栈。 set:设置一个新的变量。 text:输出国际化信息。 url:生成一个URL地址。 表单标签: checkbox标签:复选框。 checkboxlist标签...

    struts2 标签库 帮助文档

    可以输出值栈、StackContext 、ActionContext中的值。 push:将某个值放入值栈。 set:设置一个新的变量。 text:输出国际化信息。 url:生成一个URL地址。 表单标签: checkbox标签:复选框。 checkboxlist标签...

    iBATIS实战

    14.3.3 ActionContext 246 14.4 JGameStore工程结构 247 14.4.1 src文件夹 247 14.4.2 test文件夹 248 14.4.3 web文件夹 248 14.4.4 build文件夹 248 14.4.5 devlib文件夹 248 14.4.6 lib文件夹 249 14.5 配置web....

Global site tag (gtag.js) - Google Analytics