+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
//通过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;
}
}
}
分享到:
相关推荐
总结来说,WebWork 配置涉及Action的创建、ActionContext的理解和使用、ServletDispatcher的调度机制,以及Action的测试和Result Type的设置。熟练掌握这些知识点,能够帮助开发者高效地构建和维护基于WebWork的Java...
在Webwork中,数据验证是非常重要的一环,它确保了用户输入的数据符合应用的要求,从而提高了数据的安全性和一致性。数据验证分为客户端验证和服务器端验证,这两者都是保证数据质量不可或缺的部分。 **客户端验证*...
3. **ActionContext**:这是一个全局上下文对象,存储了当前请求的环境信息,如参数、session和request数据,供Action和拦截器访问。 4. **Interceptor(拦截器)**:WebWork允许在Action执行前后插入拦截器,用于...
以上是WebWork入门的基本内容,涵盖了WebWork的核心概念、安装、动作、ActionContext以及请求处理机制。继续深入学习,你可以探索更多高级特性,如拦截器(Interceptor)、国际化(i18n)、AOP(面向切面编程)等,...
通过OGNL,开发者可以轻松地访问和操作值堆栈(Value Stack)中的对象,值堆栈是WebWork用于存储和传递数据的核心机制之一,它在Action执行过程中保持数据的连续性,使得数据能够在多个Action之间共享。 #### 拦截...
WebWork的API是这个框架的核心部分,它包含了一系列的类和接口,使得开发者能够更加高效地处理请求、响应以及业务逻辑。在本篇文章中,我们将深入探讨WebWork API的主要组件和它们在实际开发中的应用。 1. **Action...
- 通过ActionContext访问当前的请求上下文信息。 - **ActionContext**: - 用于存储与当前请求相关的数据和对象。 - 提供了一种方式来获取当前的请求信息、session信息等。 - ServletActionContext是...
WebWork作为一个强大的Web开发框架,它简化了Java Web应用的开发过程,通过提供动作(Action)和控制器(Controller)的概念,将业务逻辑、数据处理和用户界面进行了清晰的分离。WebWork的特点包括强大的表单处理...
WebWork1.4是该框架的一个较早版本,它为开发者提供了强大的功能,包括动作映射、数据绑定、异常处理、国际化支持以及强大的视图渲染机制。在"webwork-1.4-src.zip"这个压缩包中,包含了WebWork1.4的源代码,这对于...
- **Xml-RPC**:允许WebWork应用与其他系统通过XML格式的数据进行远程通信。 #### 十四、总结 WebWork框架以其灵活的设计和丰富的功能,在Java Web开发领域有着广泛的应用。通过本教程的学习,读者可以深入了解...
以下是对Webwork2框架的学习总结: 1. **JAR包下载与项目配置**: - 开始学习Webwork2时,首先需要下载对应的JAR包,例如webwork-2.2.6.2版本。 - 将下载的JAR包放入项目中的LIB目录,包括default文件夹下的所有...
Action可以是Field-Driven或Model-Driven两种类型,前者允许直接访问Action实例的字段,后者则要求通过getter和setter方法来访问。ActionContext是Action执行的上下文,包含了一系列关键的对象,如Request、Session...
ServletActionContext是ActionContext的一个实现,它将WebWork与Servlet API结合,使得Action可以直接访问HttpServletRequest和HttpServletResponse对象。 ### ServletDispatcher原理 ServletDispatcher是WebWork...
ActionContext是WebWork中的一个关键组件,它提供了访问当前请求的上下文信息,如请求参数、session和application范围的对象。ActionContext使得Action可以获取和设置这些信息,进行数据传递。 7. **...
例如,可以将 `webwork-2.1.1.jar` 以及 `\lib\core\*.jar` 文件复制到指定位置。 - **Web 应用部署结构**:为了演示 WebWork2 的工作流程,选择了一个典型的登录流程为例。虽然这个例子简单,但它涵盖了 WebWork ...
ActionContext允许你在Action之间共享数据,也可以通过它访问Servlet容器的相关服务。 **ServletActionContext** ServletActionContext是ActionContext的一个实现,它扩展了ActionContext并增加了对Servlet API的...
Webwork2 提供了强大的数据绑定功能,允许开发者将表单字段直接映射到动作类的属性,极大地简化了输入验证和数据处理。通过注解或XML配置,可以定义数据类型的转换器和验证规则。 **4. 异常处理** Webwork2 具有...
WebWork 是一个基于Java的Web应用程序框架...通过深入理解WebWork的原理,如Action、Interceptor以及ActionContext等,开发者可以更好地适应和运用这个框架,解决实际开发中的问题,进行高效且易于维护的Web应用开发。
WebWork2通过OGNL(Object-Graph Navigation Language)表达式语言来传递数据到视图,使得视图能够轻松地访问Action上下文中的任何对象。 在学习WebWork2时,理解ActionContext的概念也很重要。ActionContext是...