重温经典struts1之常用标签

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

前言

上一篇,我们学习了struts的基本概念,怎样搭建struts开发环境,从编写formbean,action到jsp页面,以及怎样将他们配入到struts-config.xml文件中,实现通过浏览器发送请求,将处理结果返回页面简单的login功能。
今天我们来学习下struts为我们提供的常用标签,标签是视图技术,主要用在jsp中,常用的功能是,在action中设置到request域或session域中的数据,进行空判断,日期数字格式化,基本数据类型,字符串或javabean中的对象以及html文本直接或转义,最终输出到页面,还可以遍历集合。


配置和使用

struts标签和国际化绑定,在struts-config.xml文件加入下记内容

<struts-config>中间略<message-resources parameter="MessageResources" />  ←追加的内容中间略
</struts-config>

在jsp页面中第二行引入下记指令
struts有很多标签库,我们今天主要来学习常用的bean和logic标签

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>

常用标签

  • < bean:write>
    用途是将基本数据类型,字符串或jiavabean中的内容打印到页面,对日期数字数据进行格式化,html文本内容直接或转义输出
    项目中常用于输出,格式化数据使用较少(基本都在java中进行)
    通过下边的示例以及运行效果可以更好的理解使用方法

action代码如下(示例):

import java.util.Date;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;import xxx.xxx.pojo.Group;
import xxx.xxx.pojo.User;public class BeanWriteAction extends Action {@Overridepublic ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response) {request.setAttribute("hello", "helloworld");request.setAttribute("htmlText", "<font color='red'>text red color</font>");request.setAttribute("today", new Date());request.setAttribute("n", 12345.1234);Group group = new Group();group.setName("group1");User user = new User();user.setUsername("zhang san");user.setAge(28);user.setGroup(group);request.setAttribute("user", user);return mapping.findForward("success");}
}

代码如下(示例):

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body><h1>测试beanwrite标签</h1><hr><li>普通字符串</li>hello(标签):<bean:write name="hello"/><br><p></p>html 文本(defalut):<bean:write name="htmlText"/><br>html 文本(filter=false):<bean:write filter="false" name="htmlText"/><br><li>格式化日期</li><p></p>系统时间(default):<bean:write name="today"/><br>系统时间(format):<bean:write name="today" format="yyyy-MM-dd HH:mm:ss"/><br><li>格式化数字</li><p></p>数值(default):<bean:write name="n"/><br>数值(format):<bean:write name="n" format="###,###.00000#"/><br><li>javabean</li><p></p>姓名:<input type="text" name="username" value="<bean:write name="user" property="username"/>"><br>年龄:<input type="text" name="age" value="<bean:write name="user" property="age"/>"><br>分组:<input type="text" name="groupname" value="<bean:write name="user" property="group.name"/>"><br></body>
</html>

< bean:write>运行效果
在这里插入图片描述

  • < logic:empty>,< logic:notempty>,< logic:present >,< logic:notPresent>
    这些标签通过字面意思来看,主要是判断,request或session中变量的值是否存在或是否为空值
    通过下边的示例以及运行效果可以很好的理解使用方法

action代码如下(示例):


import java.util.ArrayList;
import java.util.Date;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;import xxx.xxx.pojo.Group;
import xxx.xxx.pojo.User;public class LogicAction extends Action {@Overridepublic ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response) {request.setAttribute("attr1", null);request.setAttribute("attr2", "");request.setAttribute("attr3", new ArrayList());return mapping.findForward("success");}
}

jsp代码如下(示例):

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body><h1>测试logic标签(empty,notempty,present,notpresent)</h1><hr><logic:empty name="attr1">attr1为空<br></logic:empty><logic:notEmpty name="attr1">attr1不为空<br></logic:notEmpty><logic:present name="attr1">attr1存在<br></logic:present><logic:notPresent name="attr1">attr1不存在<br></logic:notPresent><p><logic:empty name="attr2">attr2为空<br></logic:empty><logic:notEmpty name="attr2">attr2不为空<br></logic:notEmpty><logic:present name="attr2">attr2存在<br></logic:present><logic:notPresent name="attr2">attr2不存在<br></logic:notPresent><p><logic:empty name="attr3">attr3为空<br></logic:empty><logic:notEmpty name="attr3">attr3不为空<br></logic:notEmpty><logic:present name="attr3">attr3存在<br></logic:present><logic:notPresent name="attr3">attr3不存在<br></logic:notPresent><p>
</body>
</html>

< logic:empty>,< logic:notempty>,< logic:present >,< logic:notPresent>运行效果
在这里插入图片描述

  • < logic:iterate>
    主要是遍历集合中的数据,实际项目中常用javabean集合以及嵌套的javabean的输出
    通过下边的示例以及运行效果可以很好的理解使用方法

action代码如下(示例):


import java.util.ArrayList;
import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;import xxx.xxx.pojo.Group;
import xxx.xxx.pojo.User;public class LogicIterateAction extends Action {@Overridepublic ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,HttpServletResponse response) {Group group = new Group();group.setName("group1");List<User> users = new ArrayList<>();for (int i = 0; i< 10; i++) {User user = new User();user.setUsername("zhang san_"+i);user.setAge(28+i);user.setGroup(group);users.add(user);}request.setAttribute("users", users);return mapping.findForward("success");}
}

jsp代码如下(示例):

<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body><h1>测试logic迭代标签</h1><hr><table border="1"><tr><td>姓名</td><td>年龄</td><td>所属组</td></tr><logic:empty name="users"><tr><td colspan="3">没有符合条件的数据</td></tr></logic:empty><logic:notEmpty name="users"><logic:iterate id="user" name="users"><tr><td><bean:write name="user" property="username"/></td><td><bean:write name="user" property="age"/></td><td><bean:write name="user" property="group.name"/></td></tr></logic:iterate></logic:notEmpty></table>
</body>
</html>

< logic:iterate>运行效果
在这里插入图片描述

总结

以上就是struts为我们提供的基本标签的使用,以后我也会随时更新项目中一些常用的标签,下篇见。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink之流的转换

ProcessFuncion处理函数 功能 拥有富函数功能 - 生命周期方法 - 状态编程对元素的处理功能processElement, 在不同的处理函数中&#xff0c;该方法的名字略有区别定时器编程 TimeService:定时服务,可以用于注册定时器&#xff0c;删除定时器ontimer():定时器触发后会自动调用该…

C++中字符串详解

在C语言中只能通过字符串数组来模拟字符串&#xff0c;没有字符串类型。在C引入了string类来表示字符串类型。从而用它定义字符串。 在C语言中&#xff1a; char str[] "abc"; char str[] {a&#xff0c;b,c,\0}; char* str "abc"; //这三种形式是C语言…

Java TCP(一对一)聊天简易版

客户端 import java.io.*; import java.net.Socket; import java.util.Date; import javax.swing.*;public class MyClient {private JFrame jf;private JButton jBsend;private JTextArea jTAcontent;private JTextField jText;private JLabel JLcontent;private Date data;p…

推荐一个FL Studio最适配的midi键盘?

Hello大家好&#xff01;好消息&#xff01;好消息&#xff01;特大好消息&#xff01; 水果党们&#xff01;终于有属于自己的专用MIDI键盘啦&#xff01; 万众期待的Novation FLKEY系列 正式出炉&#xff01; 做编曲和音乐制作的朋友们&#xff0c;对水果软件FLSTUDIO应该…

使用xshell连接虚拟机(服务器)

作者&#xff1a;余小小 Xshell Xshell [1] 是一个强大的安全终端模拟软件&#xff0c;它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。 Xshell可以…

2023年度盘点:智能汽车、自动驾驶、车联网必读书单

【文末送书】今天推荐几本自动驾驶领域优质书籍 前言 2023年&#xff0c;智能驾驶和新能源汽车行业仍然有着肉眼可见的新进展。自动驾驶技术继续尝试从辅助驾驶向自动驾驶的过渡&#xff0c;更重要的是相关技术成本的下降。根据《全球电动汽车展望2023》等行业报告&#xff0c…

vue-baidu-map实现在地图上选择范围并解决相关问题

vue-baidu-map实现在地图上选择范围并解决相关问题 实现地图上选择不规则范围实现功能遇到的问题1、覆盖物多边形怎么才能盖住覆盖物点2、遇到其他问题 实现地图上选择不规则范围 这个功能比较简单&#xff0c;只需要使用vue-baidu-map插件的覆盖物多边形功能就行了。直接看文…

dToF直方图之美_激光雷达多目标检测

直方图提供了一种简单有效的方法来分析信号分布并识别与目标存在相对应的峰值,并且能够可视化大量数据,让测距数形结合。在车载激光雷达中,对于多目标检测,多峰算法统计等,有着区别于摄像头以及其他雷达方案的天然优势。 如下图,当中有着清晰可见的三个峰值,我们可以非…

Java智慧校园-中小学校园管理系统源码

智慧校园系统是通过信息化手段&#xff0c;实现对校园内各类资源的有效集成 整合和优化&#xff0c;实现资源的有效配置和充分利用&#xff0c;将校务管理过程的优化协调。为校园提供数字化教学、数字化学习、数字化科研和数字化管理。 致力于为家长和教师提供一个全方位、多层…

消费增值:一种改变消费观念的新模式

据统计&#xff0c;全球电子商务市场在过去的五年内以每年20%的速度增长&#xff0c;预计到2025年将达到5.5万亿美元。然而&#xff0c;在这个庞大的市场中&#xff0c;消费者在购物后往往只获得了商品或服务本身&#xff0c;而没有获得更多的附加价值。为了改变这种消费观念&a…

内网穿透的应用-如何结合Cpolar内网穿透工具实现在IDEA中远程访问家里或者公司的数据库

文章目录 1. 本地连接测试2. Windows安装Cpolar3. 配置Mysql公网地址4. IDEA远程连接Mysql小结 5. 固定连接公网地址6. 固定地址连接测试 IDEA作为Java开发最主力的工具&#xff0c;在开发过程中需要经常用到数据库&#xff0c;如Mysql数据库&#xff0c;但是在IDEA中只能连接本…

SpringMVC项目出现404

目录 问题讲解&#xff1a; 解决方案&#xff1a; 1、处理器映射器和处理器适配器以及视图解析器没有配置好 2、Controller的包扫描没有加或者包扫描的配置是错误的 3、当然也有说jar包没有 4、请求地址是错误的 5、还有一种解决办法说web.xml配置DispatcherServlet的时…

Android Studio的笔记--String和byte[]

String和byte[]的相互转换&#xff0c;字节数组转换 String转换byte[]文本16进制字节数组 byte[]转换String文本16进制 其它 String转换byte[] 文本 将字符串&#xff08;String&#xff09;转换为字节&#xff08;byte&#xff09;的方法。默认使用的是UTF-8编码 StandardCh…

二叉树题目:在受污染的二叉树中查找元素

文章目录 题目标题和出处难度题目描述要求示例数据范围 前言解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;在受污染的二叉树中查找元素 出处&#xff1a;1261. 在受污染的二叉树中查找元素 难度 5 级 题目描述 要求…

脱碱软化树脂Tulsimer CXO-5 MP 高盐水除钙镁树脂

一、产品介绍 Tulsimer CXO-5 MP 是一款大孔弱酸性丙烯酸系阳离子交换树脂&#xff0c;能除去水中的碱度和硬度&#xff0c;特别是除去水中的碳酸氢盐、碳酸盐及其它碱性盐类&#xff0c;适合运用于纯水 ,脱碱软化及选择性的去除重金属。适合在宽广的 pH 及温度范围情况下操作…

深入理解软件测试中的Web请求流程!

在软件开发的过程中&#xff0c;软件测试是不可或缺的一环&#xff0c;它有助于确保软件系统的稳定性、可靠性和安全性。而在众多测试中&#xff0c;Web请求流程的测试显得尤为重要&#xff0c;因为几乎所有的现代应用都离不开网络交互。接下来我们将深入探讨软件测试中完整的W…

【带头学C++】----- 九、类和对象 ---- 9.10 C++设计模式之单例模式设计

❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️麻烦您点个关注&#xff0c;不迷路❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️ 目 录 9.10 C设计模式之单例模式设计 举例说明&#xff1a; 9.10 C设计模式之单例模式设计 看过我之前的文章的&#xff0c;简单讲解过C/Q…

<Linux> 进程

目录 一、进程概念 什么是task_struck task_struct包含内容 二、查看进程 1. ps 查看&#xff1a; 2. /proc/目录查看 3. top 指令 三、系统调用获取进程标示符 获取自己、父进程ID 四、创建进程 1. 初识fork 2. 理解fork创建子进程 3. fork后的数据修改 4.for…

直流电和交流电

直流电&#xff08;Direct Current&#xff0c;简称DC&#xff09;和交流电&#xff08;Alternating Current&#xff0c;简称AC&#xff09;是电流的两种基本形式。 1. 直流电 直流电是指电流方向始终保持不变的电流。在直流电中&#xff0c;电子只能沿着一个方向移动。直流电…

网络攻击(二)--情报搜集阶段

4.1. 概述 在情报收集阶段&#xff0c;你需要采用各种可能的方法来收集将要攻击的客户组织的所有信息&#xff0c;包括使用社交网络、Google Hacking技术、目标系统踩点等等。 而作为渗透测试者&#xff0c;你最为重要的一项技能就是对目标系统的探查能力&#xff0c;包括获知…