【Struts2框架】第三节OGNL表达式-OGNL表达式例子2

简介:

1.OGNL静态访问例子

struts.xml:

<struts>
<!--允许静态方法的执行-->
<constant name="struts.ognl.allowStaticMethodAccess" value="true"></constant>


<package name="ognl" namespace="/ognl" extends="struts-default">
   <action name="ss" class="cn.edu.hpu.action.IndexAction1">
     <result name="success">/ognl.jsp</result>
   </action>
</package>


</struts>

IndexAction1.java:
package cn.edu.hpu.action;


public class IndexAction1 {
	public String execute(){
		return "success";
	}


}

S.java
package cn.edu.hpu.ognl;

public class S {
	public static String STR="STATIC STRING";
	
	public static String s(){
		return "static method";
	}
}

链接:
访问静态方法:<a href="<%=basePath%>ognl/ss">OGNL6</a><br/>
访问静态属性:<a href="<%=basePath%>ognl/ss">OGNL7</a><br/>

结果界面:
<!--访问方式:@+包名+@+方法名或者属性名-->
<li>访问值栈中静态方法:<s:property value="@cn.edu.hpu.ognl.S@s()"/><br/>
<li>访问值栈中静态属性:<s:property value="@cn.edu.hpu.ognl.S@STR"/><br/>

结果:
访问值栈中静态方法:static method
访问值栈中静态属性:STATIC STRING

常用类的静态方法也可以访问(加两个@)
结果页面:
<li>访问Math类的静态方法:<s:property value="@@max(3,5)"/><br/>

结果:

访问Math类的静态方法:5


2.OGNL访问普通类的构造方法

struts.xml:

<package name="ognl" namespace="/ognl" extends="struts-default">
<action name="dog" class="cn.edu.hpu.ognl.OgnlAction3">
      <result name="success">/ognl.jsp</result>
</action>
</package>

OgnlAction3.java:
package cn.edu.hpu.ognl;

import cn.edu.hpu.mode.Dog;

import com.opensymphony.xwork2.ActionSupport;

public class OgnlAction3 extends ActionSupport{
	private Dog dog;

	public Dog getDog() {
		return dog;
	}

	public void setDog(Dog dog) {
		this.dog = dog;
	}
	
	@Override
	public String execute() throws Exception {
		// TODO Auto-generated method stub
		return "success";
	}


}

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;
	}
}

链接:
访问普通类的构造方法:<a href="<%=basePath%>ognl/dog">OGNL8</a><br/>

结果页面:

<li>访问普通类的构造方法:
<s:property value="new cn.edu.hpu.mode.Dog('tom')"/><br/>

结果:
访问普通类的构造方法:dog:tom

转载请注明出处:http://blog.csdn.net/acmman/article/details/47070019

相关文章
|
Linux C++
Linux系统之时间同步方法
Linux系统之时间同步方法
1229 0
|
10月前
|
开发工具 git
避免git产生Merge branch 'foo' into 'bar'提交
避免git产生Merge branch 'foo' into 'bar'提交
129 3
|
前端开发 Linux 测试技术
前端CICD:VMware(centos8stream)部署gitlab
前端CICD:VMware(centos8stream)部署gitlab
229 0
|
存储 DataWorks 安全
DataWorks数据治理中心开放使用
DataWorks数据治理中心通过治理健康分量化评估,有效推动治理问题解决。治理健康分由存储、计算、开发、质量和安全五个维度构成,可自动发现和预防各类数据治理问题。在成本治理方面,数据治理中心提供任务资源消耗明细、资源消耗整体趋势、单任务费用预估等丰富功能,可帮助您对各类资源使用费用进行有效的优化控制。
4707 1
DataWorks数据治理中心开放使用
|
JavaScript Apache PHP
|
传感器 算法 JavaScript
【开发者案例】使用HaaS EDU K1实现一个数字量角器
2021年3月,阿里发布了HaaS EDU K1物联网教育开发板。它是一款云端一体全链路解决方案的积木平台。
478 15
【开发者案例】使用HaaS EDU K1实现一个数字量角器
|
10月前
|
机器学习/深度学习 算法 安全
提高人脸识别识别率技术
智能工厂趋势中,人脸识别技术在提升生产效率和安全管理方面展现应用价值。技术挑战包括环境光线控制、背景干扰、数据多样性和算法优化。解决方案涉及模型选择、实时性与准确性平衡,以及使用标签平滑技术减轻模型过拟合,提高泛化能力。通过训练优化的CNN模型,结合数据增强和标签平滑,实现更精准的人脸识别系统。
|
缓存 Ubuntu Linux
LXC (Linux 虚拟环境)简单介绍
LXC是Linux containers的简称,操作系统级别的虚拟化技术。它可以在操作系统层次上为进程提供的虚拟的执行环境。一个虚拟的执行环境被称为一个容器(container)。可以为容器绑定特定的cpu和memory节点,分配特定比例的cpu时间、IO时间,限制可以使用的内存大小(包括内存和是swap空间),提供device访问控制,提供独立的namespace(网络、pid、ipc、mnt、uts)。
1147 0
LXC (Linux 虚拟环境)简单介绍
|
人工智能 达摩院 供应链
企业数字化咨询服务
本文全面性、系统性、体系化地介绍了阿里云为企业客户提供的数字化咨询服务。核心内容包括: ● 咨询服务市场及阿里云咨询定位 ● 阿里云数字化咨询服务特点 ● 阿里云企业数字化咨询价值主张 ● 阿里云数字化咨询服务体系 ● 阿里云数字化咨询方法论体系 ● 阿里云数字化咨询保障体系 ● 典型成功案例介绍
企业数字化咨询服务