Struts2OGNL表达式实例详解

Object Graph Navigation Language:对象图导航语言,就是用点来访问成员变量

广德网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、响应式网站开发等网站项目制作,到程序开发,运营维护。创新互联公司自2013年创立以来到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司

 

例1:

struts.xml:

 
   
  /ognl.jsp 
   
 

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(); 
  } 
} 

访问链接:

OGNL

结果界面:

OGNL SUCCESS!!
  1. 访问值栈中的action的普通属性1=
  2. 访问值栈中的action的普通属性2=

结果显示:

OGNL SUCCESS!!

访问值栈中的action的普通属性1=jack

访问值栈中的action的普通属性2=111

[Debug]
ps:点击[Debug]可以查看到栈值中有username与password

例2:

struts.xml:

 
  
   /ognl.jsp 
   
 

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属性

OGNL2

(只有你传user.XXXX才能构造)

结果页面:

<%@taglib uri="/struts-tags" prefix="s" %> 
 
 
  
   
  My JSP 'ognl.jsp' starting page 
  
  
  
  OGNL SUCCESS!!
  1. 访问值栈中对象的普通属性(get set 方法 ):
    user-age:|

显示结果:

OGNL SUCCESS!!

访问值栈中对象的普通属性(get set 方法 ):

user-age:21|21

[Debug]

点击[Debug]可以查看到栈值中有user对象的存在

例3:

struts.xml

 
   
   /ognl.jsp 
  
 

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属性

OGNL3

结果页面:

  • 访问值栈中对象的普通属性(get set 方法 ):
    cat-friend-name:
  • 结果:

    访问值栈中对象的普通属性(get set 方法 ):

    cat-friend-name:littleBoy

    观察[Debug],发现只有cat在值栈中,说明通过cat联系到dog,取得dog中的属性

    访问cat方法:

    OGNL4

    结果页面:

  • 访问值栈中对象的普通方法:
    cat-miaomiao:
  • 结果:

    访问值栈中对象的普通属性:

    cat-miaomiao:miaomiao

    访问action的普通方法:

    OGNL5

    结果页面:

  • 访问值栈中action的普通方法:
    action-m():
  • 结果:

    访问值栈中acion的普通方法:

    action-m():Hello

    总结

    以上就是本文关于Struts2 OGNL表达式实例详解的全部内容,希望对大家有所帮助。有什么问题可以随时留言,欢迎大家交流讨论。


    文章题目:Struts2OGNL表达式实例详解
    网页链接:http://myzitong.com/article/jiiioj.html