IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> strust参数传递优先级,ognl -> 正文阅读

[Java知识库]strust参数传递优先级,ognl

前言:

在上一次课中,讲到了strust传递参数的三种方式,分别是实现ModelDriver接口和给属性提供set方法,以及给对象提供set方法,上一次在测试时是用属性名都不同的,那么如果属性名和对象的属性有重合,那个参数将会被赋给谁。

代码:

 package com.csf.web;

import com.csf.entity.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class TestAction extends ActionSupport implements ModelDriven<User>{

	private User user =new User();
	@Override
	public User getModel() {
		// TODO Auto-generated method stub
		return user;
	}
	
	private String name;
	
    public String getname() {
		return name;
	}

	public void setname(String name) {
		this.name = name;
	}

	public String test() {
		System.out.println("testing...");
		return "toIndex";
	}
	
	public String list() {
		System.out.println("listing...");
		return "toList";
	}
	
	public String a() {
		System.out.println(user);
		return "toIndex";
	}
	
	public String b() {
		System.out.println(name);
		return "toIndex";
	}

}

注:在user类中,是有name属性的,而子控制器中也有name属性。

结果是只给user对象的name属性赋了值,。原因是在strust中,实现ModelDriver接口得到的对象的赋值,取值优先级要高于其他的属性。

然后这就引入:OGNL全称是Object Graph Navigation Language(对象图导航语言),

1、它是一门表达式语言,主要用来设置和获取Java对象的属性。

2、在ognl中,有一个ognlContext(ognl上下文)可以理解为ognl的容器,并且这个类实现了Map接口,所以允许通过键值对的方式存取值。

3、在ognl中的对象,有根对象和非根对象的区别,根对象只能存在一个,可以通过ognlContext.setRoot(value)设置跟对象,通过ognlContext.getRoot()获取跟对象。在存取值时,跟对象具有默认最高优先级。非根对象就是普通对象。

4、ognl符合值栈的存取值方式(先进后出),并且取到为止,会从上至下遍历容器取到第一个值退出,如果没取到,会一直往下。

在strust中的ognl结构:

root标注为跟对象。

值栈:是一种存取值得方式,可以理解为在一个容器中,最先放入的,在最底端之后依次往上堆(压栈push),取值则是从上往下(弹栈pop)。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-10-17 11:52:07  更:2021-10-17 11:54:08 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:41:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码