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

例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才能构造)

结果页面:

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表达式实例详解的全部内容,希望对大家有所帮助。有什么问题可以随时留言,欢迎大家交流讨论。

java ognl表达式 与struts2标签_Struts2 OGNL表达式实例详解相关推荐

  1. java显示参数,Java中的隐式参数和显示参数实例详解

    在学习java的过程中,我们会遇到许多的问题.下面我们就来看看什么是隐式参数和显示参数. 显式参数,就是平时见到的在方法名括号中间的参数,就是所谓能看得见的参数www.cppcns.com. 隐式参数 ...

  2. java的websocket_java 实现websocket的两种方式实例详解

    一.介绍 1.两种方式,一种使用tomcat的websocket实现,一种使用spring的websocket 2.tomcat的方式需要tomcat 7.x,JEE7的支持. 3.spring与we ...

  3. java打印菱形图案_java打印出菱形图案实例详解

    第一步:首先对图像进行解析 想要打印该图形必须要进行多层循环嵌套,分两个部分进行打印. 第一部分为上半部分前四行,他们是递增的关系,后半部分后三行为递减关系,由此可以得出我们需要写两个打的循环.并且由 ...

  4. websocket java 例子_java 实现websocket的两种方式实例详解

    目录 一.介绍 1.两种方式,一种使用tomcat的websocket实现,一种使用spring的websocket 2.tomcat的方式需要tomcat 7.x,JEE7的支持. 3.spring ...

  5. java多态讲解例子_Java多态性定义与用法实例详解

    本文实例讲述了Java多态性定义与用法.分享给大家供大家参考,具体如下: 多态性是通过: 1 接口和实现接口并覆盖接口中同一方法的几不同的类体现的 2 父类和继承父类并覆盖父类中同一方法的几个不同子类 ...

  6. java 工厂 单例_java 单例模式和工厂模式实例详解

    单例模式根据实例化对象时机的不同分为两种:一种是饿汉式单例,一种是懒汉式单例. 私有的构造方法 指向自己实例的私有静态引用 以自己实例为返回值的静态的公有的方法 饿汉式单例 public class ...

  7. java 画弧线,利用Android画圆弧canvas.drawArc()实例详解

    前言 在学习android中图形图像处理技术这部分内容时,对绘制圆弧函数canvas.drawArc()的用法.参数含义及画图原理很是不理解,在网上搜索了一些,加上自己的理解,在此做个小总结,下面来一 ...

  8. java web初始化实例_Struts2中实现web应用的初始化实例详解

    Struts2中实现web应用的初始化实例详解 在JavsSE中,main方法为应用提供了入口,而在Android中,我们可以使用Application对于整个应用的生命周期进行管理,那么在基于Str ...

  9. WEB后台--邮件和短信业务实现(包括Java一键实现、封装和异步)以及原理详解

    本来就打算针对一些固定的特别点的业务(QQ与网易邮件.拦截设计.短信.定时器等等)来进行记录以及解析原理,这些会比较零散记录在JavaWeb的分类里面,感兴趣的童鞋可以去看下. 有人问为什么要邮件短信 ...

最新文章

  1. [翻译]ASP.NET MVC 3 开发的20个秘诀(十二)[20 Recipes for Programming MVC 3]:缩放图片尺寸创建缩略图...
  2. 基于用户投票的排名算法(一):Delicious和Hacker
  3. 【Android 逆向】Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | 使用 Makefile 构建 Android 平台 NDK 应用 )
  4. html如何禁止用户缩放,html如何禁止页面缩放
  5. java socket 工具_java Socket简易聊天工具
  6. python dll load failed_python安装MySQLdb的问题 ImportError: DLL load failed
  7. Opencv之python使用zxing识别二维码
  8. 设计模式(三)结构型模式
  9. 区块链开发(一)搭建基于以太坊go-ethereum的私有链环境
  10. weka软件使用问题解决(一)
  11. php deprecated,PHP Deprecated: Function eregi() is deprecated解决方法
  12. quickchm乱码问题
  13. 将军赶路不追小兔—看完纪录片《百万富豪谷底翻身》
  14. mysql黑盒测试_黑盒测试记录二
  15. jQuery搜索高亮显示
  16. TP-link WR720N路由器刷入OpenWrt
  17. 微信小程序苹果iOS长按图片无法转发、发送给朋友、保存,它们无效的解决办法
  18. 最新深信服面试笔试题
  19. 微习惯瘦身,一天一个俯卧撑就够了吗?
  20. Windows+CentOS 7双系统(最完全攻略!!)-------囊括所有安装CentOS双系统的问题!

热门文章

  1. mac下ssh免密登陆远程服务器(linux)
  2. PHP利用Mysql锁解决高并发
  3. 【codeforces 798B】Mike and strings
  4. isNaN与parseInt/parseFloat
  5. 关于“只有静态常量整型数据成员才可以在类中初始化”
  6. 用函数刷新页面内容比刷新页面要好
  7. Win下的port forwarding
  8. 创业期的软件开发管理(一)
  9. Mr.J---重拾Ajax(四)-- 跨域
  10. selenium webdriver 实现Canvas画布自动化测试