Struts2的ValueStack中的对象栈和Map栈.docxVIP

  • 1
  • 0
  • 约2.86千字
  • 约 3页
  • 2017-06-13 发布于北京
  • 举报
Struts2的ValueStack中的对象栈和Map栈 ?(2012-06-25 17:18:11)  HYPERLINK javascript:; 转载▼ 标签:?  HYPERLINK /?c=blogq=itby=tag \t _blank it分类:? HYPERLINK /s/articlelist_1449911172_4_1.html \t _blank Web应用开发1、提到Struts2的传值功能时,经常会见到Stack Context和ValueStack等概念,那么它们到底是什么,有什么作用呢。 ValueStack(值栈):Struts2将OGNL上下文设置为Struts2中的ActionContext(内部使用的仍然是 OgnlContext),并将值栈设为OGNL的根对象。 ActionContext:一次Action调用都会创建一个ActionContext ??????????????如:ActionContext ctx = ActionContext.getContext(); Stack Object:放入stack中的对象,一般是action。 Stack Context(map):stack上下文,它包含一系列对象,包括request、session、attr、application map等。 2、访问Stack Context中的对象的属性时要使用#对象名.属性名的方式,使用push标签可以将原来位于Stack Context中的对象放到ValueStack的栈顶。用push标签将对象保存在ValueStack的栈顶后,只需要使用属性名就可以直接访问了。如下面的例子: body ?s:bean name=cg.struts.at.User id=user ???s:param name=username value=cg/ ???s:param name=password value=p123/ ?/s:bean ?table border=1 width=80% ??tr align=center ???td colspan=4用户信息/td ??/tr ??tr align=center ???td用户名:/td ???tds:property value=#user.username//td ???td密码:/td ???tds:property value=#user.password//td ??/tr?? ?/table ?使用push标签,简化值的访问 ?s:push value=#user ??table border=1 width=80% ???tr align=center ????td colspan=4用户信息/td ???/tr ???tr align=center ????td用户名:/td ????tds:property value=username//td ????td密码:/td ????tds:property value=password//td ???/tr?? ??/table ?/s:push /body 3、如果ValueStack栈顶是集合对象的话,通常可以用iterator标签取得位于ValueStack的顶端的集合对象,遍历集合并输出,遍历完成后集合对象会被移出ValueStack。 4、在页面输出ValueStack和Stack Context的方法 ???只要在body标签中加入s:debug/,运行时就可以生成相应的链接,点击该链接就可以显示stack相关信息。 ?5、在Action中获得ActionContext、request、session、application对象的方法 ????5.1 缺省情况下,Struts2的Action类是从ActionSupport类继承过来的,因此,可以用下面的语句获得ActionContext对象。 ????ActionContext ctx = ActionContext.getContext(); ????ctx.put((address,上海); ????5.2 如果想要在Action类中使用request对象,最简单的方法就是在定义类的时候实现ServletRequestAware接口。然后就可以直接在execute()方法中使用request对象,例如: ????request.setAttribute(address,上海); ????5.3 如果想要在Action类中使用session对象,就要在定义类的时候实现SessionAware接口。然后就可以直接在execute()方法中使用session对象。例如: ????session.pu

文档评论(0)

1亿VIP精品文档

相关文档