Struts2 OGNL表达式实例详解
发布时间 - 2026-01-11 03:26:43 点击率:次Object Graph Navigation Language:对象图导航语言,就是用点来访问成员变量
<s:property value="cat.name"/>
例1:
struts.xml:
<package name="ognl" namespace="/ognl" extends="struts-default"> <action name="og1" class="cn.edu.hpu.action.OgnlAction1"> <result>/ognl.jsp</result> </action> </package>
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();
}
}
访问链接:
<a href="<%=basePath%>ognl/og1?username=jack&&password=111" rel="external nofollow" >OGNL</a><br/>
结果界面:
OGNL SUCCESS!!<br/>
<ol>
<li>访问值栈中的action的普通属性1=<s:property value="username"/></li>
<li>访问值栈中的action的普通属性2=<s:property value="password"/></li>
</ol>
<s:debug></s:debug>
结果显示:
OGNL SUCCESS!!
访问值栈中的action的普通属性1=jack
访问值栈中的action的普通属性2=111
[Debug]
ps:点击[Debug]可以查看到栈值中有username与password
例2:
struts.xml:
<package name="ognl" namespace="/ognl" extends="struts-default"> <action name="user2" class="cn.edu.hpu.action.UserAction2" method="add"> <result name="success">/ognl.jsp</result> </action> </package>
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属性
<a href="<%=basePath%>ognl/user2?user.name=tom&&user.age=21" rel="external nofollow" >OGNL2</a><br/>
(只有你传user.XXXX才能构造)
结果页面:
<%@taglib uri="/struts-tags" prefix="s" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>" rel="external nofollow" >
<title>My JSP 'ognl.jsp' starting page</title>
</head>
<body>
OGNL SUCCESS!!<br/>
<ol>
<li>访问值栈中对象的普通属性(get set 方法 ):
<br/>
user-age:<s:property value="user.age"/>|<s:property value="user['age']"/></li>
</ol>
<s:debug></s:debug>
</body>
</html>
显示结果:
OGNL SUCCESS!!
访问值栈中对象的普通属性(get set 方法 ):
user-age:21|21
[Debug]
点击[Debug]可以查看到栈值中有user对象的存在
例3:
struts.xml
<package name="ognl" namespace="/ognl" extends="struts-default"> <action name="cat1" class="cn.edu.hpu.ognl.OgnlAction2"> <result name="success">/ognl.jsp</result> </action> </package>
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属性
<a href="<%=basePath%>ognl/cat1?cat.friend.name=littleBoy" rel="external nofollow" >OGNL3</a><br/>
结果页面:
<li>访问值栈中对象的普通属性(get set 方法 ):
<br/>
cat-friend-name:<s:property value="cat.friend.name"/></li>
结果:
访问值栈中对象的普通属性(get set 方法 ):
cat-friend-name:littleBoy
观察[Debug],发现只有cat在值栈中,说明通过cat联系到dog,取得dog中的属性
访问cat方法:
<a href="<%=basePath%>ognl/cat1" rel="external nofollow" rel="external nofollow" >OGNL4</a><br/>
结果页面:
<li>访问值栈中对象的普通方法:
<br/>
cat-miaomiao:<s:property value="cat.miaomiao()"/></li>
结果:
访问值栈中对象的普通属性:
cat-miaomiao:miaomiao
访问action的普通方法:
<a href="<%=basePath%>ognl/cat1" rel="external nofollow" rel="external nofollow" >OGNL5</a><br/>
结果页面:
<li>访问值栈中action的普通方法:
<br/>
action-m():<s:property value="m()"/></li>
结果:
访问值栈中acion的普通方法:
action-m():Hello
总结
以上就是本文关于Struts2 OGNL表达式实例详解的全部内容,希望对大家有所帮助。有什么问题可以随时留言,欢迎大家交流讨论。
# struts
# ognl
# struts2
# 的ognl表达式
# Struts2 通过ognl表达式实现投影
# 详解Struts2动态方法调用
# Struts2修改上传文件大小限制方法解析
# AjaxFileUpload+Struts2实现多文件上传功能
# struts2开发流程及详细配置
# struts+spring+hibernate三个框架的整合
# Struts2获取参数的三种方法总结
# 中有
# 可以查看
# 有什么
# 欢迎大家
# 可以随时
# 来访问
# Exception
# throws
# Override
# execute
# generated
# method
# TODO
# Auto
# getUsername
# return
# username
# password
# getPassword
# setPassword
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
如何在万网ECS上快速搭建专属网站?
装修招标网站设计制作流程,装修招标流程?
如何用AI帮你把自己的生活经历写成一个有趣的故事?
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
如何在服务器上配置二级域名建站?
bing浏览器学术搜索入口_bing学术文献检索地址
Laravel中的Facade(门面)到底是什么原理
Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出
Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案
如何在景安服务器上快速搭建个人网站?
如何在Windows服务器上快速搭建网站?
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
高端建站如何打造兼具美学与转化的品牌官网?
如何在阿里云虚拟主机上快速搭建个人网站?
Laravel如何使用Collections进行数据处理?(实用方法示例)
javascript中数组(Array)对象和字符串(String)对象的常用方法总结
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法
如何在云服务器上快速搭建个人网站?
Laravel如何使用模型观察者?(Observer代码示例)
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试
java获取注册ip实例
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
如何安全更换建站之星模板并保留数据?
如何快速查询网站的真实建站时间?
中山网站推广排名,中山信息港登录入口?
JavaScript中的标签模板是什么_它如何扩展字符串功能
Bootstrap整体框架之JavaScript插件架构
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
JS弹性运动实现方法分析
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
免费视频制作网站,更新又快又好的免费电影网站?
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
香港服务器租用每月最低只需15元?
如何在企业微信快速生成手机电脑官网?
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
android nfc常用标签读取总结
如何在不使用负向后查找的情况下匹配特定条件前的换行符
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框
高端网站建设与定制开发一站式解决方案 中企动力
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
下一篇:SQL注入中宽字节注入是什么
下一篇:SQL注入中宽字节注入是什么

