[原创]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 ...
随机推荐
- 【转】C# HttpWebRequest\HttpWebResponse\WebClient发送请求解析json数据
http://blog.csdn.net/kingcruel/article/details/44036871 版权声明:本文为博主原创文章,未经博主允许不得转载. ================= ...
- Ubuntu 14.04 LTS 64bit 编译SDL的问题
http://blog.csdn.net/jhting/article/details/38523945 Ubuntu 14.04 LTS 64bit 编译SDL的问题 分类: C/C++2014-0 ...
- 在 mac os 上搭建 git server
前言:之前学习了如何使用 git 后,一直想搭建一个本机搭建一个 git server 的,一开始不知道走了弯路用了 gitosis,折腾了我好几天都没配置好.昨晚查资料发现 gitosis 早就过时 ...
- ASP.NET中 WebForm 窗体控件使用及总结【转】
原文链接:http://www.cnblogs.com/ylbtech/archive/2013/03/06/2944675.html ASP.NET中 WebForm 窗体控件使用及总结. 1.A, ...
- TP自带的缓存机制
原文章出处: http://blog.163.com/liwei1987821@126/blog/static/172664928201422133218356/ 动态缓存 Cache缓存类 vie ...
- angularJS推荐显示注入写法
使用js压缩工具时发现压缩之后的控制器注入参数由原来的$scope变成了a,b...这样的字母而导致js失效,那么我们推荐使用完整的显示注入方式来解决此问题! //隐式注入的写法 angular.mo ...
- 如何解决jQuery Validation针对动态添加的表单无法工作的问题?
为了充分利用ASP.NET MVC在服务端呈现HTML的能力,在<利用动态注入HTML的方式来设计复杂页面>一文中介绍了,通过Ajax调用获取HTML来呈现复杂页面中某一部分界面的解决方案 ...
- Dynamics AX Read OLEDB
static System.Data.DataTable getOLEDB_Record(str _dbPath,str _query) { System.Data.OleDb.OleDbConnec ...
- OC的内存管理
摘自:http://blog.csdn.net/hahahacff/article/details/39839571 OC内存管理 一.基本原理 (一)为什么要进行内存管理. 由于移动设备的内存极其有 ...
- JMeter学习-013-JMeter 逻辑控制器之-如果(If)控制器
前文简述了 JMeter 如何通过 HTTP Cookie管理器,实现了在不执行登录操作的情况下,通过 Cookie 实现登录态的操作,具体请参阅:JMeter学习-012-JMeter 配置元件之- ...