什么是OGNL,什么是struts2标签?学的有点混淆了,感觉struts2标签包含了OGNL,别说定义,定义都知道。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是OGNL,什么是struts2标签?学的有点混淆了,感觉struts2标签包含了OGNL,别说定义,定义都知道。相关的知识,希望对你有一定的参考价值。

我想给我来点透彻的解释,谢谢,一定好评

都是jsp的页面标签集,通过格式化的标签代替java代码,而使jsp页面整体看上去比较简洁,OGNL和struts2标签不同的在于struts2标签整合了下ognl,在基础功能下增加了很多和框架相搭配的功能。

以上纯手打。个人理解。追问

等于没说,我想知道区别,感觉你还是没有解释明白

追答

你想要详细的区别,每个标签的区别。

你会用了不就知道了区别。

对比API手册看看不就行了

参考技术A ognl对象导航语言struts2官方自定义的标签库离开stuts2环境就不能用了 参考技术B javanean导航一模一样

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,别说定义,定义都知道。的主要内容,如果未能解决你的问题,请参考以下文章

OGNL

ssh框架-Struts2

基于初学者的SSHstruts2 值栈的详解与struts2标签库+ognl表达式

Struts2的标签库——OGNL表达式

Struts标签Ognl表达式el表达式jstl标签库这四者之间的关系和各自作用

Struts标签Ognl表达式el表达式jstl标签库这四者之间的关系和各自作用