全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Struts2 OGNL表达式实例详解

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小时内与您取得联系。