80Struts2 OGNL表达式语言.docx
《80Struts2 OGNL表达式语言.docx》由会员分享,可在线阅读,更多相关《80Struts2 OGNL表达式语言.docx(12页珍藏版)》请在冰豆网上搜索。
80Struts2OGNL表达式语言
第80章Struts2OGNL表达式语言
本章通过一个示例程序,学习使用对象-图形导航语言(OGNL)的不同语法。
OGNL表达式语言简单而强大。
使用OGNL表达式语言辅助访问存储位于ActionContext内的ValueStack中的值。
80.1访问数组示例程序
首先,我们来看一看怎样使用OGNL访问一个String变量数组。
80.1.1Action类
在Action类中,我们创建一个字符串数组,并对它进行初始化。
如下所示:
SampleArrayAction.java
packagemon.action;
publicclassSampleArrayAction{
privateString[]sampleArray=newString[]{“item1”,”item2”,”item3”};
publicStringexecute()throwsException{
return“success”;
}
publicString[]getSampleArray(){
returnsampleArray;
}
publicvoidsetSampleArray(String[]sampleArray){
this.sampleArray=sampleArray;
}
}
80.1.2JSP页面
一个普通的jsp,使用OGNL表达式语言访问数组值。
sampleArrayPage.jsp
<%@pagecontentType="text/html;charset=UTF-8"%>
<%@taglibprefix="s"uri="/struts-tags"%>
OGNL访问数组示例
sampleArray:
propertyvalue=”sampleArray”/>
sampleArray.length:
propertyvalue=”sampleArray.length”/>
sampleArray[0]:
propertyvalue=”sampleArray[0]”/>
[0].sampleArray:
propertyvalue=”[0].sampleArray”/>
top.sampleArray:
propertyvalue=”top.sampleArray”/>
80.1.3struts.xml
在struts.xml中进行配置,将所有的东西连接在一起。
struts.xml
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
"http:
//struts.apache.org/dtds/struts-2.0.dtd">
pages/sampleArrayPage.jsp
80.1.4运行测试
访问http:
//localhost:
8080/Struts2Example/sampleArrayAction.action
因为我们的对象位于ValueStack顶端,所以我们能使用[0]表示法来访问它。
如果我们的对象位于自顶而下的第二个位置,那么我们可以使用[1]表示法来访问它。
我们也可以使用top关键字达到同样的效果。
top返回ValueStack顶端的值。
80.2访问List示例程序
现在,我们来看一看怎样使用OGNL表达式语言访问一个ArrayList。
80.2.1Action类
在Action类中,我们创建并初始化一个ArrayList。
如下所示:
SampleListAction.java
packagemon.action;
importjava.util.ArrayList;
importjava.util.List;
publicclassSampleListAction{
privateListsampleList=newArrayList();
{
sampleList.add(“listItem1”);
sampleList.add(“listItem2”);
sampleList.add(“listItem3”);
}
publicStringexecute()throwsException{
return“success”;
}
publicListgetSampleList(){
returnsampleList;
}
publicvoidsetSampleList(ListsampleList){
this.sampleList=sampleList;
}
}
80.2.2JSP页面
一个普通的jsp,使用OGNL表达式语言访问ArrayList的值。
sampleListPage.jsp
<%@pagecontentType="text/html;charset=UTF-8"%>
<%@taglibprefix="s"uri="/struts-tags"%>
OGNL访问List示例
sampleList:
propertyvalue=”sampleList”/>
sampleList.size:
propertyvalue=”sampleList.size”/>
sampleList[0]:
propertyvalue=”sampleList[0]”/>
80.2.3struts.xml
在struts.xml中进行配置,将所有的东西连接在一起。
struts.xml
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
"http:
//struts.apache.org/dtds/struts-2.0.dtd">
pages/sampleArrayPage.jsp
pages/sampleListPage.jsp
80.2.4运行测试
访问http:
//localhost:
8080/Struts2Example/sampleListAction.action
80.3访问List示例程序
现在,我们来看一看怎样使用OGNL表达式语言访问一个Map。
80.3.1Action类
在Action类中,我们创建并初始化一个HashMap。
如下所示:
SampleMapAction.java
packagemon.action;
importjava.util.HashMap;
importjava.util.Map;
publicclassSampleMapAction{
privateMapsampleMap=newHashMap();
privateStringcarMake;
{
sampleMap.put(newInteger
(1),“one”);
sampleMap.put(newInteger
(2),“two”);
sampleMap.put(newInteger(3),“three”);
}
publicStringexecute()throwsException{
return“success”;
}
publicMapgetSampleMap(){
returnsampleMap;
}
publicvoidsetSampleMap(MapsampleMap){
this.sampleMap=sampleMap;
}
publicStringgetCarMake(){
returncarMake;
}
publicvoidsetCarMake(StringcarMake){
this.carMake=carMake;
}
}
80.3.2JSP页面
一个普通的jsp,使用OGNL表达式语言访问Map的值。
sampleMapPage.jsp
<%@pagecontentType="text/html;charset=UTF-8"%>
<%@taglibprefix="s"uri="/struts-tags"%>
OGNL访问Map示例
sampleMap[1]:
propertyvalue=”sampleMap[1]”/>
sampleMap.size:
propertyvalue=”sampleMap.size”/>
selectlist=”#{‘make1’:
’福特,’make2’:
’本田’,’make3’:
’丰田’}”name=”carMake”label=”Select”>
select>
80.3.3struts.xml
在struts.xml中进行配置,将所有的东西连接在一起。
struts.xml
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
"http:
//struts.apache.org/dtds/struts-2.0.dtd">
pages/sampleArrayPage.jsp
pages/sampleListPage.jsp
pages/sampleMapPage.jsp
80.3.4运行测试
访问http:
//localhost:
8080/Struts2Example/sampleMapAction.action
80.4访问对象属性示例程序
最后,我们来看一看怎样使用OGNL表达式语言访问一个User对象的name属性。
80.4.1Action类
在Action类中,我们创建并初始化一个User对象。
如下所示:
SampleObjectAction.java
packagemon.action;
publicclassSampleObjectAction{
privateUseruser=newUser();
{
user.setName(“学Struts2”);
}
publicStringexecute()throwsException{
return“success”;
}
publicStringgetQuote(){
return“不要考虑,开始行动”;
}
publicUsergetUser(){
returnuser;
}
publicvoidsetUser(Useruser){
this.user=user;
}
}
User类的定义如下:
packagemon.model;
publicclassUser{
privateStringname;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
}
80.4.2JSP页面
一个普通的jsp,使用二级(层)OGNL表达式语言访问user的name属性。
sampleObjectPage.jsp
<%@pagecontentType="text/html;charset=UTF-8"%>
<%@taglibprefix="s"uri="/struts-tags"%>
OGNL访问对象属性示例
user.namepropertyvalue=”user.name”/>
也可以在action类中调用一个方法。
如下所示:
quote():
propertyvalue=”quote”/>
80.4.3struts.xml
在struts.xml中进行配置,将所有的东西连接在一起。
struts.xml
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
"http:
//struts.apache.org/dtds/struts-2.0.dtd">
pages/sampleArrayPage.jsp
pages/sampleListPage.jsp
pages/sampleMapPage.jsp
pages/sampleObjectPage.jsp
80.4.4运行测试
访问http:
//localhost:
8080/Struts2Example/sampleObjectAction.action
2011-10-20