-
OGNL表达式语言概述
- OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,一般结合struts标签库一起使用,也是Struts2框架使用OGNL作为默认的表达式语言;
-
OGNL的优势
- 1、支持对象方法调用
- 2、支持类静态的方法调用和值访问:@[类全名@[方法名|值名]]
- 3、支持赋值操作和表达式串联
- 4、访问OGNL上下文(上下文:可理解为是一个MAP结构)和ActionContent
- 5、操作集合对象
- 6、附上一张图
-
OGNL的用法
-
访问OGNL上下文和Action上下文,#相当ActionContext.getContext()(备注:OGNL会有一个根对象,在Struts2中根对象就是ValueStack,(值栈——这里可另行百度值栈内容) 。如果要访问根对象(即ValueStack)中对象的属性,则可以省略 #命名对象,直接访问该对象的属性即可)
-
parameters:包括当前http请求参数的map——#parameters.id[0]作用相当于request.getParameters(“id”)
-
request:包括当前HttpServletRequest的属性的MAP——#request.username
-
session:包含当前HttpSession的属性的MAP——#session.username
-
application:包括当前应用ServletContext的属性的MAP——#application.usrname
-
attr:用于按request>session>application顺序访问其属性——#attr.username
-
例子:
Action中代码: ServletActionContext.getRequest().setAttribute("username", "username_request"); Jsp页面: 使用ognl表达式取值*****************************<br> request:<s:property value="#request.username"/><br> 访问值栈: Action中代码: ValueStack valueStack=ServletActionContext.getContext().getValueStack(); valueStack.set("msg", "msg_xxx"); Jsp页面: valueStack:<s:property value="msg"/><br>
-
集合的投影(过滤)
-
#request.user.{属性名}:表示只输出部分属性内容
-
“?#”:表示过滤所有满足条件的集合
-
“^#”:表示过滤第一个满足条件的元素
-
“$#”:表示过滤最后一个满足条件的元素
-
例子:
//表示遍历request中user对象的name属性内容的集合 <s:iterator value="#request.user.{name}" var=user"> <s:property value="#user"/> </s:iterator> //表示遍历session中user对象中num大于20 的集合 <s:iterator value="#"session.user.{?#this.num>20} var="user"> <s:property value="#user"> </s:iterator>
-
-
构造Map
jsp页面: <s:radio list=“#{‘male’:‘男’,‘female’:‘女’}” name=“sex” label=“性别” /> 同等于: <input type="radio" name="sex" id="sexmale" value="male"/>男 <input type="radio" name="sex" id="sexfemale" value="female"/>女
-
%的用法
- “%”符号主要让系统把此处的内容理解为字符串类型时,告诉执行环境%{}里的是OGNL表达式。
- 格式一:<s:textfield name=“name” label="%{#session.name} "/>
- 格式二:<s:textfield name=“name” label="%{‘xcz’} "/>此处是理解为字符串内容
-
$的用法
- 用于国际化资源文件中,引用的OGNL表达式
- 在Struts2配置文件中,引用OGNL表达式
- 其他可另行百度
##上述内容来源对北京传智博客教育出的学习资料学习的一个总结##
-
-
Struts2标签库概述
- 使用环境:
- 导入struts2-core-2.5.20.jar包(选择其他版本也可以)
- 在jsp页面添加<%@ taglib prefix=“s” uri="/struts-tags" %>
- 流程控制标签
- 使用环境:
标签名 | 描述 |
---|---|
<append> | 用于将多个集合拼接成一个新的集合 |
<else> | 与if标签结合使用,当条件不成立时输出 |
<elseif> | 与if标签结合使用,多分支条件判断 |
<if> | 用于控制选择输出的标签 |
<iterator> | 该标签是一个迭代器,用于将集合迭代输出 |
<genertator> | 该标签是一个字符串解析器,用于将一个字符串解析成一个集合 |
<merge> | 用于将多个集合拼接成一个新集合,但与append的拼接方式有所不同 |
<sort> | 用于对集合进行排序 |
<subset> | 用于对集合进行排序 |
- 数据访问标签
标签名 | 描述 |
---|---|
<bean> | 用于创建一个javabean实例 |
<include> | 用于在JSP页面中包含其他的JSP或Servlet资源 |
<param> | 用于设置一个参数,通常是用作bean标签的子标签 |
<property> | 用于输出某个值 |
<set> | 用于设置一个新的变量,并将其存放到指定的范围内 |
<url> | 用于生成一个URL地址 |
<action> | 用于在JSP页面直接调用一个Action |
<data> | 用于格式化输出一个日期 |
<push> | 用于将某个值放入ValueStack的栈顶 |
- 表单标签
- 非表单标签
标签名 | 描述 |
---|---|
<actionerror> | 用来输出Action中的错误信息 |
<actionmessage> | 用来输出Action中的信息 |
<component> | 通过主题、模板属性生成一个自定义组件 |
<div> | 用来生成一个div片段 |
<fielderror> | 用来输出异常提示信息 |
<tabbedPanl> | 用来生成HTML页面中的Tab页 |
<tree> | 用来生成一个树形组件 |
<treenode> | 用来生成树形组件的节点 |
*ajax标签(可另行百度)
标签的详细用法可在此处查看
##上述内容如若有侵权行为请联系博主进行删除##