传智播客--struts2.x之OGNL

virtuoso根据原理图绘制版图并联接_virtuoso画原理图 Virtuoso Schematic Editor 电路仿真一、Virtuoso Schematic Editor 实验目的:掌握电原理图(schematic)设计输入方法。 [1]启动 IC Design 软件 启动 软件: 开机后运行......2.绘制原理图 新建工程后打开的是默认的原理图文件 SCHEMATIC1 PAG...存盘 完成原理图的绘制后,将原理图存盘.. 用 Check... 阅读详情

今天是struts2的重点了,OGNL的讲解了.把这个学习好了,struts2就能掌握好一大半了.嘿嘿,不过得好好努力学习和练习代码了.

1.OGNL的基本概念
OGNL(对象图导航语言,Object Graph Navigation Language)是一种用于从ValueStack对象与其关联的Context上下文中获取的值的表达式
基本语法:
1)可以用#key的形式访问OGNL Context对象中的各个key对应的对象,并可以采用点(.)操作符进行多级导航调用对象的属性和方法,例 如,#application、#session.attr1、#key1.sayHello();对于map对象,map.attr不是 map.getAttr()方法,而是表示map.get(“attr1”)。 
2)如果要访问根对象的属性或方法,则可以省略#key,直接访问该对象的属性和方法。 struts2修改了OGNL表达式的默认属性访问器,它不是直接访问根对象ValueStack的属性或方法,而是在ValueStack内部的堆栈中 所有对象上逐一查找该属性或方法,搜索顺序是从栈顶对象开始寻找,依次往下,直到找到为止,例如,sayHello()表示调用堆栈中某个对象的 sayHello()方法。
3)如果引用名前面没有#,且valueStack中存储的各个对象没有该属性,则把该名称当作 Context对象中的某个key来检索对应的对象,但这种方式不支持点(.)操作符。
4)#parameter.id[0]”或”#parameter[‘id’][0]”访问名称为id的请求参数。
 
2.Locale的获取
先从request中得到valueStack,再从 ValueStack获得context,再从context中用[]的方式获取。
支持类静态方法调用和属性访问
表达式的格式为@[类全名(包括包路径)]@[方法名 |  值名],
例如:@java.lang.String@format(‘foo %s’, ‘bar’)或@cn.itcast.Constant@APP_NAME;
session.attribute[“foo”]等效于 session.getAttribute(“foo”)方法。
 
3.OGNL表示大整数
<s:property value="%{1111111111111111111111H.bitLength()}"/> ,而在java中则不能直接写 1111111111111111111111这么大的整数。
操作:
<s:property value=“110H.intValue().(#this<112?#this*2:#this/2)”/>
 
4.Struts2 特殊功能
[n]表示从原来堆栈中截取一个子堆栈并对这个子堆栈进行操作,子堆栈为原始堆栈的栈顶开始的索引号为n的元素一直到栈底.
例如,[1].age表示从原始堆栈中的索引号为1的对象(即第二个对象)开始查找age属性,以找到的第一个为准。
top表示 ValueStack栈顶的对象,[0].top和top表示同一个对象。
 
5.集合对象的操作
{}创建List集合
<s:set value=“{1,3,5,7}” var=“list”/>
创建数组
<s:set value=“new int[]{1,3,5,7}” var=“array”/>
<s:set value=“new int[4]” var=“array”/>
#{}创建Map集合对象
各个元素之间用逗号分隔,元素的key和value之间采用冒号分隔
<s:set value=“#{‘lhm’:96,’zxx’:93,’xpc’:97}”
<s:set value=“#@java.util.LinkedHashMap@{‘lhm’:96,’zxx’:93,’xpc’:97}”
in与 not in操作符用于判断某个值是否位于某个集合中。
集合伪属性:size/isEmpty/iterator/keys/values /next/hasNext
 
6.投影
集合中的每个元素去进行运算,各个元素运算的结果组成一个新集合,新集合中的元素个数与原始集合中的元素个数相同。
<s:property value=“persons.{name}”/>
<s:property value=“{5,3,2}.{#this*2}”/>
 
7.过滤
集合中的每个元素去进行布尔运算,运算的结果为 true,则将该元素保存到新集合中去。
?:获得所有符合逻辑的元素。
<s:property value=“{5,3,2}.{? #this }”/>
^:获得符合逻辑的第一个元素。
<s:property value=“{5,3,2}.{^ #this>3 }”/>
$:获得符合逻辑的最后一个元素。
<s:property value=“{5,3,2}.{$ #this>2 }”/>
 
8.类型转换
转换成boolean类型
    整数0转换为false
    值为0的字符转化为false
    Null对象转化为false
投影和选择操作符 (e1.{e2} and e1.{?e2})前面的内容会被转换成集合
    Map会被转化成其values属性返回的集合
    数字会被转换成从0开始到比该数字小1的所有数字的集合。
    单个对象被转换成仅仅只含有该对象的集合。
 
9.在配置文件中使用OGNL
在struts2的各种配置文件中也可以使用OGNL,只需要将OGNL表达式套在${}中,即${ognl表达式}。

从传统业务到 AI Skill:产品经理也能看懂的能力改造指南(含完整案例) 阅读详情

相关推荐

80、编程学习资源与x86知识全解析

本文详细介绍了编程学习中多个领域的优秀书籍和博客资源,涵盖逆向工程、C/C++、x86/x86-64架构、ARM、汇编语言、Java、UNIX、密码学等多个方向。同时,深入解析了x86架构的核心知识,包括术语、通用寄存器、FPU寄存器、SIMD寄存器、调试寄存器以及常用指令的使用方法和操作步骤。通过本文,读者可以系统地掌握底层编程知识,并应用于逆向工程、系统开发和性能优化等领域。

tree的博客 206

传智播客--struts2.x的ActionContext,ValueStack和常用标签介绍

struts2学习一天了.张老师讲的太细太深了.呵呵,课也在网上直播了.听的真的好过瘾啊.果然是名不虚传啊.讲的那么深,对刚刚接触struts2接受起来还真得下点功夫啊.1.ActionContext封装Action所需的环境信息和数据ActionContext提供了各种针对ValueStack关联的Context的便利操作方法:put()方法和get()

图画hadoop 1110

YOLOv11【第三章:高阶应用与落地篇·第7节】多任务联合训练(Multi-Task Learning):检测+分割+关键点三头并进!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 679

Struts2传智播客笔记7)

OGNL表达式语言 OGNLObject Graphic Navigation Lanaguage(对象图导航语言)的缩写,它是一个开源项目。Struts2框架使用OGNL作为默认的表达式语言。 相对EL表达式,它提供了平时我们需要的一些功能,如: 1、支持对象方法调用 2、支持类静态方法调用和值访问,表达式的格式为 @[类全名(包括包路径)]@[方法名|值名],例如:java.lan

com185272358的专栏 1234

传智播客——OGNL表达式语言

今天黎老师给我们讲OGNL表达式语言,他讲过一遍我们几乎掌握80%,他讲得通俗易懂! 1.OGNL表达式语言 OGNLObject Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目。 Struts 2框架使用OGNL作为默认的表达式语言。 相对EL表达式,它提供了平时我们需要的一些功能,如: 支持对象方法调用,如xxx.sayHel...

q123inhao的博客 124

传智播客--struts2.x的常量配置,动态方法调用,通配符,拦截器,ValueStack和标签

我的struts1.x学的不错.struts2.x的学习就很有信心了.不过大家要知道,struts1.x和struts2.x是两回事哦.struts2.x和struts1.x完全没有关系.也不是什么升级版的.struts2.x是从另一个框架演变来的.好了,开始我们今天的总结吧.1.Struts2入门之HelloWorld编写不依赖任何三方包的Action类按照MV

图画hadoop 2309

struts2.X心得11--struts2中的国际化

总结: 国际化的使用,有四种方式或常用格式,第一种就是全局的国际化使用,在src路径下配置三个全局的配置文件,比如有中文、英文、和默认的,格式分别是baseName_language_country.properties、baseName.properties;第二种是局部国际化使用,即为某一模块配置一个国际化资源文件,适合开发大型应用时,格式为在改模块的包下,或指定包路径下,一般在action

ykblog.github.io 1923

Struts2个人小结(主要依据传智播客的视频)

为什么80%的码农都做不了架构师?>>> ...

weixin_34194359的博客 128

传智播客struts2(6)-数据校验、数据转换与文件上传

struts2并不仅仅只有前面所写的这点内容,不过本人又不是写书,加这篇已经写了六篇,对得起观众了(咳咳。。如果有的话。。。)~~~另外,要强调的是,struts2OGNL表达式功能其实无比强大,远不止前面写的那一点点皮毛,开发时如果希望能将struts2的功能运用得得心应手的话,还是要多看文档,多实践的,当然最好的捷径是--来传智播客,这边的授课老师已经把官方文档过了一遍,所以可以省却我们自学

那一抹云 1209

struts2的概述和开发struts2需要的jar文件

一、struts2的概述   Struts2是一个用来开发mvc应用程序的框架,它提供了web应用程序开发过程中的一些常见问题的解决方案:       1】.struts2=struts1+webwork 1和2没有本质的关系        2.对页面导航活动进行管理。        3】.对来自用户的输入数据进行合法性验证         4】.统一的布局       5】.

IT_COOKIE_SAM的博客 619

Java开源在线考试系统怎么选?从技术选型到落地部署的完整指南

Java开源在线考试系统怎么选?本文从技术选型、核心功能、部署运维、二次开发等维度,梳理了Java开源在线考试系统的选型要点。

麦塔在线考试培训系统 355

大数据 之 Snappy

【代码】大数据 之 Snappy。

zhixingheyi_tian的博客 188

Spring WebFlux 适配达梦新方案|dm‑r2dbc:Netty 异步传输的实验性 R2DBC 驱动

dm‑r2dbc 是面向达梦 DM8 的实验性 R2DBC 驱动,混合架构:Netty 异步网络传输层 + JDBC 驱动协议编解码复用。核心思路:不去逆向达梦私有协议二进制报文,直接复用达梦 JDBC 驱动内部已经成熟的编解码逻辑,通过反射替换 JDBC 内部默认阻塞 Socket 传输实现,替换为 Netty NIO 异步通道,实现真正异步非阻塞网络 IO。

jinyuttt的专栏 299

Spring AI RAG管道构建与优化

<think>我们只需要根据给定的内容生成摘要(≤150字)。给定内容较长,但核心是Spring AI RAG管道构建与优化,涉及文档加载、分割、嵌入、存储、检索、生成等。摘要应高度概括。 注意用户要求“根据以下内容,生成≤150字的文章摘要”。内容提供了代码等细节,但摘要需抓住要点。 写出摘要,字数≤150。</think>摘要:本文深入讲解Spring AI RAG管道的构建与优化,涵盖文档加载、分割、嵌入、存储、检索到生成的全流程。详细展示了多源文档加载(PDF、网页、JSON)、多种分割策略(按页、

BADAO_LIUMANG_QIZHI的博客 224

41面向对象(高级)-抽象类

当父类的某些方法,需要声明,但是又不确定如何实现时,可以将其声明为抽象方法,那么这个类就是抽象类。

weixin_52770734的博客 380

商超智能运营如何落地?从系统架构到实战避坑的完整技术路径

3. **多端交互展示层**:需覆盖顾客使用的**小程序、APP及H5公众号**,以及员工使用的管理后台。答:在应用层引入**适配器模式**。在项目启动时,应强制要求供应商或自研团队产出**部署文档**(含环境变量清单)和**二次开发文档**(含核心流程时序图),确保后续维护不受限于个人。- **多租户插件**:MyBatis Plus的`TenantLineInnerInterceptor`可实现SQL层面的自动拼接`store_id`条件,防止开发者因SQL编写疏漏导致的数据越权。

weixin_56812938的博客 539

Java的AI生成式编程工具落地流程

针对Oracle数据库操作场景,让AI自动生成MyBatis-plus的CRUD代码,同时适配Oracle特有的JSON_TABLE、XMLTABLE等高级函数语法,避免手写SQL的语法错误。利用AI的全链路生成能力,快速搭建AI问答机器人、智能风控等Java AI应用原型,整合Stanford CoreNLP、Elasticsearch等组件,大幅缩短新业务的落地周期。调试排障阶段‌:把报错堆栈信息直接粘贴给AI,它会结合本地代码上下文定位根因,同时给出可直接运行的修复代码片段,大幅降低Bug排查耗时。

chinalog的专栏 151

电商推返模式的技术架构与系统落地实践

成功的电商推返模式系统,本质是。

weixin_42804741的博客 194

大模型API并发限流解析:中科热备多Key轮换工程方案

灾备与数据保护技术实战:CDP持续保护、数据库备份、异地容灾架构等核心技术深度解析。

2501_92899622的博客 334

工控机之static工具类

static工具类是无状态工具集合:删除构造函数禁止实例化;语法允许一个类同时拥有static函数和普通成员变量,但那样它就不是无状态工具类,而是有状态实例类。4. 不要普通成员变量:普通成员变量属于对象实例;单独创建一个管理器类,允许实例化,状态作为普通成员变量;• 工具类(静态类):无状态,ProtocolUtil::xxx();协议转换、校验、格式化;// ✅允许:static成员函数,纯函数,输出仅依赖入参,无副作用。纯工具类:无状态工具集合,只提供公共算法函数,不创建对象、不保存运行时状态。

老赵的博客 212

RocketMQ订单事务消息实战教学

用户下单要同时扣库存、扣余额、加积分,拆成 MQ 异步履约后,原子性、重复投递、部分成功三大难题怎么破?本文用一个真实可跑的下单案例,讲透 RocketMQ 事务消息(half 消息/本地事务/回查)、三层幂等防线(Redis SETNX + DB 唯一索引 + ▎ 条件更新)、业务失败与消费失败的区分处理、按状态补偿的 Saga 关单逆向流程,以及死信工单 + 人工重放的完整闭环。全量代码含 import、pom 依赖、建表 SQL,附三条可演示链路、生产落地清单与面试题速答,跟着做即可复现。

zhenyu333的博客 386

BM2000 (Bridge Master 2000) 完整版-510副牌,世界上最好坐庄训练软件

世界上最好的桥牌坐庄软件:BM2000(Bridge Master 2000)(桥牌大师2000完整版),共510副牌

keil arm compiler v5.06 build 960

使用方法:1. 解压文件。2. 安装v5_compiler_b960\Installer\setup.exe。3. 安装路径选择 keil/ARM/ARMCC,若无ARMCC文件夹,请自行创建。4. 打开keil, 1. 进入 `Manage Project Items` 界面(即品字按钮), 2. 选择 `Folders/Extensions` 菜单, 3. 点击 `Use ARM Compiler` 后的`...`按钮 4. 点击 `Add another ARM Compiler Version to List...` 5. 选择 `Keil/ARM/ARMCC` 文件夹5. 保存退出6. 编译器选择 v5.06 update 7 build 960进行编译查看是否正常

上一篇: 传智播客--struts2.x的ActionContext,ValueStack和常用标签介绍
下一篇: 传智播客--struts2.x表单重复提交,文件上传下载,转换器
getclass
博客等级 码龄17年 53粉丝 72原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值