什么是OGNL,什么是struts2标签?学的有点混淆了,感觉struts2标签包含了OGNL,别说定义,定义都知道。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是OGNL,什么是struts2标签?学的有点混淆了,感觉struts2标签包含了OGNL,别说定义,定义都知道。相关的知识,希望对你有一定的参考价值。
我想给我来点透彻的解释,谢谢,一定好评
都是jsp的页面标签集,通过格式化的标签代替java代码,而使jsp页面整体看上去比较简洁,OGNL和struts2标签不同的在于struts2标签整合了下ognl,在基础功能下增加了很多和框架相搭配的功能。以上纯手打。个人理解。追问
等于没说,我想知道区别,感觉你还是没有解释明白
追答你想要详细的区别,每个标签的区别。
你会用了不就知道了区别。
对比API手册看看不就行了
OGNL
1.什么是OGNL?
ObjectGraphNavigationLanguage 和EL同为表达式语言,但功能更为强大
2.OGNL在Struts2中做两件事
- 表达式语言
- 将表单或Struts2标签与特定的java数据绑定起来,用来将数据移入,移出框架
- 类型转换
- 数据进入和流出框架,在页面数据的字符串类型和java数据类型进行转换
3.值栈(valueStack)
- 由Struts2框架创建的存储区域,具有栈的特点 Action的实例会被存放到值栈中
- OGNL访问值栈重上到下的顺序 ,靠近栈顶的同名属性会被读取
4.类型转换
- 日期转换
- 局部:ArrayDataTransferAction-conversion.properties timeDate=cn.converter.DateConverter
- 全局:xwork-conversion.propertiesjava.util.Date=cn.converter.DateConverter
5.修改所有的错误信息
<constantname="struts.custom.i18n.resources"value="message"/>
6.配置message.properties
xwork.error.action.execution=ErrorduringActioninvocation
xwork.exception.missing-action=ThereisnoActionmappedforactionname{0}.
xwork.exception.missing-package-action=ThereisnoActionmappedfornamespace{0}andactionname{1}.
xwork.default.invalid.fieldvalue=\u5B57\u6BB5"{0}"\u65E0\u6548.
7.配置struts.xml
8.OGNL表达式
- 注意事项
- 访问Bean的属性
- 必须具有无参构造
- Set/get方法符合javaBean规范
实例
创建集合对象:
<s:setname="userList"value="{‘Jason‘,‘Tom‘,‘Marry‘}"/>
<s:propertyvalue="#userList[1]"/>
<s:propertyvalue="#userList.size"/>
<hr>
创建Map
<s:setname="map"value="#{‘cn‘:‘China‘,‘us‘:‘the United States‘}"/>
<s:propertyvalue="#map.cn"/>
<s:propertyvalue="#map[‘cn‘]"/>
<hr>访问非值栈对象加#
<s:setname="age"value="20"scope="request"></s:set>
<s:setname="username"value="‘Jason‘"scope="session"></s:set>
<s:setname="count"value="5"scope="application"></s:set>
#request.age:<s:propertyvalue="#request.age"/><br>
#session.username:<s:propertyvalue="#session.username"/><br>
#application.count:<s:propertyvalue="#application.count"/><br>
#attr.count:<s:propertyvalue="#attr.count"/><br>
<hr>演示字符串常量
<s:setname="country1"value="China"></s:set>
<s:setname="country2"value="‘China‘"></s:set>
常量使用单引号
#country1:<s:propertyvalue="#country1"/><br>
#country2:<s:propertyvalue="#country2"/><br>
没指定访问类型只有request可以
#request.country2:<s:propertyvalue="#request.country2"/><br>
以上是关于什么是OGNL,什么是struts2标签?学的有点混淆了,感觉struts2标签包含了OGNL,别说定义,定义都知道。的主要内容,如果未能解决你的问题,请参考以下文章
基于初学者的SSHstruts2 值栈的详解与struts2标签库+ognl表达式