1.OGNL表达式的计算是围绕OGNL上下文进行的。
OGNL上下文实际上就是一个Map对象,由ognl.OgnlContext类表示。它里面可以存放很多个JavaBean对象。它有一个上下文根对象。
上下文中的根对象可以直接使用名来访问或直接使用它的属性名访问它的属性值。否则要加前缀“#key”。
2.Struts2的标签库都是使用OGNL表达式来访问ActionContext中的对象数据的。如:<s:propertyvalue="xxx"/>。
3.Struts2将ActionContext设置为OGNL上下文,并将值栈作为OGNL的根对象放置到ActionContext中。
4.值栈(ValueStack) :
可以在值栈中放入、删除、查询对象。访问值栈中的对象不用“#”。
Struts2总是把当前Action实例放置在栈顶。所以在OGNL中引用Action中的属性也可以省略“#”。
5.调用ActionContext的put(key,value)放入的数据,需要使用#访问。
1.#符号
#符号的用途一般有三种。
访问非根对象属性,例如#session.msg表达式,由于Struts 2中值栈被视为根对象,所以访问其他非根对象时,需要加#前缀。实际上,#相当于ActionContext. getContext();#session.msg表达式相当于ActionContext.getContext().getSession(). getAttribute("msg") 。
#parameters.id[0]作用相当于request.getParameter("id")
#request.userName相当于request.getAttribute("userName")
#session.userName相当于session.getAttribute("userName")
#application.userName相当于application.getAttribute("userName")
用于过滤和投影(projecting)集合,如persons.{?#this.age>25},persons.{?#this.name=='pla1'}.{age}[0]。
用来构造Map,例如示例中的#{'foo1':'bar1', 'foo2':'bar2'}。
2.%符号
%符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值,这个类似js中的eval,很暴力。
3.$符号
$符号主要有两个方面的用途。
在国际化资源文件中,引用OGNL表达式,例如国际化资源文件中的代码:reg.agerange=国际化资源信息:年龄必须在${min}同${max}之间。
在Struts 2框架的配置文件中引用OGNL表达式,
<action name="*_*_*_*" class="cn.javass.action.action.{1}Action" method="{2}">
<result name="{3}">/${folder}/{4}.jsp</result>
</action>
method对应action里的方法名
<s:iterator value="#list2" var="o" >
value,数据源 list map类型
var 迭代的时候取的别名
访问方法
调用值栈中对象的普通方法:<s:property value="user.get()"/>
访问静态属性和方法
静态方法<s:property value="@struts.action.LoginAction@get()"/>
静态属性<s:property value="@struts.vo.Address@TIPS"/><br>
集合的伪属性
OGNL能够引用集合的一些特殊的属性,这些属性并不是JavaBeans模式,例如size(),length()等等. 当表达式引用这些属性时,OGNL会调用相应的方法,这就是伪属性.
集合 伪属性
Collection
(inherited by Map, List & Set) |size ,isEmpty
List |iterator
Map |keys , values
Set |iterator
Iterator |next , hasNext
Enumeration |next , hasNext , nextElement , hasMoreElements
struts2 map处理
<s:if test="#request.studentMap[#request.obj.teacherId].size==0">
${teacharRole[obj.teacherId]}
分享到:
相关推荐
这个“struts2小程序”很可能是开发者利用Struts2框架开发的一个小型项目,可能包含了基本的CRUD操作或其他特定功能。在描述中提到花费了3小时搭建,暗示这可能是一个简单的入门示例,用于学习或教学目的。 Struts2...
这个“Struts2小项目”显然是一个示例项目,旨在帮助开发者理解和掌握Struts2的核心概念和功能。项目实现了基本的数据库操作,包括增(Add)、删(Delete)、改(Update)和查(Query),这些都是任何数据驱动应用...
3. **Interceptor拦截器**:拦截器是Struts2的一大特色,它们在Action调用前后执行,可以用于实现如日志记录、权限检查、事务管理等功能。在练习中,你可以看到如何添加和使用自定义或内置的拦截器。 4. **Result...
3. **拦截器**:Struts2中的拦截器是一种强大的机制,允许在Action调用前后执行额外的功能,如日志记录、权限检查、事务管理等。这些拦截器可以通过配置文件进行组合和定制。 4. **结果类型与结果页面**:当Action...
6. **其他依赖的jar包**:Struts2运行还需要一些其他的库,如freemarker或velocity用于模板引擎,javassist用于动态类生成,log4j或slf4j用于日志记录等。 引入Struts2的jar包有多种方式: - **Eclipse/IDEA等集成...
Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试...
Struts2是一款非常流行的Java Web框架,用于构建企业级应用。然而,随着时间的推移,Struts2在安全方面暴露出了一些重要的漏洞,这给使用该框架的系统带来了潜在的安全风险。"Struts2漏洞检查工具Struts2.2019.V2.3...
- **拦截器**:拦截器是Struts2的一个重要特性,可以在请求到达Action之前或之后执行特定的操作,如验证用户登录状态、日志记录等。 #### 四、Struts2进阶技巧 - **ModelDriven模式**:该模式允许Action实例共享同...
Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,旨在简化创建用户交互式、数据驱动的web应用的过程。这个“Struts2接口文档”是开发者的重要参考资料,提供了关于...
struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全...
struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...
拦截器链是Struts2的一大特色,允许开发者自定义拦截器,实现如权限验证、日志记录、事务管理等功能。 4. **结果类型(Result)**:Action执行完成后,会返回一个结果类型,告诉框架如何处理后续的响应。Struts2内置...
3. **Interceptor**:拦截器是Struts2的一个强大特性,它们在Action调用前后执行,可以实现如日志记录、权限验证等功能。 4. **配置文件**:struts.xml是Struts2的主要配置文件,定义了Action、Result和Interceptor...
Struts2的拦截器是处理请求的过滤器,可以用于日志记录、权限检查、数据校验等。它们通过`struts-default.xml`和自定义配置文件定义,并按顺序执行。 7. **国际化和主题**: Struts2支持应用的多语言支持和UI主题...
3. **拦截器(Interceptors)**:拦截器是Struts2的一大特色,它们按照预定义的顺序在Action调用前后执行,可以实现如日志记录、权限验证、性能监控等功能。常见的拦截器有`params`(处理请求参数)、`validation`...
拦截器是Struts2的一个强大特性,可以在Action执行前后进行额外的操作,比如日志记录、权限验证、数据校验等。通过在`struts.xml`中配置拦截器栈,可以定制化Action的执行流程。 **6. OGNL(Object-Graph ...
"struts2 好东西"的描述虽然简洁,但传达了开发者对Struts2的高度认可。 1. **MVC模式**:Struts2的核心是MVC架构,它将业务逻辑(Model)、用户界面(View)和控制流程(Controller)分离,使得开发者可以独立地...
### Struts2讲义知识点概览 #### 一、Struts2的历史与发展 - **Struts框架的发展历程**: - Struts最初版本发布于2000年,是Java Web开发领域的一个重要里程碑。 - 随着时间的发展和技术的进步,Struts逐渐暴露...
- Struts2的拦截器是其一大特色,它们允许在Action执行前后插入自定义逻辑,如日志记录、权限验证、数据校验等。用户可以自由组合拦截器栈,以实现不同的业务需求。 4. **结果类型(Result Types)** - 结果类型...
4. **拦截器(Interceptors)**:Struts2提供了一种机制,允许在Action执行前后执行一些通用任务,比如登录检查、日志记录等。在struts.xml配置文件中,可以指定Action应该使用的拦截器链。 5. **Action的注解**:...