首页 技术 正文
技术 2022年11月16日
0 收藏 408 点赞 4,417 浏览 5940 个字

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

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

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

微博:伊直都在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" rel="external nofollow" >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}" rel="external nofollow" >${name }</s:a>
</s:iterator>

其他标签:

11.

include 标签:

include 标签用来把一个 Servlet 或 JSP 页面的输出包含到当前页面里来.

20

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,965
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,486
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,331
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,114
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,747
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,782