本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用

内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系。

本人互联网技术爱好者,互联网技术发烧友

微博:伊直都在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标签等的更多相关文章

  1. [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  3. [原创]java WEB学习笔记95:Hibernate 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  4. Java后台处理框架之struts2学习总结

    Java后台处理框架之struts2学习总结 最近我在网上了解到,在实际的开发项目中struts2的使用率在不断降低,取而代之的是springMVC.可能有很多的朋友看到这里就会说,那还不如不学str ...

  5. 学习笔记:CentOS7学习之二十:shell脚本的基础

    目录 学习笔记:CentOS7学习之二十:shell脚本的基础 20.1 shell 基本语法 20.1.1 什么是shell? 20.1.2 编程语言分类 20.1.3 什么是shell脚本 20. ...

  6. 学习笔记:CentOS7学习之十九:Linux网络管理技术

    目录 学习笔记:CentOS7学习之十九:Linux网络管理技术 本文用于记录学习体会.心得,兼做笔记使用,方便以后复习总结.内容基本完全参考学神教育教材,图片大多取材自学神教育资料,在此非常感谢MK ...

  7. 学习笔记:CentOS7学习之十六:LVM管理和ssm存储管理器使用

    目录 学习笔记:CentOS7学习之十六:LVM管理和ssm存储管理器使用 16.1 LVM的工作原理 16.1.1 LVM常用术语 16.1.2 LVM优点 16.2 创建LVM的基本步骤 16.2 ...

  8. HTML+CSS学习笔记 (6) - 开始学习CSS

    HTML+CSS学习笔记 (6) - 开始学习CSS 认识CSS样式 CSS全称为"层叠样式表 (Cascading Style Sheets)",它主要是用于定义HTML内容在浏 ...

  9. 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧

    目录 学习笔记:CentOS7学习之二十五:shell中色彩处理和awk使用技巧 25.1 Shell中的色彩处理 25.2 awk基本应用 25.2.1 概念 25.2.2实例演示 25.3 awk ...

随机推荐

  1. Delphi中如何控制其他程序窗体上的窗口控件

    回调函数一般是按照调用者的要求定义好参数和返回值的类型,你向调用者提供你的回调函数的入口地址,然后调用者有什么事件发生的时候就可以随时按照你提供的地址调用这个函数通知你,并按照预先规定好的形式传递参数 ...

  2. Ext TabPanel items高度宽度自适应

    写Ext的时候经常会遇到一些莫名其妙,令人感到非常神奇的问题,甚至都没办法用语言去描述它,搞的人想请教一下百度或Google都不知道该去怎么问,简直能够令人发疯.先来看张截图吧. 有没有注意到里面的G ...

  3. js 程序出发事件

    <html> <head><title>Test</title></head> <body> <div id='divTe ...

  4. 【转】一篇很全面的freemarker教程---有空慢慢实践

    FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:<#-- ... -->格式部分,不会输 ...

  5. 出现upstream sent too big header while reading response header from upstream错误

    一个POS系统,出现upstream sent too big header while reading response header from upstream错误. 1.反向代理端,可以放到se ...

  6. java JDK8 学习笔记——第17章 反射与类加载器

    第十七章 反射与类加载器 17.1 运用反射 反射:.class文档反映了类基本信息,从Class等API取得类信息的方式称为反射. 17.1.1 Class与.class文档 1.java.lang ...

  7. JavaSE的知识

    一 SE的知识体系: java基础: 一基础语法 8个基本数据类型-->8个包装类 数据类型转换: 自动转换(从小到大) 强制转换(从大到小) 注意:int 和char 分支与判断: if(){ ...

  8. 添加事件(jquery)

    对盒子内部的盒子添加跟本身盒子相同的事件的时候,需要小心谨慎一点. 诸如: 从表象上看似乎没有什么太大问题,但是却存在一个致命的问题,就是每次点击box的时候,都会给test添加一个点击事件,而添加的 ...

  9. Aspose.Words 开发时遇到的问题

    问题一 Document doc.Save(Response, "学员报名表.pdf", ContentDisposition.Inline, null); 执行后没有效果,因为异 ...

  10. select下拉框美化

      其实用下列CSS就可以解决,原理是将浏览器默认的下拉框样式清除,然后应用上自己的,再附一张向右对齐小箭头的图片即可. select { /*Chrome和Firefox里面的边框是不一样的,所以复 ...