- 浏览: 188304 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (321)
- eclipse (4)
- idea (2)
- Html (8)
- Css (14)
- Javascript (8)
- Jquery (6)
- Ajax Json (4)
- Bootstrap (0)
- EasyUI (0)
- Layui (0)
- 数据结构 (0)
- Java (46)
- DesPattern (24)
- Algorithm (2)
- Jdbc (8)
- Jsp servlet (13)
- Struts2 (17)
- Hibernate (11)
- Spring (5)
- S2SH (1)
- SpringMVC (4)
- SpringBoot (11)
- WebService CXF (4)
- Poi (2)
- JFreeChart (0)
- Shiro (6)
- Lucene (5)
- ElasticSearch (0)
- JMS ActiveMQ (3)
- HttpClient (5)
- Activiti (0)
- SpringCloud (11)
- Dubbo (6)
- Docker (0)
- MySQL (27)
- Oracle (18)
- Redis (5)
- Mybatis (11)
- SSM (1)
- CentOS (10)
- Ant (2)
- Maven (4)
- Log4j (7)
- XML (5)
最新评论
1. struts2值栈简介
2. struts2引入OGNL
1) OGNL访问数据
2) OGNL访问复杂对象
3) OGNL访问静态方法和属性
值栈是对应每个请求对象的一套内存数据的封装,Struts2会给每个请求创建一个新的值栈。 值栈能够线程安全地为每个请求提供公共的数据存取服务。 新建项目HeadFirstStruts2Chap04
2. struts2引入OGNL
OGNL是对象图导航语言Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言。 OGNL访问ValueStack数据 <%@taglib prefix="s" uri="/struts-tags" %> <s:property value="account"/> OGNL访问ActionContext数据 访问某个范围下的数据要用# #parameters.xxx 请求参数 request.getParameter(xxx); #request.xxx 请求作用域中的数据 request.getAttribute(xxx); #session.xxx 会话作用域中的数据 session.getAttribute(xxx); #application.xxx 应用程序作用域中的数据 application.getAttribute(xxx); #attr.xxx 按照page request session application顺序查找值
1) OGNL访问数据
HelloAction.java package com.andrew.action; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.util.ValueStack; public class HelloAction extends ActionSupport { @Override public String execute() throws Exception { ActionContext actionContext = ActionContext.getContext(); // 获取狭义上的值栈 ValueStack valueStack = actionContext.getValueStack(); valueStack.set("name", "张三(valueStack)"); valueStack.set("age", 11); Map<String, Object> session = actionContext.getSession(); session.put("name", "王五(session)"); session.put("age", 13); Map<String, Object> application = actionContext.getApplication(); application.put("name", "赵六(application)"); application.put("age", 14); return SUCCESS; } } struts.xml <package name="manage" namespace="/" extends="struts-default"> <action name="hello" class="com.andrew.action.HelloAction"> <result name="success" >success.jsp</result> </action> </package> success.jsp <%@taglib prefix="s" uri="/struts-tags" %> <% request.setAttribute("name", "李四(request)"); request.setAttribute("age", "12"); %> 获取狭义上的值栈数据:<s:property value="name"/> <s:property value="age"/><br/> 请求参数:<s:property value="#parameters.name"/> <s:property value="#parameters.age"/><br/> request:<s:property value="#request.name"/> <s:property value="#request.age"/><br/> session:<s:property value="#session.name"/> <s:property value="#session.age"/><br/> application:<s:property value="#application.name"/> <s:property value="#application.age"/><br/> attr取值:<s:property value="#attr.name"/> <s:property value="#attr.age"/><br/> http://localhost:8080/HeadFirstStruts2Chap04/hello 获取狭义上的值栈数据:张三(valueStack) 11 请求参数: request:李四(request) 12 session:王五(session) 13 application:赵六(application) 14 attr取值:李四(request) 12
2) OGNL访问复杂对象
1. 访问javaBean对象; 2. 访问集合对象; 3. 访问Map对象;
Student.java package com.andrew.model; public class Student { private String name; private int age; public Student() {} public Student(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } StudentAction.java package com.andrew.action; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.andrew.model.Student; import com.opensymphony.xwork2.ActionSupport; public class StudentAction extends ActionSupport { private Student student; private List<Student> students; private Map<String, Student> studentMap; public Student getStudent() { return student; } public void setStudent(Student student) { this.student = student; } public List<Student> getStudents() { return students; } public void setStudents(List<Student> students) { this.students = students; } public Map<String, Student> getStudentMap() { return studentMap; } public void setStudentMap(Map<String, Student> studentMap) { this.studentMap = studentMap; } @Override public String execute() throws Exception { student = new Student("小三", 12); students = new ArrayList<Student>(); students.add(new Student("小四", 13)); students.add(new Student("小五", 14)); studentMap = new HashMap<String, Student>(); studentMap.put("goodStudent", new Student("学霸", 20)); studentMap.put("badStudent", new Student("学渣", 19)); return SUCCESS; } } struts.xml <package name="manage" namespace="/" extends="struts-default"> <action name="student" class="com.andrew.action.StudentAction"> <result name="success" >student.jsp</result> </action> </package> http://localhost:8080/HeadFirstStruts2Chap04/student ognl访问javaBean对象:小三 12 ognl访问List集合:小四 13 小五 14 ognl访问Map:学霸 20 学渣 19
3) OGNL访问静态方法和属性
1. 访问静态属性; 2. 访问静态方法; <constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>
MyStatic.java package com.andrew.common; public class MyStatic { public static final String str = "百度"; public static String printUrl(){ System.out.println("http://www.baidu.com"); return "http://www.baidu.com"; } } struts.xml <constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant> ognl_static.jsp <%@taglib prefix="s" uri="/struts-tags" %> 访问静态属性:<s:property value="@com.andrew.common.MyStatic@str"/><br/> 访问静态方法:<s:property value="@com.andrew.common.MyStatic@printUrl()"/> http://localhost:8080/HeadFirstStruts2Chap04/ognl_static.jsp 访问静态属性:百度 访问静态方法:http://www.baidu.com
发表评论
-
struts2防重复提交
2019-01-14 08:55 3541. struts2防重复提交 Student.java ... -
struts2文件上传和下载
2019-01-12 16:10 3101. struts2文件上传和下载 1) Struts2 ... -
struts2验证框架
2019-01-12 16:10 4141. struts2验证框架 Struts2基于Stru ... -
struts2国际化
2019-01-12 16:10 3961. struts2国际化 网上转码: http://too ... -
struts2标签
2019-01-12 16:10 4481. struts2标签 Struts2自己封装 ... -
struts2拦截器
2019-01-11 09:07 3481. struts2拦截器简介 拦截器简介 Strut ... -
struts2配置result
2019-01-11 09:07 4381. struts2配置result 新建项目HeadF ... -
struts2分模块与action生命周期
2019-01-11 09:07 3531. 分模块 struts.xml <inclu ... -
struts2使用通配符与动态方法调用
2019-01-11 09:06 3891. 使用通配符 新建项目HeadFirstStruts ... -
struts2配置struts.xml
2019-01-11 09:06 3891. struts2配置struts.xml 1 ... -
struts2处理传入多个值
2019-01-10 09:17 3981. struts2处理传入多个值 新建项目HeadFi ... -
struts2属性驱动与模型驱动
2019-01-10 09:17 3841. struts2属性驱动与模型驱动 user.jav ... -
struts2引入ActionSupport
2019-01-10 09:16 4201. struts2引入ActionSupport He ... -
struts2自动获取设置数据
2019-01-10 09:16 3991. struts2自动获取设置数据 新建项目HeadF ... -
struts2简介
2019-01-10 09:16 4631. struts2简介 官网:http://struts. ... -
Java struts2 Jar包
2018-09-03 19:17 6691. Java struts2 Jar包下载地址 http: ...
相关推荐
**Struts2与OGNL和值栈的关系** Struts2通过OGNL与值栈的结合,实现了强大的数据绑定和表达式解析能力。当用户提交表单数据时,Struts2会使用OGNL将这些数据绑定到值栈中的Action对象。然后,Action执行业务逻辑,...
在Struts2框架中,OGNL被广泛应用于值栈(Value Stack)之中。值栈是Struts2框架中的核心概念之一,它是一个用于临时存储对象的栈结构,这些对象包括Action实例、模型对象、临时对象等。值栈中的对象可以按照以下四...
Struts2是一个流行的Java web框架,它利用OGNL(Object-Graph Navigation Language)作为其核心表达式语言。OGNL是一种强大的表达式语言,允许开发者在Java对象之间导航和操作数据。在Struts2中,OGNL被广泛用于访问...
2. **值栈与OGNL的结合**: - 值栈(ValueStack)是Struts2处理请求的核心概念,它是一个对象栈,存放了请求处理过程中涉及的所有对象。使用OGNL时,通常配合Struts2的标签,比如`s:property`,通过值栈来访问和...
1. **值栈访问**:Struts2使用值栈存储请求中的所有对象,OGNL可以从值栈顶部找到并访问对象。例如,`#request.user.name`表示从HTTP请求对象中获取`user`属性的`name`。 2. **动态方法调用**:OGNL支持直接调用...
6. **值栈**:Struts2中的值栈是OGNL的主要工作区域,它存储了Action对象和其他相关数据。通过`#root`或`#action`关键字,可以直接访问值栈顶部的对象。 7. **表达式过滤器**:为了安全考虑,Struts2允许配置OGNL...
XWork的ActionContext对象持有与当前请求相关的所有上下文信息,如值栈(Value Stack)和Action实例。 `ognl-3.0.6-sources.jar` 包含了OGNL的源代码,这是一门强大的表达式语言,用于在Struts2中访问和操作对象图...
开发者可以通过OGNL表达式从值栈中轻松获取和修改数据。 1. **OGNL的属性访问** - 使用`.`或`['']`访问对象属性。例如,`object.property`和`object['property']`都是访问对象的`property`属性。当属性名包含特殊...
4. **上下文访问**:OGNL可以访问当前作用域内的所有对象,包括ActionContext中的值栈和请求、会话等范围的属性。 5. **方法调用**:不仅可以获取属性值,还可以直接调用对象的方法,如`#{user.save()}`。 6. **集合...
在"4-5struts2的标签库-值栈-OGNL"这个实验代码中,你会看到如何在Struts2中集成OGNL。Struts2的核心组件之一是值栈(Value Stack),这是一个存储请求相关的数据结构。当一个Action执行后,它的结果会放在值栈的...
OGNL(Object-Graph Navigation Language)是Struts2框架中重要的表达式语言,它用于在应用程序中进行数据绑定和表达式求值。这篇文档将详细解释OGNL API及其在Struts2框架中的应用。 首先,OGNL是一个强大的、动态...
- Struts2 ActionContext:OGNL与ActionContext紧密配合,ActionContext存储了请求相关的上下文信息,包括值栈和session等。 - 模板技术集成:FreeMarker、Velocity等模板引擎可以使用OGNL表达式来获取和操作数据...
2. **值栈**:Struts2使用值栈来存储请求中的所有对象,OGNL可以从值栈中查找并访问对象,如`#request`, `#session`, `#application`等。 3. **JSP标签**:在JSP页面中,Struts2的标签库使用OGNL表达式来获取和显示...
2. **值栈操作**:Struts2使用值栈存储请求相关的数据。OGNL可以直接访问值栈中的任何对象,例如`<s:property value="#session.user.name" />`将显示会话中用户对象的姓名。 3. **动态方法调用**:OGNL支持对对象的...
通过阅读“Struts 2中的OGNL.pdf”,你可以深入了解OGNL如何与Struts 2框架协作,以及如何有效地利用它来构建更高效、更安全的Web应用程序。学习并掌握这些知识,将有助于提升你在Struts 2开发中的技能和效率。
2. 结果值栈:Struts2使用值栈来存储请求相关的数据,OGNL可以从值栈中检索或修改数据。 3. JSP标签:在JSP页面中,通过Struts2标签库可以直接使用OGNL表达式获取和显示数据。 4. 表单验证:在Struts2的拦截器中,...
Struts2 的核心功能之一就是允许开发者通过 OGNL 表达式在 JSP 页面、Action 类以及值栈之间灵活地传递数据。 源码分析: 1. **OGNL 源码结构**: OGNL 的源码通常包含多个模块,如解析器(Parser)、编译器...
在这个主题中,我们将深入探讨Struts2与OGNL的整合以及它们在实际开发中的应用。 **Struts2框架概述** Struts2是Apache软件基金会的开源项目,它是Struts1的升级版,提供了更多的特性和灵活性。Struts2的核心设计...
在这个主题中,我们将深入探讨OGNL(Object-Graph Navigation Language)以及如何通过`<s:property>`标签来访问Struts2中的值栈(Value Stack)。值栈是Struts2中一个核心的概念,它是一个存储用户请求数据和应用...
2. 访问值栈中对象的普通属性: 3. 访问值栈中对象(对象包含对象)的普通属性: 4. 访问值栈中对象的普通方法:().length()"/> 5. 访问值栈中action的普通方法:()"/> 访问静态方法和属性 6. 访问静态方法:...