struts2 OGNL表达式
五、OGNL简介(非常重要)
1、什么是OGNL
OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个单独的开源项目。 Struts2框架使用OGNL作为默认的表达式语言。
2、OGNL的功能
前提:OGNL是struts2整合的一个开源项目,所以在struts2中,要想使用OGNL表达式,必须使用Struts2标签库
2.1、支持普通方法的调用
1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 <%@ taglib uri="http://www.itheima.com/functions/myfunction" prefix="myfn" %> 3 <%@ taglib uri="/struts-tags" prefix="s" %> 4 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 5 <html> 6 <head> 7 <title>OGNL-Expression</title> 8 </head> 9 <body> 10 <%--el表达式: ${} 11 jsp表达式:<%= %> 12 --%> 13 14 <%--EL表达式:只能调用静态方法 --%> 15 abcdefg---->ABCDEFG 16 <br/> 17 ${myfn:touppoercase("abcdefg")} 18 <hr/> 19 <%--OGNL表达式:它可以访问普通方法 20 OGNL表达式必须写在struts2的标签中 21 s:property它就类似于jsp的表达式,把值输出到浏览器上 22 23 value属性中的内容不再是我们看到的字符串,它是一个OGNL表达式。必须知道 24 如果想让他变成一个普通的字符串,在值外面套上单引号 25 --%> 26 <s:property value="OGNL-Expression"/> 这是一个OGNL表达式<br/> 27 <s:property value="'OGNL-Expression'"/>这是一个普通的字符串<br/> 28 <s:property value="'OGNL-Expression'.length()"/>使用普通字符串调用了获取长度的方法
(EL表达式只能调用静态方法)
2.2、访问静态成员(静态属性,静态方法)
1 <%--OGNL访问静态属性: 2 访问静态属性的方式:@全类名@静态属性名称 3 --%> 4 <s:property value="@java.lang.Integer@MAX_VALUE" /><br/> 5 <%--OGNL访问静态方法: 6 访问静态方法的方式:@全类名@静态方法名 7 struts2的框架默认是禁用静态方法调用的。我们可以通过配置开启。 8 struts.ognl.allowStaticMethodAccess=false把它改为true 9 --%> 10 <s:property value="@java.lang.Math@random()" />
OGNL改写文件下载:
2.3、操作集合对象
a、创建List对象:
1 <%--OGNL操作map和List --%> 2 <%-- 使用的是s:radio的标签,创建list集合 3 {}就相当于创建了一个list集合 4 list属性中的取值是一个OGNL表达式 5 --%> 6 <s:radio name="gender" list="{'男','女'}"></s:radio><br/>
b、创建Map对象:
1 <%--使用s:radio创建一个map 2 #{}表示创建一个map 3 1和0作为value给raido标签的value属性赋值 4 男和女作为key,显示到页面的内容 5 --%> 6 <s:radio name="gender1" list="#{'1':'男','0':'女'}" />