OGNL—Action类与JSP页面之间的数据传递
来源:互联网 发布:有约束的最短路径算法 编辑:程序博客网 时间:2024/05/19 06:14
1) 通过HttpServletRequest,HttpSession,ServletContext来传递数据。
a) Action中传数据:在Action类的请求处理方法中先获取各个作用域对象
ServletActionContext.getRequest();
ServletActionContext.getRequest().getSession();
ServletActionContext.getServletContext();
然后调用相应的setAttribute(String “键”, Object 值);
b) 在JSP页面中取数据:可以使用EL表达式或代码片段来取出对应作用域中属性值。
c) 页面中的请求参数传递到Action中时,Action中直接定义对应名称的属性,并提供setter方法即可封装此数据。
2) 通过ActionContext实例来传递数据。 ActionContext针对每个正在执行Action的线程中绑定一份。
a) Action中通过ActionContext传递数据。
ActionContext提供了put(String “键”, Object 值); //数据不会映射到HttpServletRequest中。
ActionContext提供的getSession().put(String “键”, Object 值); //数据会自动映射到HttpSession中。
ActionContext提供的getApplication().put(String “键”, Object 值); //数据会自动映射到ServletContext中。
b) 在JSP页面取数据:struts2推荐使用OGNL来取ActionContext中的数据。
Struts2中的OGNL的使用。
OGNL:对象图导航语言。通过OGNL表达式可以获取对象的属性,调用对象的方法,或构造出对象。
1) OGNL上下文中有一个根对象。这个根对象可以直接获取。不需要#。
2)支持常量:
字符串常量、字符常量、
数值常量:int、long、float、double
布尔常量:true、false
Null常量 : null
支持操作符:支持Java的所有操作符,还支持特有的操作符: ,、 {}、in、not in;Struts2中的OGNL:
1) Struts2将ActionContext设置为OGNL上下文,并将值栈(ValueStack)作为OGNL的根对象放置到ActionContext中。
2) Struts2总是把当前Action实例放置在值栈的栈顶。所以,在OGNL中引用Action中的属性也可以省略“#”。
常用标签
1) <s:property value="OGNL"/> 2) <s:date name="OGNL" format=""/> 3) <s:if test="OGNL"></s:if><s:elseif test="OGNL"></s:elseif><s:else></s:else>★4) <s:iterator value="OGNL" status="vs">...</s:iterator> 5) <s:debug/>
struts2中#、%和$这三个符号的使用方法
一、”#”的用法
1、 访问OGNL上下文和Action上下文,#相当于ActionContext.getContext();下表有几个ActionContext中有用的属性:
a).parameters 包含当前HTTP请求参数的Map #parameters.id[0]作用相当于request.getParameter(“id”)
b).request 包含当前HttpServletRequest的属性(attribute)的Map #request.userName相当于request.getAttribute(“userName”)
c).session 包含当前HttpSession的属性(attribute)的Map #session.userName相当于session.getAttribute(“userName”)
d).application 包含当前应用的ServletContext的属性(attribute)的Map #application.userName相当于application.getAttribute(“userName”)
attr 用于按request > session > application顺序访问其属性(attribute) #attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为止
2、用于过滤和投影(projecting)集合,如books.{?#this.price<100};
3、构造Map,如#{‘foo1’:’bar1’, ‘foo2’:’bar2’}。
二、”%”的用法
“%”符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值。例如在Ognl.jsp中加入以下代码:
<h3>%的用途</h3> <p><s:url value="#foobar['foo1']" /></p> <p><s:url value="%{#foobar['foo1']}" /></p>
三、”$”的用法
1、用于在国际化资源文件中,引用OGNL表达式
2、在Struts 2配置文件中,引用OGNL表达式
例如:
<action name="AddPhoto" class="addPhoto"> <interceptor-ref name="fileUploadStack" /> <result type="redirect">ListPhotos.action?albumId=${albumId}</result> </action>
- OGNL—Action类与JSP页面之间的数据传递
- Struts2中jsp页面和Action类的数据交互之OGNL和值栈
- jsp与servlet之间的数据传递
- Servlet与JSP之间的数据传递
- struts2的action与jsp之间传递参数
- Action与JSP之间值传递的问题
- struts2的action与jsp之间传递参数
- struts2的action与jsp之间传递参数
- struts2的action与jsp之间传递参数
- struts2的action与jsp之间传递参数
- Struts2 之 Action类与 jsp 页面的数据交互
- Struts2 之 Action类与 jsp 页面的数据交互
- struts2解决jsp与jsp页面之间参数的传递
- jsp页面与页面之间参数的传递【重点】
- 2015061308 - 两个jsp页面之间数据传递的方式
- 【 jsp】页面和Action 之间传递参数的两种方式
- 页面之间的数据传递
- Servlet(Action)之间的数据传递
- js,根据包名,在指定空间中创建对象
- 面试提问垃圾回收机制
- 找合法帧 QAQ
- epoll_server实现web服务器
- c++ winpcap开发(7)
- OGNL—Action类与JSP页面之间的数据传递
- 算法_插入排序
- java对象构造过程
- linux下vim的管理输入输出
- js,dom节点查找
- windows64 装PIL时遇到的问题以及解决办法
- 安装 CICS TXS
- Nginx系列—虚拟主机配置的三种方式(一)
- 【备战秋招Day 6】经典面试题21-24及在线编程题16-18答案