struts2 OGNL表达式

五、OGNL简介(非常重要)

      1、什么是OGNL

                            OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个单独的开源项目。 Struts2框架使用OGNL作为默认的表达式语言。

      2、OGNL的功能

                   前提:OGNLstruts2整合的一个开源项目,所以在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()"/>使用普通字符串调用了获取长度的方法
jsp

                             (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()" />
jap

                            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/>
jsp                              

                            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':'女'}" />
jsp

                 

                                             

原文地址:https://www.cnblogs.com/soficircle/p/7062231.html