Object Graph Navigation Language:对象图导航语言,就是用点来访问成员变量
<s:property value="cat.name"/>
例1:
struts.xml:
<package name="ognl" namespace="/ognl" extends="struts-default"> <action name="og1" class="cn.edu.hpu.action.OgnlAction1"> <result>/ognl.jsp</result> </action> </package>
OgnlAction1.java:
package cn.edu.hpu.action;
import com.opensymphony.xwork2.ActionSupport;
public class OgnlAction1 extends ActionSupport{
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
return super.execute();
}
}
访问链接:
<a href="<%=basePath%>ognl/og1?username=jack&&password=111" rel="external nofollow" >OGNL</a><br/>
结果界面:
OGNL SUCCESS!!<br/>
<ol>
<li>访问值栈中的action的普通属性1=<s:property value="username"/></li>
<li>访问值栈中的action的普通属性2=<s:property value="password"/></li>
</ol>
<s:debug></s:debug>
结果显示:
OGNL SUCCESS!!
访问值栈中的action的普通属性1=jack
访问值栈中的action的普通属性2=111
[Debug]
ps:点击[Debug]可以查看到栈值中有username与password
例2:
struts.xml:
<package name="ognl" namespace="/ognl" extends="struts-default"> <action name="user2" class="cn.edu.hpu.action.UserAction2" method="add"> <result name="success">/ognl.jsp</result> </action> </package>
UserAction2.java:
package cn.edu.hpu.action;
import cn.edu.hpu.mode.User;
public class UserAction2 {
private User user;
public String add(){
System.out.println("name="+user.getName());
System.out.println("age="+user.getAge());
return "success";
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
User.java:
package cn.edu.hpu.mode;
public class User {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
链接:
访问User属性
<a href="<%=basePath%>ognl/user2?user.name=tom&&user.age=21" rel="external nofollow" >OGNL2</a><br/>
(只有你传user.XXXX才能构造)
结果页面:
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>" rel="external nofollow" >
<title>My JSP 'ognl.jsp' starting page</title>
</head>
<body>
OGNL SUCCESS!!<br/>
<ol>
<li>访问值栈中对象的普通属性(get set 方法 ):
<br/>
user-age:<s:property value="user.age"/>|<s:property value="user['age']"/></li>
</ol>
<s:debug></s:debug>
</body>
</html>
显示结果:
OGNL SUCCESS!!
访问值栈中对象的普通属性(get set 方法 ):
user-age:21|21
[Debug]
点击[Debug]可以查看到栈值中有user对象的存在
例3:
struts.xml
<package name="ognl" namespace="/ognl" extends="struts-default"> <action name="cat1" class="cn.edu.hpu.ognl.OgnlAction2"> <result name="success">/ognl.jsp</result> </action> </package>
OgnlAction2.java:
package cn.edu.hpu.ognl;
import cn.edu.hpu.mode.Cat;
import com.opensymphony.xwork2.ActionSupport;
public class OgnlAction2 extends ActionSupport{
private Cat cat;
public Cat getCat() {
return cat;
}
public void setCat(Cat cat) {
this.cat = cat;
}
public String execute(){
return "success";
}
public String m(){
return "Hello";
}
}
Cat.java:
package cn.edu.hpu.mode;
public class Cat {
private Dog friend;
public Dog getFriend() {
return friend;
}
public void setFriend(Dog friend) {
this.friend = friend;
}
public String miaomiao(){
return "miaomiao";
}
}
Dog.java:
package cn.edu.hpu.mode;
public class Dog {
private String name;
public Dog(){
}
public Dog(String name){
super();
this.name=name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "dog:"+name;
}
}
链接:
访问Cat属性
<a href="<%=basePath%>ognl/cat1?cat.friend.name=littleBoy" rel="external nofollow" >OGNL3</a><br/>
结果页面:
<li>访问值栈中对象的普通属性(get set 方法 ):
<br/>
cat-friend-name:<s:property value="cat.friend.name"/></li>
结果:
访问值栈中对象的普通属性(get set 方法 ):
cat-friend-name:littleBoy
观察[Debug],发现只有cat在值栈中,说明通过cat联系到dog,取得dog中的属性
访问cat方法:
<a href="<%=basePath%>ognl/cat1" rel="external nofollow" rel="external nofollow" >OGNL4</a><br/>
结果页面:
<li>访问值栈中对象的普通方法:
<br/>
cat-miaomiao:<s:property value="cat.miaomiao()"/></li>
结果:
访问值栈中对象的普通属性:
cat-miaomiao:miaomiao
访问action的普通方法:
<a href="<%=basePath%>ognl/cat1" rel="external nofollow" rel="external nofollow" >OGNL5</a><br/>
结果页面:
<li>访问值栈中action的普通方法:
<br/>
action-m():<s:property value="m()"/></li>
结果:
访问值栈中acion的普通方法:
action-m():Hello
总结
以上就是本文关于Struts2 OGNL表达式实例详解的全部内容,希望对大家有所帮助。有什么问题可以随时留言,欢迎大家交流讨论。
# struts
# ognl
# struts2
# 的ognl表达式
# Struts2 通过ognl表达式实现投影
# 详解Struts2动态方法调用
# Struts2修改上传文件大小限制方法解析
# AjaxFileUpload+Struts2实现多文件上传功能
# struts2开发流程及详细配置
# struts+spring+hibernate三个框架的整合
# Struts2获取参数的三种方法总结
# 中有
# 可以查看
# 有什么
# 欢迎大家
# 可以随时
# 来访问
# Exception
# throws
# Override
# execute
# generated
# method
# TODO
# Auto
# getUsername
# return
# username
# password
# getPassword
# setPassword
相关文章:
怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
高防服务器租用如何选择配置与防御等级?
建站主机类型有哪些?如何正确选型
Python文件管理规范_工程实践说明【指导】
制作网站的基本流程,设计网站的软件是什么?
建站上市公司网站建设方案与SEO优化服务定制指南
电商网站制作公司有哪些,1688网是什么意思?
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
建站之星安装路径如何正确选择及配置?
如何在万网主机上快速搭建网站?
IOS倒计时设置UIButton标题title的抖动问题
建站主机助手选型指南:2025年热门推荐与高效部署技巧
制作网站外包平台,自动化接单网站有哪些?
浅析上传头像示例及其注意事项
如何快速查询网站的真实建站时间?
宝塔新建站点为何无法访问?如何排查?
高防服务器租用指南:配置选择与快速部署攻略
专业网站建设制作报价,网页设计制作要考什么证?
建站之星代理费用多少?最新价格详情介绍
c++怎么用jemalloc c++替换默认内存分配器【性能】
css网站制作参考文献有哪些,易聊怎么注册?
成都网站制作报价公司,成都工业用气开户费用?
网站微信制作软件,如何制作微信链接?
如何在腾讯云服务器上快速搭建个人网站?
如何通过商城自助建站源码实现零基础高效建站?
高防服务器租用首荐平台,企业级优惠套餐快速部署
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
如何实现建站之星域名转发设置?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
如何在服务器上三步完成建站并提升流量?
南平网站制作公司,2025年南平市事业单位报名时间?
建站之星如何实现五合一智能建站与营销推广?
如何通过多用户协作模板快速搭建高效企业网站?
如何在西部数码注册域名并快速搭建网站?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
小型网站建站如何选择虚拟主机?
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
如何获取开源自助建站系统免费下载链接?
建站之星好吗?新手能否轻松上手建站?
如何在阿里云通过域名搭建网站?
如何选择服务器才能高效搭建专属网站?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
如何快速启动建站代理加盟业务?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
深圳网站制作培训,深圳哪些招聘网站比较好?
如何在IIS管理器中快速创建并配置网站?
微信h5制作网站有哪些,免费微信H5页面制作工具?
建站之星免费模板:自助建站系统与智能响应式一键生成
*请认真填写需求信息,我们会在24小时内与您取得联系。