zoukankan      html  css  js  c++  java
  • [原创]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

  • 相关阅读:
    1021. 从前有座山——java
    1004. 西西弗斯式的命运——java
    1025. 水枪灭火——java
    1020. 分解质因数——java
    1024.排序——C语言
    1024. 排序——java
    1022. Fib数列——java
    1006. 求和游戏——java
    1005. 数独——java
    SpringBoot 升级到 2.1 后,启动程序时控制台不打印 API 的解决方法及一些感想
  • 原文地址:https://www.cnblogs.com/jasonHome/p/5839107.html
Copyright © 2011-2022 走看看