[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用
内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。
本人互联网技术爱好者,互联网技术发烧友
微博:伊直都在0221
QQ:951226918
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Struts2 自动把Action 对象放入到值栈中
放入的时间为:Struts2 终将调用 Action 类的 Action方法(即配置的Action 的class 所以应的那个类 ,method所指定的方法)。但是在调用方法之前,
> 创建了一个StrutsActionProxy 对象,
> 在创建StrutsActionProxy 对象之后,把Action 对象放入值栈中。
1.property 标签
1)property 标签用来输出一个值栈属性的值:
对于对象栈,打印的是值栈中对应的属性值 ;
对于 Map 栈,打印request, session, application, 的某个属性值 或 某个请求参数的值 patamters.请求参数名

2)示例:
输出 Action 属性 customerId 的值: <s:property value=“customerId”/>
输出 session 属性 userName 的值: <s:property value=“#session.userName”/>
注意:
如果 value 属性没有给出, ValueStack 值栈栈顶对象的值被输出
在许多情况下, JSP EL 可以提供更简洁的语法
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="testTag.action?name=jason">TestTag</a> <%
session.setAttribute("date", new Date());
%>
</body>
</html>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body> <s:debug></s:debug> <br><br> <s:property value="productName"/>
<br><br>
<s:property value="#session.date"/>
<br><br>
<s:property value="#parameters.name"/>
</body>
</html>
common-tag.jsp
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<package name="default" namespace="/" extends="struts-default">
<!-- 测试通用标签 -->
<action name="testTag" class="com.jason.struts2.Product" method="testTag">
<result >/common-tag.jsp</result>
</action> </package>
struts.xml
2.uri 标签
1)作用:url 标签用来动态地创建一个 URL

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body> <s:debug></s:debug> <br><br> <s:property value="productName"/>
<br><br>
<s:property value="#session.date"/>
<br><br>
<s:property value="#parameters.name"/> <br><br>
<!--创建一个 URL 字符串 -->
<s:url value="/getProduct" var="url" namespace="">
<!-- 指定 url 包含的请求参数, 10000 不可能是一个属性名,Struts2 把10000 直接作为属性值 -->
<s:param name="productId" value="10000"></s:param>
</s:url>
${url } <br><br>
<s:url value="/getProduct" var="url1" namespace="">
<!--对于 value 值会自动的进行 OGNL 解析 ,若不希望进行OGNL 进行解析,则使用 单引号 引起来-->
<s:param name="productId" value="'productId'"></s:param>
</s:url>
${url1 } <br><br>
<!-- 构建一个请求 aciton 的地址 -->
<s:url action="testAction" namespace="/helloword" method="save" var="url2">
</s:url>
${url2 } <br><br>
<!--includeParams:get 为get请求;all 为post 或者 get请求;one 都不要 -->
<s:url value="testUrl" var="url3" includeParams="all"> </s:url>
${url3 } </body>
</html>
3.*param 标签
1)param 标签用来把一个参数传递给包含着它的那个标签

2)无论在给出 value 值时有没有使用 %{}, Struts 都会对它进行 ognl 求值
3)如果想传递一个 String 类型的字符串作为参数值, 必须把它用单引号括起来.
4)可以把 value 属性的值写在开始标签和结束标签之间. 利用这种方式来传递一个 EL 表达式的值
4.*set 标签
1)set 标签用来在以下 Map 对象里创建一个键值对:
-- ValueStack 值栈的 ContextMap 值栈
-- Map 类型的 session 对象
-- Map 类型的 application 对象
-- Map 类型的 request 对象
-- Map 类型的 page 对象
注意:对于value 值,同样进行ognl 自动解析。
s:set 向page,request,session,application 域对象中加入一个属性
<br><br>
<s:set name="productName" value="productName" scope="request"></s:set>
productName:${requestScope.productName }
等同于
<!-- value值 是 值栈 的栈顶对象的 属性
<s:setname="productName" value="[1].productName" scope="request"></s:set>
-->
5.*push 标签
1)push 标签的功能和 set 标签类似.
2)push 标签将把一个对象压入 ValueStack 而不是压入 ContextMap.
3)push 标签在标签 起始时把一个对象压入栈, 标签结束时将对象弹出栈.

s:push 把一个对象在标签开始 后压入到值栈中,标签结束时,弹出值栈
<%
Person person = new Person();
person.setAge(10);
person.setName("jason"); request.setAttribute("person", person);
%>
<s:push value="#request.person">
${name}
</s:push>
6.*if, else 和 elseif 标签
这三个标签用来进行条件测试, 它们的用途和用法类似于 if, else 和 elseif 关键字. 其中 if 和 elseif 必须有 test 属性

<s:if test="age > 18">
青年
</s:if>
<s:elseif test="age > 10">
青少年
</s:elseif>
<s:else>
少年
</s:else>
7.*iterator 标签:遍历集合,把这个可遍历对象里的每一个对象依次压入和弹出栈
用来遍历一个数值 ,collection,或者一个map,并把这个可遍历对象里的每一个元素依次压入和弹出ValueStack 栈中
在开始执行的时候,iterator标签会先把iteratorStatus类的一个实例压入ContextMap,并在每次遍历循环时更新它,可以将一个指向itertatorStatus 对象的变量赋给status属性
iterator 标签的 status 属性的属性值

<%
List<Person> persons = new ArrayList<Person>();
persons.add(new Person("AA",10));
persons.add(new Person("BB",20));
persons.add(new Person("CC",30));
persons.add(new Person("DD",40));
persons.add(new Person("EE",50));
persons.add(new Person("FF",60));
persons.add(new Person("GG",70)); request.setAttribute("persons", persons); %> <s:iterator value="#request.persons">
${name } - ${age }<br>
</s:iterator>
8.*sort 标签
sort 标签用来对一个可遍历对象里的元素进行排序

package com.jason.struts2;
import java.util.Comparator;
public class PersonComparator implements Comparator<Person>{
@Override
public int compare(Person o1, Person o2) {
return o1.getName().compareTo(o2.getName());
}
}
<br><br>
<%
PersonComparator pc = new PersonComparator();
request.setAttribute("comparator", pc); %> <s:sort comparator="#request.comparator" source="persons" var="resultPerson"></s:sort>
<s:iterator value="#attr.resultPerson" >
${name } - ${age }<br>
</s:iterator>
9.*date 标签
date 标签用来对 Date 对象进行排版

format 属性的值必须是 java.text.SimpleDateFormat 类里定义的日期/时间格式之一.
<s:date name="#session.date" format="yyyy-MM-dd hh:mm:ss" var="result"/>
date:${date2}
10. *a 标签:a 标签将呈现为一个 HTML 连接. 这个标签可以接受 HTML 语言中的 a 元素所能接受的所有属性.
<s:iterator value="persons">
<!-- 可以使用%{} 把属性包装起来,使其进行强制的ognl解析 -->
<s:a href="getPerson.action?name=%{name}">${name }</s:a>
</s:iterator>
其他标签:
11.
include 标签:
include 标签用来把一个 Servlet 或 JSP 页面的输出包含到当前页面里来.
20
[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等的更多相关文章
- [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记95:Hibernate 目录
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Java后台处理框架之struts2学习总结
Java后台处理框架之struts2学习总结 最近我在网上了解到,在实际的开发项目中struts2的使用率在不断降低,取而代之的是springMVC.可能有很多的朋友看到这里就会说,那还不如不学str ...
- 学习笔记:CentOS7学习之二十:shell脚本的基础
目录 学习笔记:CentOS7学习之二十:shell脚本的基础 20.1 shell 基本语法 20.1.1 什么是shell? 20.1.2 编程语言分类 20.1.3 什么是shell脚本 20. ...
- 学习笔记:CentOS7学习之十九:Linux网络管理技术
目录 学习笔记:CentOS7学习之十九:Linux网络管理技术 本文用于记录学习体会.心得,兼做笔记使用,方便以后复习总结.内容基本完全参考学神教育教材,图片大多取材自学神教育资料,在此非常感谢MK ...
- 学习笔记:CentOS7学习之十六:LVM管理和ssm存储管理器使用
目录 学习笔记:CentOS7学习之十六:LVM管理和ssm存储管理器使用 16.1 LVM的工作原理 16.1.1 LVM常用术语 16.1.2 LVM优点 16.2 创建LVM的基本步骤 16.2 ...
- HTML+CSS学习笔记 (6) - 开始学习CSS
HTML+CSS学习笔记 (6) - 开始学习CSS 认识CSS样式 CSS全称为"层叠样式表 (Cascading Style Sheets)",它主要是用于定义HTML内容在浏 ...
- 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧
目录 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧 25.1 Shell中的色彩处理 25.2 awk基本应用 25.2.1 概念 25.2.2实例演示 25.3 awk ...
随机推荐
- 变态的HelloWorld
public static void main(String[] args) { int i, n[] = { (((1 << 1) << (1 << 1) < ...
- QDir路径的测试与创建-QT
#include <QCoreApplication> #include <QDir> #include<QtDebug > #include<QFileIn ...
- 如何迁移测试的MAGENTO到正式运行的MAGENTO
或者这个题目叫做如何改变MAGENTO的运行目录 第一,我们需要在PHPMYADMIN备份整个MAGENTO的数据.备份数据并且存为.SQL. 在这儿假设你的测试网站在http://dev.site. ...
- $.ajax所犯的错误。success后面不执行
$.ajax({ type: 'post', url: '../AshxHandler/HandlerAddPhoto.ashx', data: { clientPath: photoName }, ...
- iOS 支付 [支付宝、银联、微信](转载)
资料 支付宝 //文档idk都包含了安卓.iOS版 银 联 银联官网资料 Demo Demo给了一个订单号,做测试使用,若出现支付失败什么的,可能是已经被别人给支付了,或者是服务器订单过期了 ~ 一. ...
- SQLServer如何处理数据集的维度变化
Student表有三列,分别是姓名.课程.成绩 Name Curricula Mark 张三 语文 70 李四 数学 80 王朝 英语 59 城南 马哲 70 王朝 语文 90 我想得到的效果是,列出 ...
- jQuery选择器总结(转)
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 ...
- ZooKeeper常见问题(转)
这段时间来,也在和公司里的一些同学交流使用zk的心得,整理了一些常见的zookeeper问题.这个页面的目标是解答一些zk常见的使用问题,同时也让大家明确zk不能干什么.页面会一直更新. 客户端 1. ...
- Access 2003版数据库在Win7 64位系统下的不适应
使用ODBC连接不适应 使用microsoft.jet.4.0链接会出现“未在本地计算机上注册microsoft.jet.4.0” 应使用 Provider=Microsoft.ACE.OLEDB.1 ...
- ASP.NET Highcharts图表
js 图表代码,如下: charts[i] = new Highcharts.Chart({ chart: { backgroundColor: { linearGradient: [0, 0, 50 ...