`
lovechina
  • 浏览: 2177 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

总结webwork里通过ActionContext以及Aware接口访问数据

阅读更多

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
//通过ActionContext访问数据
//davy ,2007-06-08
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
0.ActionContext的缺陷:
我们通过静态方法访问ActionContext的,而它本身是ThreadLocal的实现,所以对
action进行自动的单元测试将需要更多的工作;此外,由于能在线程调用栈的任意位
置访问ActionContext,因此你能与任意ThreadLocal协作,但请不要依赖这一点,如
过多依赖这一点,则你会陷入深层次的代码,而对你的action没有一的好处!
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
00.好多方案是让你的action Class实现SessionAware接口,当然你可以认为此action
依赖于CompleteStack.代码如下:

public class Login extends ActionSupoort implements SessionAware,UserDaoAware
{
  Map session;
  User user;
  UserDao userDao;
  //设置session,SessionAwear接口保证在action执行以前,先设置好session Map;
  public void setSession(Map session)
  {
    this.session = session;
  }
  //用户登陆
  public String execute() throws Exception
  {
    user = this.control.getUser(user.getName,user.getPassword);
    if(user == null)
    {
      return INPUT;
    }else
    {
      session.put("user",user);
      return SUCCESS;
    }
  }
}

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
01.获取session.
  Map session = ActionContext.getContext().getSession();
  session.put("user",user);
  return SUCCESS;
  注意:这里得到的session已经不是servlet特有的HttpSession了,此session表现为
        Map,此Map中封装了HttpSession.
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
02.获得HttpSession.
(1).
   ActionContext context  = ActionContext.getContext();
   HttpServletRequest req = context.get(ServletActionContext.HTTP_REQUEST);
   HttpSession session = req.getSession();
   session.put("user",user);
   return SEUCCESS;
   注意:不到万不得以,不要同时使用ActionContext和ServletActionContext这两个类.
(2).这是在下常用的方法.
   HttpServletRequest req = ServeletActionContext.getRequest();
   HttpSession session = req.getSession();
   session.put("user",user);
   return SUCCESS;
(3).以下才是最推荐的方式,通过让你的action class实现ServletRequestAwear接口.
   public class Login extends ActionSupport implements ServletRequestAwear,UserDaoAwear
   {
     HttpServletRequest req;
     User user;
     UserDao userDao;
    
     public void setServletRequest(HttpServletRequest req)
     {
 this.req = req;
     }

     public String execute() throws Exception
     {
        user = userDao.findUser(user.getName(),user.getPassword());
 if(user == null)
 {
   return INPUT;
 }else
 {
   HttpSession session = req.getSession();
          session.put("user",user);
   return SUCCESS;
 }
     }

   }

分享到:
评论
2 楼 tiyi 2007-06-09  
可把session访问的部分抽离到接口和另外一个实现类。
到时候做单元测试只需要做个Mock实现就好了~~
1 楼 一日游 2007-06-08  
最好不要和sevlet代码耦合啊

相关推荐

    webwork配置详解

    总结来说,WebWork 配置涉及Action的创建、ActionContext的理解和使用、ServletDispatcher的调度机制,以及Action的测试和Result Type的设置。熟练掌握这些知识点,能够帮助开发者高效地构建和维护基于WebWork的Java...

    Webwork 的 验证 客服端 和 服务器段 数据验证

    在Webwork中,数据验证是非常重要的一环,它确保了用户输入的数据符合应用的要求,从而提高了数据的安全性和一致性。数据验证分为客户端验证和服务器端验证,这两者都是保证数据质量不可或缺的部分。 **客户端验证*...

    webwork 中文API

    3. **ActionContext**:这是一个全局上下文对象,存储了当前请求的环境信息,如参数、session和request数据,供Action和拦截器访问。 4. **Interceptor(拦截器)**:WebWork允许在Action执行前后插入拦截器,用于...

    webwork入门(添加注释)

    以上是WebWork入门的基本内容,涵盖了WebWork的核心概念、安装、动作、ActionContext以及请求处理机制。继续深入学习,你可以探索更多高级特性,如拦截器(Interceptor)、国际化(i18n)、AOP(面向切面编程)等,...

    WebWork 教程

    通过OGNL,开发者可以轻松地访问和操作值堆栈(Value Stack)中的对象,值堆栈是WebWork用于存储和传递数据的核心机制之一,它在Action执行过程中保持数据的连续性,使得数据能够在多个Action之间共享。 #### 拦截...

    webwork的api

    WebWork的API是这个框架的核心部分,它包含了一系列的类和接口,使得开发者能够更加高效地处理请求、响应以及业务逻辑。在本篇文章中,我们将深入探讨WebWork API的主要组件和它们在实际开发中的应用。 1. **Action...

    webwork教程

    - 通过ActionContext访问当前的请求上下文信息。 - **ActionContext**: - 用于存储与当前请求相关的数据和对象。 - 提供了一种方式来获取当前的请求信息、session信息等。 - ServletActionContext是...

    WebWork教程开发资料

    WebWork作为一个强大的Web开发框架,它简化了Java Web应用的开发过程,通过提供动作(Action)和控制器(Controller)的概念,将业务逻辑、数据处理和用户界面进行了清晰的分离。WebWork的特点包括强大的表单处理...

    webwork-1.4-src.zip_webwork_webwork s_webwork.zip_webwork1.4.zip

    WebWork1.4是该框架的一个较早版本,它为开发者提供了强大的功能,包括动作映射、数据绑定、异常处理、国际化支持以及强大的视图渲染机制。在"webwork-1.4-src.zip"这个压缩包中,包含了WebWork1.4的源代码,这对于...

    webwork教程很好的学习教程

    - **Xml-RPC**:允许WebWork应用与其他系统通过XML格式的数据进行远程通信。 #### 十四、总结 WebWork框架以其灵活的设计和丰富的功能,在Java Web开发领域有着广泛的应用。通过本教程的学习,读者可以深入了解...

    webwork2个人学习总结

    以下是对Webwork2框架的学习总结: 1. **JAR包下载与项目配置**: - 开始学习Webwork2时,首先需要下载对应的JAR包,例如webwork-2.2.6.2版本。 - 将下载的JAR包放入项目中的LIB目录,包括default文件夹下的所有...

    webwork中文 webwork中文参考 webwork中文资料 webwork学习资料

    Action可以是Field-Driven或Model-Driven两种类型,前者允许直接访问Action实例的字段,后者则要求通过getter和setter方法来访问。ActionContext是Action执行的上下文,包含了一系列关键的对象,如Request、Session...

    webwork2.0 webwork2.0 帮助文档

    ServletActionContext是ActionContext的一个实现,它将WebWork与Servlet API结合,使得Action可以直接访问HttpServletRequest和HttpServletResponse对象。 ### ServletDispatcher原理 ServletDispatcher是WebWork...

    webwork学习资料

    ActionContext是WebWork中的一个关键组件,它提供了访问当前请求的上下文信息,如请求参数、session和application范围的对象。ActionContext使得Action可以获取和设置这些信息,进行数据传递。 7. **...

    webwork的使用教程

    ActionContext允许你在Action之间共享数据,也可以通过它访问Servlet容器的相关服务。 **ServletActionContext** ServletActionContext是ActionContext的一个实现,它扩展了ActionContext并增加了对Servlet API的...

    Webwork2开发指南

    Webwork2 提供了强大的数据绑定功能,允许开发者将表单字段直接映射到动作类的属性,极大地简化了输入验证和数据处理。通过注解或XML配置,可以定义数据类型的转换器和验证规则。 **4. 异常处理** Webwork2 具有...

    webwork资源

    WebWork 是一个基于Java的Web应用程序框架...通过深入理解WebWork的原理,如Action、Interceptor以及ActionContext等,开发者可以更好地适应和运用这个框架,解决实际开发中的问题,进行高效且易于维护的Web应用开发。

    WebWork2学习笔记

    WebWork2通过OGNL(Object-Graph Navigation Language)表达式语言来传递数据到视图,使得视图能够轻松地访问Action上下文中的任何对象。 在学习WebWork2时,理解ActionContext的概念也很重要。ActionContext是...

    webwork2开发指南

    2. 数据验证(Validation):WebWork2提供了强大的数据验证机制,可以通过注解或XML配置文件定义验证规则,确保输入数据的有效性。 3. 国际化与本地化(i18n/L10n):WebWork2支持多语言环境,通过资源文件管理不同...

Global site tag (gtag.js) - Google Analytics