[原创]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 可以提供更简洁的语法

 1 <%@page import="java.util.Date"%>
 2 <%@ page language="java" contentType="text/html; charset=UTF-8"
 3     pageEncoding="UTF-8"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>Insert title here</title>
 9 </head>
10 <body>
11     <a href="testTag.action?name=jason">TestTag</a>
12
13
14     <%
15         session.setAttribute("date", new Date());
16     %>
17 </body>
18 </html>

index.jsp

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3
 4 <%@ taglib prefix="s" uri="/struts-tags" %>
 5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 6 <html>
 7 <head>
 8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 9 <title>Insert title here</title>
10 </head>
11 <body>
12
13     <s:debug></s:debug>
14
15     <br><br>
16
17     <s:property value="productName"/>
18     <br><br>
19     <s:property value="#session.date"/>
20     <br><br>
21     <s:property value="#parameters.name"/>
22 </body>
23 </html>

common-tag.jsp

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5
 6 <struts>
 7 <package name="default" namespace="/" extends="struts-default">
 8          <!-- 测试通用标签 -->
 9          <action name="testTag" class="com.jason.struts2.Product" method="testTag">
10              <result >/common-tag.jsp</result>
11          </action>
12
13      </package>

struts.xml

2.uri 标签

  1)作用:url 标签用来动态地创建一个 URL

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3
 4 <%@ taglib prefix="s" uri="/struts-tags" %>
 5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 6 <html>
 7 <head>
 8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 9 <title>Insert title here</title>
10 </head>
11 <body>
12
13     <s:debug></s:debug>
14
15     <br><br>
16
17     <s:property value="productName"/>
18     <br><br>
19     <s:property value="#session.date"/>
20     <br><br>
21     <s:property value="#parameters.name"/>
22
23     <br><br>
24     <!--创建一个 URL 字符串  -->
25     <s:url value="/getProduct" var="url" namespace="">
26         <!-- 指定 url 包含的请求参数, 10000 不可能是一个属性名,Struts2 把10000 直接作为属性值 -->
27         <s:param name="productId" value="10000"></s:param>
28     </s:url>
29     ${url }
30
31     <br><br>
32     <s:url value="/getProduct" var="url1" namespace="">
33         <!--对于 value 值会自动的进行 OGNL 解析  ,若不希望进行OGNL 进行解析,则使用  单引号 引起来-->
34         <s:param name="productId" value="‘productId‘"></s:param>
35     </s:url>
36     ${url1 }
37
38     <br><br>
39     <!-- 构建一个请求 aciton 的地址 -->
40     <s:url action="testAction" namespace="/helloword" method="save" var="url2">
41     </s:url>
42     ${url2 }
43
44     <br><br>
45     <!--includeParams:get 为get请求;all 为post 或者 get请求;one 都不要  -->
46     <s:url value="testUrl" var="url3" includeParams="all">
47
48     </s:url>
49     ${url3 }
50
51 </body>
52 </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 自动解析。 

 1 s:set 向page,request,session,application 域对象中加入一个属性
 2
 3     <br><br>
 4     <s:set name="productName" value="productName" scope="request"></s:set>
 5     productName:${requestScope.productName }
 6
 7     等同于
 8     <!--  value值 是 值栈 的栈顶对象的 属性
 9         <s:setname="productName" value="[1].productName" scope="request"></s:set>
10     -->

5.*push 标签

  1)push 标签的功能和 set 标签类似.

  2)push 标签将把一个对象压入 ValueStack 而不是压入 ContextMap.

  3)push 标签在标签 起始时把一个对象压入栈, 标签结束时将对象弹出栈.

  

 1 s:push 把一个对象在标签开始 后压入到值栈中,标签结束时,弹出值栈
 2     <%
 3         Person person = new Person();
 4         person.setAge(10);
 5         person.setName("jason");
 6
 7         request.setAttribute("person", person);
 8     %>
 9     <s:push value="#request.person">
10         ${name}
11     </s:push> 

6.*if, else 和 elseif 标签

  这三个标签用来进行条件测试, 它们的用途和用法类似于 if, else 和 elseif 关键字. 其中 if 和 elseif 必须有 test 属性

  

  

1 <s:if test="age > 18">
2         青年
3     </s:if>
4      <s:elseif test="age > 10">
5          青少年
6      </s:elseif>
7      <s:else>
8           少年
9      </s:else>

7.*iterator 标签:遍历集合,把这个可遍历对象里的每一个对象依次压入和弹出栈

   用来遍历一个数值 ,collection,或者一个map,并把这个可遍历对象里的每一个元素依次压入和弹出ValueStack 栈中

   在开始执行的时候,iterator标签会先把iteratorStatus类的一个实例压入ContextMap,并在每次遍历循环时更新它,可以将一个指向itertatorStatus 对象的变量赋给status属性

  iterator 标签的 status 属性的属性值

 1 <%
 2          List<Person> persons = new ArrayList<Person>();
 3          persons.add(new Person("AA",10));
 4          persons.add(new Person("BB",20));
 5          persons.add(new Person("CC",30));
 6          persons.add(new Person("DD",40));
 7          persons.add(new Person("EE",50));
 8          persons.add(new Person("FF",60));
 9          persons.add(new Person("GG",70));
10
11         request.setAttribute("persons", persons);
12
13      %>
14
15      <s:iterator value="#request.persons">
16          ${name } - ${age }<br>
17      </s:iterator>

8.*sort 标签

sort 标签用来对一个可遍历对象里的元素进行排序

 1 package com.jason.struts2;
 2
 3 import java.util.Comparator;
 4
 5 public class PersonComparator implements Comparator<Person>{
 6
 7     @Override
 8     public int compare(Person o1, Person o2) {
 9         return o1.getName().compareTo(o2.getName());
10     }
11
12
13 }
 1 <br><br>
 2      <%
 3           PersonComparator pc = new PersonComparator();
 4           request.setAttribute("comparator", pc);
 5
 6      %>
 7
 8      <s:sort comparator="#request.comparator" source="persons" var="resultPerson"></s:sort>
 9      <s:iterator value="#attr.resultPerson" >
10          ${name } - ${age }<br>
11      </s:iterator>
12      

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

时间: 2024-10-07 06:26:51

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

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

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

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

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

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

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

【web开发学习笔记】Struts-Tags学习笔记1 - 通用标签和控制标签

通用标签和控制标签 第一部分:代码 //前端 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030" /> <title>Insert title here</title> </head> <body> 访问属性 <a href="<%=contextP

【web开发学习笔记】ibatis学习总结

ibatis学习总结 ibatis数据库配置文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"> <

【web开发学习笔记】Hibernate学习总结

hibernate学习笔记 学习笔记部分: 本部分的学习比较容易,代码比较全,也容易理解,可以说是一些记忆性质的东西. 本人在学习过程中没有自己在做笔记,只是参考了网上找的学习笔记,按照那个笔记学习和复习挺快的. 源码中有一些jar包缺失,我在自学的时候也整理了相关的jar包和软件,已经上传,祝大家学习快乐. 相关资源链接: 相关的数据库连接的资源: http://download.csdn.net/detail/licong_carp/7656601 相关的jar包文件: http://dow

[学习笔记] Sencha Cmd 学习笔记 Sencha Cmd是什么

本文地址: http://blog.csdn.net/sushengmiyan/article/details/38295575 本文作者:sushengmiyan -------------------------------------------------------------资源链接----------------------------------------------------------------------- 翻译来源  Sencha Cmd官方网站: http://w

Accelerated C++学习笔记1—&lt;开始学习C++&gt;

第0章 开始学习C++ 1.每次学习一个新的语言,大家都是从Hello, world!开始 // lesson0_1.cpp : 定义控制台应用程序的入口点. //功能:编译并运行Hello,world //时间:2014.5.7 #include "stdafx.h" #include "iostream" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { std::cout<< &

[Linux] 学习笔记之安装学习环境(sshd, lrzsz)

紧接前一篇,在VMWare安装完Linux,这个时候我们要使用远程工具连接到虚拟机上去了,以前一直使用Putty,后来到新公司之后,推荐使用SecureCRT,使用之后,觉得效果不错,但是每次连接都失败,linux新手伤不起,在网上搜啊搜,终于找到解决办法.   搜索了很多资料之后,发现是由于我未在Linux上安装ssh服务导致无法使用SecureCRT连接. 1. 可以使用ssh localhost对此进行测试,具体使用如下: 2. 使用apt-get或者yum安装ssh服务,具体哪种操作系统