Struts2框架标签

news2024/11/27 6:19:53

Struts2框架标签

  • 1、前言
  • 2、UI标签
    • 2.1、表单标签
    • 2.1、非表单标签
  • 3、通用标签
  • 4、例子
    • 4.1、实体类User
    • 4.2、控制器UserAction
    • 4.3、配置文件struts.xml
    • 4.4、页面users.jsp
    • 4.5、测试

1、前言

Struts2有丰富的tag标签可以使用,即Struts2的标签库,如果能够灵活运用,则能大大提升开发效率。Struts2标签分为UI标签和通用标签。使用前需要引入Struts2的标签库。

2、UI标签

UI标签又分为表单标签和非表单标签。需要注意的是,一般在使用UI标签时,会将Struts2的theme主题设置为simple,如下在struts.xml配置中修改设置:
在这里插入图片描述

2.1、表单标签

常用的表单标签如下:
在这里插入图片描述
在jsp页面中使用表单标签,使用表单标签之前如下:

    <form action="login.action" method="post">
       <div>
           <label>用户名:</label>
           <input type="text"  name="username"  value="${username }"/>
           <font color="red">
                <s:fielderror fieldName="username" />
           </font>
       </div>
       <div>
          <label>密码:</label>
          <input type="password" name="password"  value="${password }"/>
          <font color="red">
                <s:fielderror fieldName="password" />
           </font>
           <font color="red">
                <s:fielderror fieldName="msg" />
           </font>
       </div>
       <div>
           <input  type="submit" value="登录" />
       </div>
    </form>

使用表单标签替换普通标签之后,如下:

    <s:form action="login.action" method="post">
       <div>
           <label>用户名:</label>
           <s:textfield  name="username"  />
           <font color="red">
                <s:fielderror fieldName="username" />
           </font>
       </div>
       <div>
          <label>密码:</label>
          <s:password name="password" />
          <font color="red">
                <s:fielderror fieldName="password" />
           </font>
           <font color="red">
                <s:fielderror fieldName="msg" />
           </font>
       </div>
       <div>
           <s:submit value="登录" />
       </div>
    </s:form>

使用表单标签之后,只要标签的name值与Action里定义的属性值一致,并且提供了get/set方法,值可自动回显,无需添加额外的value属性。

2.1、非表单标签

在这里插入图片描述
上面实际已经使用过了:
在这里插入图片描述

3、通用标签

struts2中的通用标签有很多,只看最常用的,如下:
在这里插入图片描述
<s:iterator>标签应该是最常用的,是一个遍历标签,用于遍历集合。说明如下:
在这里插入图片描述

4、例子

下面使用一个例子来说明以上标签。

4.1、实体类User

@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
	
	private Integer id;
	
	private String userName;
	
	private Integer sex;
	
	private String address;
	
	private String phone;
	

}

4.2、控制器UserAction

public class UserAction extends ActionSupport {
	
	// 值栈
	private List<User> users;

	public List<User> getUsers() {
		return users;
	}

	public void setUsers(List<User> users) {
		this.users = users;
	}
	
	public String userList() throws Exception {
		users = new ArrayList<User>();
        users.add(new User(1,"张三",1,"四川成都","17631228611"));
        users.add(new User(2,"李四",1,"重庆渝中南岸","19817261661"));
        users.add(new User(3,"刘雪影",0,"广西南宁","15819284142"));
        users.add(new User(4,"西门吹牛",1,"剑神山庄","1888888888"));
        users.add(new User(5,"寒千落",0,"峨眉山","18763275323"));
		return SUCCESS;
	}
	
	
}

4.3、配置文件struts.xml

在这里插入图片描述

4.4、页面users.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>用户列表</title>
</head>
<body>
    <table border="1" cellspacing="0" width="1000" align="center">
           <tr align="center">
               <td>编号</td>
               <td>姓名</td>
               <td>性别</td>
               <td>地址</td>
               <td>电话</td>
           </tr>
           <s:iterator value="users">
               <tr align="center">
                   <td><s:property value="id" /></td>
                   <td><s:property value="userName" /></td>
                   <td>
                      <s:if test="sex==1"></s:if>
                      <s:else></s:else>
                   </td>
                   <td><s:property value="address" /></td>
                   <td><s:property value="phone" /></td>
               </tr>
           </s:iterator>
    </table>
</body>
</html>

4.5、测试

直接在浏览器中访问user.action(注意与配置文件中action的name值一致,带后缀action),如下:
在这里插入图片描述
表格内容正常显示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/143231.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

彻底理解动态规划:编辑距离

本篇的题目非常经典&#xff0c;几乎是面试必备&#xff0c;即&#xff0c;编辑距离问题&#xff0c;edit distance&#xff1b; 给定两个字符串word1以及word2&#xff0c;返回将word1转为word2需要的最少步骤&#xff0c;在每一步中你可以针对字符串word1进行以下操作&#…

技术开发115

技术开发115 业务内容&#xff1a; 拖车用辅助脚、拖车用零件类、特殊车辆用车轴Sub。Assy产品、面向汽车产业的生产设备、面向建设机械的零部件类、面向汽车产业的检查夹具 公司简介&#xff1a; 董事长&#xff1a;佐藤安弘 资本金&#xff1a;4500万日元 员工数&#x…

shell第五天练习

题目&#xff1a; 1、编写函数&#xff0c;实现打印绿色OK和红色FAILED&#xff0c;判断是否有参数&#xff0c;存在为Ok&#xff0c;不存在为FAILED 2、编写函数&#xff0c;实现判断是否无位置参数&#xff0c;如无参数&#xff0c;提示错误 3、编写函数实现两个数字做为参数…

聊聊前端安全之CSRF

本文作者为奇舞团前端开发工程师一、什么是CSRFCSRF&#xff08;Cross Site Request Forgery&#xff0c;跨站域请求伪造&#xff09;&#xff0c;通常缩写为 CSRF。CSRF攻击是攻击者通过伪装成受信任用户向服务器发起各种请求&#xff0c;达到欺骗服务器接收并执行指令&#x…

【数据结构】顺序表

【本篇内容】线性表顺序表线性表线性表是n个具有相同特性的数据元素的有限序列。常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串......线性表在逻辑上是线性结构&#xff0c;但是在物理结构上并一定是连续的&#xff0c;线性表在物理上存储时&#xff0c;通常是以数组…

保证原子性的几种方式,你都知道吗???

1. 前言 今天主要是从实战 浅谈原理的角度来说下&#xff0c;并发线程下原子性的几种处理方式&#xff0c;好了废话不多说了&#xff0c;接下来让我们看看吧 2. 开始 在开始之前需要提问下大家, 代码i ; 能保持原子性吗&#xff1f;&#xff1f;&#xff1f; 是不是一句话就执…

C++——命名空间,输入输出,缺省参数

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;数据结构——二叉树 &#x1f525;<3>创作者&#xff1a;我的代码爱吃辣 ☂️<4>开发环境&#xff1a;Visual Studio 2022 &#x1f4ac;<5>前言&#xff1a;补充C语言…

Java 诊断利器 Arthas JVM命令

一、jvm 相关命令介绍 命令说明dashboard当前系统的实时数据面板getstatic查看类的静态属性heapdumpdump java heap, 类似 jmap 命令的 heap dump 功能jvm查看当前 JVM 的信息logger查看和修改 loggermbean查看 Mbean 的信息memory查看 JVM 的内存信息ognl执行 ognl 表达式per…

【Android春招】Android基础day2

一、填空题 1&#xff0e;除了开启开发者选项之外&#xff0c;还需打开手机上的 _ 开关&#xff0c;然后才能在手机上调试App。 USB调试 2&#xff0e;App开发的两大技术路线包括 _和混合开发。 原生开发 3&#xff0e;App工程的编译配置文件名为 _。 build.gradle 4&#xff0…

挂载光盘,配置yum源并且安装http软件包 ansible(4)

目录 一、挂载本地光盘到/mnt 二、配置yum源 一、挂载本地光盘到/mnt 第一步&#xff1a; 使用mount模块 注&#xff1a;fstype代表文件格式 二、配置yum源 第一种方法&#xff1a; 使用yum_repository模块 检验是否有对应文件在受控主机node1受控主机&#xff1a;node2受控…

Zipkin数据持久化配置

上一篇我们了解了Zipkin的基础知识以及Zipkin的服务端搭建。 在使用过程中很多同学发现了他的秘密&#xff0c;Zipkin模式将数据保存在内存中&#xff0c;当我们重启后&#xff0c;追踪数据便会丢失。其实&#xff0c;Zipkin也支持将追踪数据保存到MySql或者ES中。 持久化到M…

大数据基础平台搭建-(四)HBbase集群HA+Zookeeper搭建

大数据基础平台搭建-&#xff08;四&#xff09;HBbase集群HAZookeeper搭建 大数据平台系列文章&#xff1a; 1、大数据基础平台搭建-&#xff08;一&#xff09;基础环境准备 2、大数据基础平台搭建-&#xff08;二&#xff09;Hadoop集群搭建 3、大数据基础平台搭建-&#xf…

Linux学习笔记——Nginx安装部署

5.3、Nginx安装部署 5.3.1、简介 Nginx&#xff08;engine x&#xff09;是一个高性能的HTTP和反向代理Web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务。 同Tomcat一样&#xff0c;Nginx可以托管用户编写的WEB应用程序成为可访问的网页服务&#xff0c;同时也可以作为…

二十七、Docker (3)

&#x1f33b;&#x1f33b; 目录一、java开发者Docker常用镜像容器创建&#xff08;本地&#xff09;1.1 资源上传1.2 还原部署1.2.1 部署jdk1.2.2 部署tomcat1.2.3 部署nginx1.2.4 部署mysql二、java开发者Docker常用镜像容器创建(官网拉取)2.1 jdk部署2.1.1 拉取jdk镜像2.1.…

verilog学习笔记- 7)verilog程序框架

目录 注释&#xff1a; 关键字&#xff1a; Verilog常用的关键字&#xff1a; 程序框架&#xff1a; 注释&#xff1a; Verilog HDL 中有两种注释的方式&#xff0c;一种是以“/*”符号开始&#xff0c;“*/”结束&#xff0c;在两个符号之间的语句都 是注释语句&#xff…

7-10 集合相似度

给定两个整数集合&#xff0c;它们的相似度定义为&#xff1a;Nc​/Nt​100%。其中Nc​是两个集合都有的不相等整数的个数&#xff0c;Nt​是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。 输出格式&#xff1a; 对每一对需要计算的集合&…

DaVinci:键 - 键混合器

调色页面&#xff1a;键Color&#xff1a;Key当选中一个键混合器节点时&#xff0c;键 Key调板上对应显示键混合器 Key Mixer的相关选项。键混合器节点默认有两个输入链接。可在键混合器节点上右击选择“添加”或“移除”一个输入。所有的输入链接和惟一的输出链接均可在键调板…

Elasticsearch在各大互联网公司大量真实的应用案例

国内现在有大量的公司都在使用 Elasticsearch&#xff0c;包括携程、滴滴、今日头条、饿了么、360安全、小米、vivo等诸多知名公司。 除了搜索之外&#xff0c;结合Kibana、Logstash、Beats&#xff0c;Elastic Stack还被广泛运用在大数据近实时分析领域&#xff0c;包括日志分…

SQL如何在数据库中执行

数据库的服务端&#xff0c;可分为执行器(Execution Engine) 和 存储引擎(Storage Engine) 两部分&#xff1a; 执行器负责解析SQL执行查询存储引擎负责保存数据 1 SQL如何在执行器中执行 # 查询用户ID大于50的用户的所有订单 SELECT u.id AS user_id, u.name AS user_name,…

详解回调函数

目录 前言 一、 实现一个简单的计算器 1.1 - 代码一 1.2 - 代码二 二、qsort 函数的介绍 三、改进冒泡排序函数 前言 回调函数就是一个通过函数指针调用的函数。如果把函数的指针&#xff08;地址&#xff09;作为参数传递给另一个函数&#xff0c;当这个指针被用来调用其…