+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
//通过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的配置
webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程webwork教程
学习很好用,个人总结,技术有限,如有错误,望请原谅!
WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包WEBWORK的源文件压缩包
WebWork_开发指南,详细的介绍了webwork得核心技术以及思想,
webwork+spring整合例子 内带使用说明 以及webwork文档(中文) 下载
webwork源码下载
webwork底层源码,用于webwork框架设计
webwork中文帮助文档 webwork中文帮助文档 webwork中文帮助文档 webwork中文帮助文档 webwork中文帮助文档 webwork中文帮助文档
这是webwork1的jar包,还有webwork-2.2.7.jar和webwork-src-2.2.7.jar
webwork_框架文档
webWork中文教程
webwork2.1.7
与下载的<<WebWork docs -- webWork 详细的说明文档>> 的文件夹合并. 这里包括了所有webWork的所有的详细说明文档, 任何有关的问题都可以在这里找到答案.
webWork 详细的说明文档, 由于我的上传大小有限, 这个好东西我只能是分两次上传了, 下载的人可能要辛苦一些了, 不过这些都是值得的, 将<<WebWork docs 2 -- webWork 详细的说明文档>> 也一同下载下来, 下载后两个...
spring与webwork的集成 spring与webwork的集成
WebWork2配置WebWork2配置WebWork2配置WebWork2配置
webwork是与struts2相似的一种web开发框架,这里这个demo可以让你轻松学习webwork基本的action配置、访问,为了区别可以在本空间中下载基于struts2框架的应用Struts2,加以对比,可以让你一下学习两种web框架。
包括webwork2.x的 具体使用步骤,见解压后“webwork使用步骤.txt” 和一个实现前后台连通的webwork具体应用的“test” 实例,将test导入eclipse的工作空间,即可正常运行
webwork2.2.7+spring+hibernate分页查询 通过输入用户名获取数据并进行分页