OGNL表达式语言与struts2标签库简单介绍

本文深入解析了OGNL表达式语言的特点及在Struts2框架中的应用,涵盖了OGNL的基本语法、集合操作、上下文访问等关键概念。同时,全面介绍了Struts2标签库的使用,包括流程控制、数据访问、表单和非表单标签的详细说明,为开发者提供了丰富的实践指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 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标签(可另行百度)
标签的详细用法可在此处查看

##上述内容如若有侵权行为请联系博主进行删除##

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值