<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="x-ua-compatible" content="ie=7" />
<title>Struts2的OGNL表达式语言 - 日志 - xyang81 - OPEN开源家园 - Powered by UCenter Home</title>
<script language="javascript" type="text/javascript" src="source/script_cookie.js"></script>
<script language="javascript" type="text/javascript" src="source/script_common.js"></script>
<script language="javascript" type="text/javascript" src="source/script_menu.js"></script>
<script language="javascript" type="text/javascript" src="source/script_ajax.js"></script>
<script language="javascript" type="text/javascript" src="source/script_face.js"></script>
<script language="javascript" type="text/javascript" src="source/script_manage.js"></script>
<style type="text/css">
@import url(template/default/style.css);
@import url(template/default/blog.css);
@import url(template/blue/style.css);
</style>
<link rel="shortcut icon" href="image/favicon.ico" />
<link rel="edituri" type="application/rsd+xml" title="rsd" href="xmlrpc.php?rsd=24" />
</head>
<body>
<div id="append_parent"></div>
<div id="ajaxwaitid"></div>
<div id="header">
<div class="headerwarp">
<h1 class="logo"><a href="index.php"><img src="template/blue/image/logo.gif" alt="OPEN开源家园" /></a></h1>
<ul class="menu">
<li><a href="index.php">首页</a></li>
<li><a href="network.html">随便看看</a></li>
<li><a href="help.php">帮助</a></li>
</ul>
<div class="nav_account">
<a href="do.php?ac=c5ff3b8cb56701b3418e6222163624bb" class="login_thumb"><img src="http://www.open-open.com/ucenter/data/avatar/000/00/00/00_avatar_small.jpg" onerror="this.onerror=null;this.src='http://www.open-open.com/ucenter/images/noavatar_small.gif'"></a>
欢迎您<br>
<a href="do.php?ac=kio4fs3w322">登录</a> |
<a href="do.php?ac=c5ff3b8cb56701b3418e6222163624bb">注册</a>
</div>
</div>
</div>
<div id="wrap">
<div id="main">
<div id="app_sidebar">
<div class="bar_text">
<form id="loginform" name="loginform" action="do.php?ac=kio4fs3w322&ref" method="post">
<input type="hidden" name="formhash" value="c49c1320" />
<p class="title">登录站点</p>
<p>用户名</p>
<p><input type="text" name="username" id="username" class="t_input" size="15" value="" /></p>
<p>密码</p>
<p><input type="password" name="password" id="password" class="t_input" size="15" value="" /></p>
<p><input type="checkbox" id="cookietime" name="cookietime" value="315360000" checked /><label for="cookietime">记住我</label></p>
<p>
<input type="submit" id="loginsubmit" name="loginsubmit" value="登录" class="submit" />
<input type="button" name="regbutton" value="注册" class="button" onclick="urlto('do.php?ac=c5ff3b8cb56701b3418e6222163624bb');">
</p>
</form>
</div>
</div>
<div id="mainarea">
<div class="c_header a_header">
<div class="avatar48"><a href="space-24.html"><img src="http://www.open-open.com/ucenter/data/avatar/000/00/00/24_avatar_small.jpg" onerror="this.onerror=null;this.src='http://www.open-open.com/ucenter/images/noavatar_small.gif'"></a></div>
<a class="r_option" href="http://www.baidu.com/s?wd=ognl+%B1%ED%B4%EF%CA%BD+%25+%24+%23+%C7%F8%B1%F0&rsv_bp=0&rsv_spt=3&inputT=10137">« 返回上一页</a>
<p style="font-size:14px">xyang81的日志</p>
<a href="space-24.html" class="spacelink">xyang81的主页</a>
<span class="pipe">»</span> <a href="space-24-do-blog-view-me.html">TA的所有日志</a> <span class="pipe">»</span> <a href="space-24-do-blog-id-100.html">查看日志</a></div>
<script type="text/javascript" charset="utf-8" src="source/script_calendar.js"></script>
<script type="text/javascript" src="image/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="image/syntaxhighlighter/scripts/shBrushJScript.js"></script>
<script type="text/javascript" src="image/syntaxhighlighter/scripts/shBrushCSharp.js"></script>
<script type="text/javascript" src="image/syntaxhighlighter/scripts/shBrushCss.js"></script>
<script type="text/javascript" src="image/syntaxhighlighter/scripts/shBrushJava.js"></script>
<script type="text/javascript" src="image/syntaxhighlighter/scripts/shBrushPhp.js"></script>
<script type="text/javascript" src="image/syntaxhighlighter/scripts/shBrushPython.js"></script>
<script type="text/javascript" src="image/syntaxhighlighter/scripts/shBrushRuby.js"></script>
<script type="text/javascript" src="image/syntaxhighlighter/scripts/shBrushSql.js"></script>
<script type="text/javascript" src="image/syntaxhighlighter/scripts/shBrushXml.js"></script>
<link type="text/css" rel="stylesheet" href="image/syntaxhighlighter/styles/SyntaxHighlighter.css"/>
<script language="javascript">
window.onload = function () {
dp.SyntaxHighlighter.ClipboardSwf = '/flash/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
}
</script>
<div class="entry" style="padding:0 0 10px;">
<div class="title">
<h1>Struts2的OGNL表达式语言</h1>
<span class="hot"><em>热</em>2</span><span class="gray">已有 710 次阅读</span> <span class="gray">2010-08-12 16:11</span>
<a href="space-24-do-tag.html">标签</a>:
<a href="space-24-do-tag-id-123.html">Struts2</a>
<a href="space-24-do-tag-id-128.html">OGNL</a>
<a href="space-24-do-tag-id-129.html">语言</a>
<a href="space-24-do-tag-id-116.html">表达</a>
</div>
<div id="blog_article" class="article ">
<div class="resizeimg">
<div class="resizeimg2">
<div class="resizeimg3">
<div class="resizeimg4">
<DIV>
<P><FONT face=宋体><FONT size=2><SPAN lang=EN-US>1.OGNL</SPAN>表达式语言</FONT></FONT><SPAN lang=EN-US><BR><FONT face=宋体 size=2>OGNL</FONT></SPAN><FONT face=宋体 size=2>是<SPAN lang=EN-US>Object Graphic Navigation Language</SPAN>(对象图导航语言)的缩写,它是一个开源项目。<SPAN lang=EN-US> Struts 2</SPAN>框架使用<SPAN lang=EN-US>OGNL</SPAN>作为默认的表达式语言。</FONT></P>
<P><FONT face=宋体 size=2>相对<SPAN lang=EN-US>EL</SPAN>表达式,它提供了平时我们需要的一些功能,如:</FONT><SPAN lang=EN-US><BR></SPAN><FONT face=宋体 size=2>支持对象方法调用,如<SPAN lang=EN-US>xxx.sayHello()</SPAN>;</FONT><FONT face=宋体><FONT size=2><SPAN lang=EN-US> <BR></SPAN>支持类静态方法调用和值访问,表达式的格式为<SPAN lang=EN-US>@[</SPAN>类全名(包括包路径)<SPAN lang=EN-US>]@[</SPAN>方法名<SPAN lang=EN-US> | </SPAN>值名<SPAN lang=EN-US>]</SPAN>,例如:<SPAN lang=EN-US>@java.lang.String@format('foo %s', 'bar')</SPAN>或<SPAN lang=EN-US>@cn.itcast.Constant@APP_NAME</SPAN>;</FONT></FONT><FONT face=宋体><FONT size=2><SPAN lang=EN-US><BR></SPAN>操作集合对象</FONT></FONT></P>
<P><FONT face=宋体><FONT size=2><SPAN lang=EN-US>Ognl </SPAN>有一个上下文(<SPAN lang=EN-US>Context</SPAN>)概念,说白了上下文就是一个<SPAN lang=EN-US>MAP</SPAN>结构,它实现了<SPAN lang=EN-US>java.utils.Map</SPAN>接口,在<SPAN lang=EN-US>Struts2</SPAN>中上下文(<SPAN lang=EN-US>Context</SPAN>)的实现为<SPAN lang=EN-US>ActionContext</SPAN>,下面是上下文(<SPAN lang=EN-US>Context</SPAN>)的结构示意图</FONT></FONT><SPAN lang=EN-US><BR><FONT face=宋体 size=2>2.</FONT></SPAN><FONT face=宋体><FONT size=2>访问上下文(<SPAN lang=EN-US>Context</SPAN>)中的对象需要使用<SPAN lang=EN-US>#</SPAN>符号标注命名空间,如<SPAN lang=EN-US>#application</SPAN>、<SPAN lang=EN-US>#session</SPAN></FONT></FONT></P>
<P><FONT face=宋体 size=2>另外<SPAN lang=EN-US>OGNL</SPAN>会设定一个根对象(<SPAN lang=EN-US>root</SPAN>对象),在<SPAN lang=EN-US>Struts2</SPAN>中根对象就是<SPAN lang=E