struts - OGNL的东东Σ( ° △ °|||)︴

2024-04-06 08:58
文章标签 struts 东东 ognl

本文主要是介绍struts - OGNL的东东Σ( ° △ °|||)︴,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

国庆整理:struts - OGNL的东东:
(国庆死宅,最后才想起要弄点什么,就来发几篇博客Σ( ° △ °|||)︴)

OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的 表达式 去存取对象的属性。


简单的语法:
1、基于跟对象表达式:任何一个对像可以作为跟对象
可以访问跟对想的所有属性,可以调用跟对象 的所有方法。
2、基于上下文表达式
上下文=Context
Map集合

访问上下文中值:#key   例子:
    
@Test
public void test4() throws Exception{
User user =new User();
user.setUn("bjsxt");
user.setPwd("123456");
user.setDate(new Date());
Map<String, Object> context =new HashMap<String, Object>();
context.put("abc", "bjsxt");
context.put("efg", 90);
context.put("u", user);
Ognl.getValue("@System@out.println(#u.pwd)", context,new Object());
}
创建对象:一些的列表,map 数组的 创建
    
@Test
public void test6()throws Exception{
//创建一个普通javabean对象 ,使用ognl表达式调用构造方法
User user =(User) Ognl.getValue("new com.bjsxt.ognl.User()", new Object());
System.out.println(user);
//创建一个数组,int[]
int[] ids =(int[]) Ognl.getValue("new int[]{1,2,3}", new Object());
//创建一个List集合{}
List ids3 =(List) Ognl.getValue("{1,2,4}", new Object());
//创建一个Map集合 ,#{}
Map<String,Integer> map =(Map<String, Integer>) Ognl.getValue("#{'a':1,'b':2}", new Object());
System.out.println(map.size());
Map<String, Object> context =new HashMap<String, Object>();
context.put("m", map);
// Ognl.getValue("@System@out.println(#m.get('b'))", context,new Object());
Ognl.getValue("@System@out.println(#m['b'])", context,new Object());
}

ognl在struts2中使用
1、跟对象是固定
跟对象是个:栈,每次只能有一个元素从栈拿出。并且一定是最顶部:最后进入栈的元素。
栈中的最后进入的元素就可以理解为跟对象。
当前访问的Action对象最后进入的栈的。(一般情况下Action对象就跟对象)
2、上下文是固定。
ActoinContext就是上下文
ActoinContext在请求进入的时候就已经初始化。---相当于一个map
key  =   value
request =HttpServletRequest
session =HttpSession
attr=
param=
3、ognl表达式在jsp中使用时,只能写在struts2的标签里面
这是上课讲的东东

例子:
action:
    
ActionContext.getContext().put("msg", "今天讲了OGNL");
System.out.println(id);
System.out.println(str);
return "su";
success 。jsp:
    
<%@taglib prefix="s" uri="/struts-tags" %>
<body>
<h2>登录成功</h2>
<h4><s:property value="str"/> </h4> <!-- s:property 执行ognl表达式 -->
<h5><s:property value="id"/> </h5>
<h5><s:property value="#msg"/></h5>
<h6><s:property value="#request['abc']"/> </h6>
<h6><s:property value="#attr['abc']"/> </h6>
</body>


The framework sets the OGNL context to be our ActionContext, and the value stack to be the OGNL root object. (The value stack is a set of several objects, but to OGNL it appears to be a single object.) Along with the value stack, the framework places other objects in the ActionContext, including Maps representing the application, session, and request contexts. These objects coexist in the ActionContext, alongside the value stack (our OGNL root).

翻译: 框架集OGNL语境是我们的ActionContext,和值栈是OGNL根对象。 (该值栈是一组多个对象,但OGNL似乎是一个单一的对象。)随着值栈,在其他地方的ActionContext框架对象,包括地图的应用,会话,并请求上下文。 ActionContext 这些对象 并存, 值栈 我们 OGNL 根)

这些是在context map 中默认放入的 东东,可以直接使用的;

































这篇关于struts - OGNL的东东Σ( ° △ °|||)︴的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/879523

相关文章

Thymeleaf:生成静态文件及异常处理java.lang.NoClassDefFoundError: ognl/PropertyAccessor

我们需要引入包: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>sp

在struts.xml中,如何配置请求转发和请求重定向!

<span style="font-size:18px;"><span style="white-space:pre"> </span><!--<strong>下面用请求转发action </strong>,<strong>这样过去id不会丢</strong>,如果用重定向的话,id会丢 --><result name="updatePopedom"<span style="color:#ff00

修改struts中:fielderror.ftl 模板

在项目登录页面: 当验证码输入有误时,应该提示:验证码输入有误,请重新输入 ,但是页面出现乱了! 错误原因: 在产生错误信息时,页面中增加了<ul> <li><span></span></li></ul>标签,该如何修改改, 解决方法(一): 在项目的src下,新建文件夹:template.simple,在文件夹里面放修改好的fielderror.ftl文件。 fi

Struts 2的工作流程

基本简要流程如下:1、客户端浏览器发出HTTP请求。2、根据web.xml配置,该请求被 FilterDispatcher接收。3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton。4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。5、Action执行完毕,根据 struts.xml中的配置找到对应的返回结果result

jstl,el,ognl的区别

jstl——JSP Standard Tag Library, el——Expressiong Language ognl——Object Graph Notation Language。 一种是标签,一种是表达式。 jstl能用于servlet和jsp中, struts标签针对于使用了struts的项目。 而el表达式是应用在JSP中,简化一些代码用的。 而struts2默认的是ognl表达式,

struts2 struts.xml常用常量配置

<constant name="struts.i18n.encoding" value="UTF-8" /> 指定Web应用的默认编码集,相当于调用HttpServletRequest的setCharacterEncoding方法 <constant name="struts.ui.theme" value="simple" /> 设置页面struts标签的样式     <consta

struts 页面取值问题

Struts2中的OGNL表达式语言是对Xwork的OGNL的封装。我们要理解一下几点:  1 . Struts2 中将 ActionContext 作为 OGNL 的上下文环境( ActionContext 内部含有一个 Map 对象)   2 . Struts2 中的 OGNL 表达式语言的根对象是一个 ValueStack , ValueStack 中的每一

某东东的jdgs算法分析--适合进阶学习

某东东的jdgs算法分析   这个贴主要还是对算法本身结构部分描述会多点,憋问,问就是过去太久了,很多逆向过程不一定能还原(主要是懒,不想原路再走一遍),所以可能有部分跳跃的内容,会给具体代码,但对应的偏移地址和具体信息没有,给大家一个锻炼自己的机会 ( •_•)   继续观看前申明:本文涉及的内容是为给大家提供适合大家巩固基础及进阶更高的技术,别做不好的事情哦。 算法分析结构划分

struts和struts2的区别

2012-07-08 14:30 liujunzyf | 分类:JAVA相关 | 浏览8116次 分享到: 2012-07-08 14:41 提问者采纳 你问的应该是 struts1 和struts2 的区别:Struts2与Struts1的对比 1,在Action实现类方面: Struts1要求Action类继承一个抽象基类;Str

struts通配符配置

通配符配置 <!--method属性值为1表示匹配一个*。如用户的请求是book_add.action。则name的属性值是book_add,method的属性值是add  --><action name="book_*" class="action.AddBook" method="{1}"><result name="success">/success.jsp</result><