[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等

时间:2022-02-16 10:17:05

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

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

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

微博:伊直都在0221

QQ:951226918

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Struts2 自动把Action 对象放入到值栈中

 放入的时间为:Struts2 终将调用 Action 类的 Action方法(即配置的Action 的class 所以应的那个类 ,method所指定的方法)。但是在调用方法之前,

    > 创建了一个StrutsActionProxy 对象,

    > 在创建StrutsActionProxy 对象之后,把Action 对象放入值栈中。

1.property 标签

  1)property 标签用来输出一个值栈属性的值:

    对于对象栈,打印的是值栈中对应的属性值 ;

    对于 Map 栈,打印request, session, application, 的某个属性值 或 某个请求参数的值 patamters.请求参数名

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等

  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

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等

 <%@ 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 标签用来把一个参数传递给包含着它的那个标签

    [原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等

    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 标签在标签 起始时把一个对象压入栈, 标签结束时将对象弹出栈.

  

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等

 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 属性

  [原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等

  

 <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 属性的属性值

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等

 <%
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 标签用来对一个可遍历对象里的元素进行排序

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等

 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 对象进行排版

[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等

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. &lbrack;原创&rsqb;java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

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

  2. &lbrack;原创&rsqb;java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作&lpar; 查看 &sol; 删除&sol; 添加&rpar; 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

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

  3. &lbrack;原创&rsqb;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&plus;CSS学习笔记 &lpar;6&rpar; - 开始学习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. C&plus;&plus;以对象管理资源

    先看下面一段代码: class Node {}; Node* CreateNode() { } void Solve() { Node *p=CreateNode(); //调用CreateNode函 ...

  2. Java开源数据库管理工具

    SQuirreL SQL Client   SQuirreL SQL Client 是一个用 Java 编写的程序,它允许您查看数据库的内容.发出 SQL 命令,以及如您将看到的,执行许多其他功能.构 ...

  3. android 检测sqlite数据表中字段(列)是否存在 (转)

    原文摘自 http://www.tuicool.com/articles/jmmMnu 一般数据库升级时,需要检测表中是否已存在相应字段(列),因为列名重复会报错.方法有很多,下面列举2种常见的方式: ...

  4. 瓜娃《guava》api快速入门

    1,大纲 让我们来熟悉瓜娃,并体验下它的一些API,分成如下几个部分: Introduction Guava Collection API Guava Basic Utilities IO API C ...

  5. 利用fitnesse实现api接口自动化测试

    上午在园子里乱逛,看了不少小伙伴们分享的接口测试方面的知识,仔细想想,我做接口测试也有几个年头了,大家所叙述到的一些经验或多或少,我也曾遇到过,突然意识到知识的点滴积累是多么的重要,我记得我最早接触接 ...

  6. MySql Sql 优化技巧分享

    有天发现一个带inner join的sql 执行速度虽然不是很慢(0.1-0.2),但是没有达到理想速度.两个表关联,且关联的字段都是主键,查询的字段是唯一索引. sql如下: SELECT p_it ...

  7. CSS3特效----制作3D旋转导航

    大致思路:首先给 three-d-box 设置一个 transition是不可少的 然后每个 a 标签里面有两个 span 一个叫 font 一个叫 back,默认状态下 font 旋转0度,也就是没 ...

  8. JavaScript基础系列

    JavaScript基础系列 JavaScript是一种基于对象和事件驱动的客户端脚本语言. JavaScript的注释 // 单行 /**/ 多行注释 JavaScript变量,函数名和操作符都是区 ...

  9. Python入门介绍

    Python入门介绍(人生苦短,我用 Python) Python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹 ...

  10. APScheduler(Python化的Cron)使用总结 定时任务

    APScheduler(Python化的Cron)使用总结 简介 APScheduler全程为Advanced Python Scheduler,是一款轻量级的Python任务调度框架.它允许你像Cr ...