[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等
2016-09-25 16:09
866 查看
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用
内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。
本人互联网技术爱好者,互联网技术发烧友
微博:伊直都在0221
QQ:951226918
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Struts2 自动把Action 对象放入到值栈中
放入的时间为:Struts2 终将调用 Action 类的 Action方法(即配置的Action 的class 所以应的那个类 ,method所指定的方法)。但是在调用方法之前,
> 创建了一个StrutsActionProxy 对象,
> 在创建StrutsActionProxy 对象之后,把Action 对象放入值栈中。
1.property 标签
1)property 标签用来输出一个值栈属性的值:
对于对象栈,打印的是值栈中对应的属性值 ;
对于 Map 栈,打印request, session, application, 的某个属性值 或 某个请求参数的值 patamters.请求参数名
<?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学习笔记63:Struts2学习之路--表单标签 用户注册模块
- [原创]java WEB学习笔记62:Struts2学习之路--表单标签:form,表单标签的属性,textfield, password, hidden,submit ,textarea ,checkbox ,list, listKey 和 listValue 属性,select ,optiongroup ,checkboxlist
- SSH笔记-set标签、push标签、if/elseif/else标签、iterator标签、sort标签
- [原创]java WEB学习笔记53:Struts2学习之路---前奏:使用 Filter 作为控制器的 MVC
- [原创]java WEB学习笔记81:Hibernate学习之路--- 对象关系映射文件(.hbm.xml):hibernate-mapping 节点,class节点,id节点(主键生成策略),property节点,在hibernate 中 java类型 与sql类型之间的对应关系,Java 时间和日期类型的映射,Java 大对象类型 的 映射 (了解),映射组成关系
- [原创]java WEB学习笔记57:Struts2学习之路---ActionSupport类的说明
- [原创]java WEB学习笔记56:Struts2学习之路---Struts 版本的 登录 demo
- [原创]java WEB学习笔记68:Struts2 学习之路-- 类型转换与复杂属性配合使用
- [原创]java WEB学习笔记74:Struts2 学习之路--自定义拦截器,struts内建的拦截器
- [原创]java WEB学习笔记60:Struts2学习之路--Actioin-声明式异常处理
- [原创]java WEB学习笔记65:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) ModelDriven拦截器 paramter 拦截器
- [原创]java WEB学习笔记69:Struts2 学习之路-- 消息处理与国际化,概述,配置国际资源文件,访问国际化消息,通过超链接切换语言
- [原创]java WEB学习笔记70:Struts2 学习之路-- 输入验证,声明式验证,声明是验证原理
- [原创]java WEB学习笔记16:JSP指令(page,include),JSP标签(forwar,include,param)
- [原创]java WEB学习笔记54:Struts2学习之路---概述,环境的搭建
- [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈
- [原创]java WEB学习笔记83:Hibernate学习之路---双向 1-n介绍,关键点解释,代码实现,set属性介绍(inverse,cascade ,order-by )
- [原创]java WEB学习笔记64:Struts2学习之路--主题
- [原创]java WEB学习笔记71:Struts2 学习之路-- struts2常见的内建验证程序及注意点,短路验证,非字段验证,错误消息的重用
- [原创]java WEB学习笔记58:Struts2学习之路---Result 详解 type属性,通配符映射