ActionContext、ValueStack、OGNL | 学习笔记

简介: 快速学习 ActionContext、ValueStack、OGNL 代理,介绍了 ActionContext、ValueStack、OGNL 系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【Java Web开发系列课程 - Struts2框架入门ActionContext、ValueStack、OGNL】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/537/detail/7309


ActionContext、ValueStack、OGNL

 

目录:

一.LoginAction 代码

二.root 下的元素

三.栈顶元素

 

一. LoginAction 代码

package cn.sxt.action;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.util.ValueStack;public class LoginAction private String name;private String pwd;
//处理方法
public String execute()System.out.println(name+"---"+pwd);if("siggy".equals(name)&&"1111".equals(pwd))//获取sessionActionContext.getContext().getSession().put("user", name);

ValueStack VS = ActionContext.getContext().getValueStack();

System.out.println("name=e="+vs.findString("name"));

user user = new User( );

user.setName("张三疯")return "success";elsereturn"login";return" success" ;elsereturn"login

注:

ognl 表达式取的是值栈和 ActionContext 里面的数据,值栈的数据可取但是不可修改。值栈与 ActionContext 可以互取数据。

运行结果:
用户名:lisi 【action 中的属性】

用户名:【action 中的属性】

用户名:siggy——-----—---------退出

2.root 下的两个元素

LoginAction@263534c1

Default TextProvider@6f1a7e7f

3.栈顶元素

在 loginaction 中创建一个 user 对象

User user=new User();

user.setName("张三疯");

vs.push(user);

运行结果

Root 里面的元素会变成三个

elementData  Object[2] (id=133)

User  (id=98)

LoginAction (id=73)

2访问 pwd

用户名:pwd"/>[action中的属性]

用户名:---->

运行结果

用户名:1111[action 中的属性]

用户名siggy-------------退出

(3)访问 name

用户名:name"/>[action中的属性]

用户名:---->

运行结果

用户名:张三疯[action 中的属性]

用户名 siggy-------------退出

41表示栈顶元素

用户名:[action中的属性]

用户名:---->

结果:

用户名:siggy [action 中的属性]

用户名siggy-------------退出

注:

最新访问的是栈顶元素,访问 name 时将栈顶里面的元素覆盖,

一般不动值栈元素,要放在 action 中操作,相对于比较保险。

(5)访问 valuestack

用户名:[action中的属性]

用户名:valuestack.[1].name"/>[action中的属性]

用户名:

---->

运行结果

用户名:siggy [action 中的属性]

用户名:[action 中的属性]

用户名:siggy_-------------退出

注:这种不可取

相关文章
|
安全 应用服务中间件 API
我发现了宝塔的未授权访问漏洞
宝塔的未授权访问漏洞
953 1
|
XML SQL Web App开发
用友 GRP-U8 Proxy XXE-SQL注入漏洞
用友 GRP-U8 Proxy XXE-SQL注入漏洞,攻击者可利用该漏洞获取数据库敏感信息,具体复现操作请看下文。
645 1
|
11月前
|
API 数据处理 开发者
获取淘宝分类详情:深入解析taobao.cat_get API接口
淘宝开放平台推出的`taobao.cat_get` API接口,帮助开发者和商家获取淘宝、天猫的商品分类详情。该接口支持获取类目列表、属性及父类目信息,通过指定分类ID(cid)实现精准查询,并提供灵活的参数设置和高效的数据处理。使用流程包括注册账号、创建应用、获取App Key/Secret、构造请求、发送并解析响应。示例代码展示了如何用Python调用此API。开发者可借此为电商项目提供数据支持。
|
安全 Apache
CVE-2021-41773|CVE-2021-42013——Apache HTTP Server路径遍历|远程代码执行
CVE-2021-41773|CVE-2021-42013——Apache HTTP Server路径遍历|远程代码执行
1040 0
CVE-2021-41773|CVE-2021-42013——Apache HTTP Server路径遍历|远程代码执行
|
10月前
|
人工智能 数据可视化 JavaScript
深入通义灵码 2.0 的 AI 程序员体验场景
减少了在不同编程语言间切
258 8
|
10月前
|
JavaScript NoSQL 关系型数据库
当下弹幕互动游戏源码开发教程及功能逻辑分析
当下很多游戏开发者或者想学习游戏开发的人,想要了解如何制作弹幕互动游戏,比如直播平台上常见的那种,观众通过发送弹幕来影响游戏进程。需要涵盖教程的步骤和功能逻辑的分析。
|
机器学习/深度学习 人工智能 算法
【人工智能】第二部分:ChatGPT的架构设计和训练过程
【人工智能】第二部分:ChatGPT的架构设计和训练过程
456 4
|
Web App开发 人工智能 供应链
金蝶云星空管理中心反序列化命令执行漏洞(RCE)
​金蝶云星空管理中心存在反序列化命令执行,攻击者可通过该漏洞获取敏感信息,进而接管服务器。
1242 2
|
存储 安全 API
GitHub代码删了也无用,任何人仍可永久访问?!微软:这不是Bug而是有意设计...
开源安全公司Truffle Security发现,GitHub上的数据删除可能只是表面现象,实际上被删的数据仍可被访问。这一发现震惊了开源社区。研究人员引入了“跨分叉对象引用”(CFOR)这一概念,描述了如何通过已删除或私有fork访问敏感数据。即便存储库被删除,提交的数据仍可通过fork存取,甚至私有存储库的数据也可能被公开访问。尽管GitHub回应称这是有意为之的设计,但对于许多用户来说,这打破了对数据隐私的基本期望。此发现不仅影响GitHub用户,还可能波及其他版本控制系统。
497 4
|
Windows
Qt+ECharts开发笔记(二):Qt窗口动态调整大小,使ECharts跟随Qt窗口大小变换而变换大小
上一篇将ECharts嵌入Qt中,在开始ECharts使用之前,还有一个很重要的功能,就是在窗口变换大小的时候,ECharts的图表尺寸也要跟随Qt窗口变换大小而变换大小。
Qt+ECharts开发笔记(二):Qt窗口动态调整大小,使ECharts跟随Qt窗口大小变换而变换大小