Struts2 $,#,%详解及实例代码

Struts2 $,#,% 详解及实例代码

引言

在处理 Struts2 代码时,经常可以看到一些用于处理 EL 表达式和字符串的字符,例如 $#% 等。这些字符在 Struts2 的开发中可以起到非常关键的作用。本文将介绍以下几个知识点:

  • 关于 $#% 三个字符的作用以及使用场景
  • $# 在 Struts2 中的区别
  • $# 的示例代码
  • % 的示例代码

$# 字符的作用及使用场景

$# 在 Struts2 中均用于字符串的处理和 EL 表达式的解析,但是两者有着很大的区别。

  • $ 字符:

$ 字符用于字符串的处理,可以直接将字符串值输出到页面上。利用 $,我们可以实现页面上的一些简单逻辑,例如设置全局变量,以及动态生成 HTML 内容。

  • # 字符:

# 字符用于 EL 表达式中,可以将 EL 表达式的结果输出到页面上。

下面我们将针对不同场景中的使用对两个字符进行详细地介绍。

$# 字符在 Struts2 中的区别

在 Struts2 的页面中,通过 # 字符可以调用 Action 中的变量或方法,例如:

<s:property value="#user.name"/>
<s:date name="now" format="yyyy-MM-dd"/>
<s:bean name="userService" var="userService"/>
<s:iterator value="#userService.users" var="u">
   <s:property value="u.name"/>
</s:iterator>

上述代码中,使用了 # 字符调用了 Action 中的变量和方法,并将其输出到了页面上。

相比之下,$ 字符的作用更多用于处理纯字符串,例如:

<s:set var="userName" value="hello"/>
<s:if test="#user.name == ${userName}">Hello ${userName}</s:if>

上述代码中,我们使用了 $ 字符创建了一个字符串变量 userName,将其用于判断条件中。但是需要注意的一点是,如果在 Struts2 的配置文件 struts.xml 中启用了 struts.enable.SlashesInActionNames 属性,则 $ 在处理字符串时还可以用于表示 Action 目录的层级。

$# 在 Struts2 中的使用场景

根据上述介绍,我们可以总结两者的使用场景:

  • $ 字符的使用场景

$ 字符的使用场景主要包括:

  1. 字符串处理

  2. 动态生成 HTML 内容

  3. # 字符的使用场景

# 字符的使用场景主要包括:

  1. 调用 Action 中的变量和方法

  2. 调用 OGNL 表达式

  3. 调用 Struts2 的标签库

$# 字符的示例代码

$ 的示例代码

<!-- 字符串处理示例 -->
<s:set var="msg" value="hello"/>
<s:property value="${msg} world!"/>

<!-- 动态生成 HTML 内容示例 -->
<s:set var="names" value="John,Lucy,Tom"/>
<s:iterator value="${fn:split(names,',')}" var="name">
   <s:property value="'<li>'+name+'</li>'"/>
</s:iterator>

上述代码中,我们通过 $ 字符实现了字符串的处理和动态生成 HTML 内容。

# 的示例代码

<!-- 调用 Action 中的变量和方法 -->
<s:property value="user.name"/>
<s:property value="userService.getUserName()"/>

<!-- 调用 OGNL 表达式 -->
<s:set var="n" value="1"/>
<s:set var="a" value="#{1+2*3+(4>1?1:2)}"/>
<s:property value="%{n+a}"/>

<!-- 调用 Struts2 的标签库 -->
<s:bean name="userService" var="userService"/>
<s:iterator value="#userService.users" var="u">
   <s:property value="%{u.name}"/>
</s:iterator>

上述代码中,我们通过 # 字符实现了调用 Action 中的变量和方法、调用 OGNL 表达式和调用 Struts2 的标签库。

% 字符的作用及使用场景

在 Struts2 中,% 字符主要用于格式化字符、时间等信息。

% 字符的使用场景

在 Struts2 中,% 字符可以用于格式化数字和时间等信息。例如:

<!-- 格式化数字 -->
<s:set var="price" value="1000"/>
<s:property value="%{#price','.##}"/>

<!-- 格式化时间 -->
<s:property value="%{#startTime.format('yyyy/MM/dd')}"/>

上述代码中,我们使用 % 字符对数字和时间进行了格式化输出。

结语

本文主要介绍了 Struts2 中 $#% 三个字符的作用及使用场景,通过对上述内容的学习,相信各位读者在 Struts2 的开发过程中能够更加游刃有余。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Struts2 $,#,%详解及实例代码 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • JavaWeb实现mysql数据库数据的添加和删除

    下面是“JavaWeb实现mysql数据库数据的添加和删除”的完整攻略。 简介 JavaWeb是一个基于Java语言的Web开发框架,可以使用Java语言轻松实现Web应用的开发。而mysql是一种开源的关系型数据库管理系统,目前非常受欢迎。本文将详细介绍如何使用JavaWeb实现mysql数据库数据的添加和删除。 准备工作 JDK(Java Develop…

    Java 2023年5月19日
    00
  • 用简单的代码来实现文件上传

    让我来详细讲解一下“用简单的代码来实现文件上传”的完整攻略。 什么是文件上传? 在网站开发中,文件上传就是指用户将本地的文件通过网站上传到服务器中。 实现文件上传的原理 实现文件上传,需要配合HTTP协议,主要分为以下几步: 用户通过网页上传文件,前端通过HTML5的FormData对象将文件数据以二进制流的形式传递到后端。 后端接收到上传的文件数据后,将文…

    Java 2023年6月15日
    00
  • Java实现链栈的示例代码

    Java链栈是一种特殊的栈,底层是使用单向链表实现的,相比较数组实现栈的方式,链栈可以无需考虑容量的问题,能够动态地适应数据结构的需求。下面详细讲解Java实现链栈的示例代码的完整攻略。 1. 实现链栈的基本步骤 Java实现链栈的基本步骤如下: 定义链栈的节点类 定义链栈类,包含入栈、出栈、查看栈顶数据等方法 在链栈类中,定义一个栈顶节点对象,然后在入栈、…

    Java 2023年5月18日
    00
  • java中SpringBoot 自动装配的原理分析

    下面我会为您详细讲解“Java中SpringBoot自动装配的原理分析”的完整攻略。 SpringBoot自动装配原理分析 SpringBoot自动装配是SpringBoot的核心特性之一,使得我们可以快速地构建出基于Spring的Web应用。自动装配的原理就是SpringBoot在应用启动时,通过解析项目中的依赖关系以及类注解等元数据信息,来完成应用中各个…

    Java 2023年5月19日
    00
  • Java面向对象设计原则之迪米特法则介绍

    Java面向对象设计原则之迪米特法则介绍 什么是迪米特法则 迪米特法则(Law of Demeter)又称最少知道原则(Least Knowledge Principle,简称 LKP),是指一个对象应该对其他对象保持最少的了解,使得系统的各个部分易于独立地修改、扩展、替换。迪米特法则强调了类之间的松耦合,减少了依赖,使得高层模块不依赖于底层模块的实现细节,…

    Java 2023年5月26日
    00
  • SpringBoot依赖注入的三种方式

    下面是关于Spring Boot依赖注入的三种方式的详细讲解: 1. 构造器注入 构造器注入是为Bean的属性提供值的一种方式。当容器实例化Bean时,Spring容器会将与Bean依赖关系具有兼容性的Bean传递给它的构造器,并初始化Bean的属性。 这种方式适用于具有重要和必需依赖关系的Bean,并且确保了Bean初始化后的完整性。 下面是一个示例: @…

    Java 2023年5月15日
    00
  • Python中使用jpype调用Jar包中的实现方法

    Sure,下面是Python中使用jpype调用Jar包中的实现方法的完整攻略: 确认环境和准备工作 首先需要确认使用的是Python3,并且安装了最新版的Pip,然后使用Pip来安装jpype1库。同时需要准备好需要使用的Jar包或Java类所在的Jar包。 使用示例 假设我们有一个Java类com.example.HelloWorld,它包含一个名为sa…

    Java 2023年5月26日
    00
  • 将Excel中数据导入到Access数据库中的方法

    将Excel中数据导入到Access数据库中的方法可以通过以下步骤实现: 第一步:准备工作 在开始之前,需要完成以下准备工作: 熟悉Excel软件和Access数据库软件的基本操作; 确定好数据源Excel文件和目标数据库Access文件的路径; 确定好要将Excel中的哪些数据导入到Access中。 第二步:准备Access数据库 在开始导入数据之前,需要…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部