您的位置:首页 > 科技 > IT业 > 创建全国文明城市我们应该怎么做_湖北省建设工程信息网_襄阳seo优化排名_自制网页

创建全国文明城市我们应该怎么做_湖北省建设工程信息网_襄阳seo优化排名_自制网页

2024/12/26 23:04:07 来源:https://blog.csdn.net/yp25805488/article/details/143143485  浏览:    关键词:创建全国文明城市我们应该怎么做_湖北省建设工程信息网_襄阳seo优化排名_自制网页
创建全国文明城市我们应该怎么做_湖北省建设工程信息网_襄阳seo优化排名_自制网页

文章目录

  • Struts2的标签
    • 通用(Generic)标签
    • <s:property> 数据类标签
    • <s:iterator>(至关重要!!!!)
    • <s:if> <s:elseif> <s:else>
    • <s:a>超链接标签
    • 用户界面(UI)标签
      • 表单标签
    • 主题样式

Struts2的标签

表单标签将在 HTML 文档里被呈现为一个表单元素

使用表单标签的优点: 表单回显

标签的属性可以被赋值为一个静态的值或一个 OGNL 表达式. 如果在赋值时使用了一个 OGNL 表达式并把它用 %{} 括起来, 这个表达式将会被求值.

通用标签库(控制标签数据标签):

表单标签

通用(Generic)标签

通用标签主要指两类:数据类标签和控制类标签。

<s:property> 数据类标签

作用:将 OGNL 表达式的内容输出到页面

属性:

value 属性,接收 OGNL 表达式,从值栈取值

default 属性:显示默认值,如果当通过 OGNL 表达式没有获取到值,default 设置显示默认值

escapeHtml 属性:是否对 HTML 标签转义输出 (默认是不转义 true,可以关闭)

Action

package com.igeek_01;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class TagAction1 extends ActionSupport{@Overridepublic String execute() throws Exception {//往值栈中放入数据ActionContext.getContext().put("name", "tom");ActionContext.getContext().put("table", "<table border='1'><tr><td>html代码</td></tr></table>");return SUCCESS;}
}

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!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><h3>s:property从map栈中获取数据</h3><s:property value="#name"/><h3>s:property default属性</h3><s:property value="#age" default="0"/><h3>s:property escapeHtml属性,是否对html标签转义,默认不转义(true) </h3><s:property value="#table" escapeHtml="false"/>
</body>
</html>

<s:iterator>(至关重要!!!!)

作用:遍历集合对象(可以是 List、set 和数组等),显示集合对象的数据。(跟 jstl 的<c:foreach>功能一样)

属性:

value:迭代的集合,支持 OGNL 表达式,如果没有设置该属性,则默认使用值栈栈顶的集合来迭代。
var:引用变量的名称,该变量是集合迭代时的子元素。
status:引用迭代时的状态对象 IteraterStatus 实例,其有如下几个方法:int getCount():返回当前迭代了几个元素;int *getIndex*():返回当前迭代元素的索引;boolean odd:返回当前迭代元素的索引是否是奇数boolean even:返回当前迭代元素的索引是否是偶数boolean isFirst():返回当前迭代元素的索引是否是第一个boolean isLast():返回当前迭代元素的索引是否是最后一个

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!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><h3>使用s:iterator 打印1-10 数字</h3><h4>把每个遍历到的值存在map栈中,变量名定义为num</h4><h4>把每个遍历到的值也存在root栈中</h4><h4>把每个遍历到值的状态也是存在map栈中,变量名定义为s</h4><s:iterator begin="1" end="10" var="num" status="s" ><s:property value="#num"/>--<h4>把每个遍历到的值也存在root栈中</h4><s:property value="top"/>--<s:property value="[0].top"/>--<h4>把每个遍历到值的状态也是存在map栈中,变量名定义为s</h4><s:property value="#s.index"/>--<s:property value="#s.count"/>--<s:property value="#s.odd"/>--<s:property value="#s.even"/>--<s:property value="#s.isFirst()"/>--<s:property value="#s.isLast()"/>--<br/></s:iterator><hr><h3>s:iterator 遍历集合对象</h3><h4>s:iterator value属性获取值栈中的集合对象</h4><s:iterator value="users" var="u"><s:property value="#u.username"/>--><s:property value="#u.pwd"/>--<s:property value="username"/>--><s:property value="pwd"/>--<s:property value="top.username"/>--><s:property value="top.pwd"/>--<s:property value="[0].top.username"/>--><s:property value="[0].top.pwd"/>--${u.username }-->${u.pwd }<br/></s:iterator>
</body>
</html>

image-20230402223916055

Action

package com.igeek_01;
import java.util.ArrayList;
import java.util.List;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class TagAction2 extends ActionSupport{@Overridepublic String execute() throws Exception {List<User> users = new ArrayList<>();users.add(new User("tom", "123"));users.add(new User("jerry", "123"));users.add(new User("rose", "123"));//把数据放入值栈ActionContext.getContext().getValueStack().set("users", users);return SUCCESS;}
}

<s:if> <s:elseif> <s:else>

作用:页面判断,其中的 test 属性可以接收 OGNL 表达式。

根据后台传入的用户状态值(0,1,2),在页面判断并显示中文(管理员、普通用户、游客)

Action

package com.igeek_01;import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;public class TagAction3 extends ActionSupport{private String role;public String getRole() {return role;}public void setRole(String role) {this.role = role;}@Overridepublic String execute() throws Exception {//把role值放入值栈ActionContext.getContext().getValueStack().set("role", role);return SUCCESS;}
}

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!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><h3>s:if 标签</h3><s:if test="role==0"><h3>管理员</h3></s:if><s:elseif test="role==1"><h3>普通用户</h3></s:elseif><s:else><h3>游客</h3></s:else>
</body>
</html>

<s:a>超链接标签

作用:生成 a 标签链接

JSP

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!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><h3>超链接标签 s:a</h3><h3>s:param参数标签</h3><s:a action="tag3" namespace="/"><s:param name="role">0</s:param>//参数tag3.action</s:a>
</body>
</html>

用户界面(UI)标签

用户界面标签主要包括两类:表单类标签和其他类标签

form 表单的 Struts2 标签和传统标签的对比:(参考)

image-20230403215158555

image-20230403212520657

表单标签

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s" %>
<!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><h3>struts2 form表单</h3><s:form action="tag3" method="get"><h3>文本框  <s:textfield name="username"></s:textfield> </h3><h3>密码框 <s:password name="pwd"></s:password> </h3><h3>隐藏域<s:hidden name="hide" value="hide"></s:hidden> </h3><h3>文本域<s:textarea name="content"></s:textarea></h3><hr/><h3>单选按钮<s:radio list="{'男','女'}" name="sex"></s:radio> </h3><h3>单选按钮1<s:radio list="#{'m':'男','f':'女'}" name="sex"></s:radio> </h3><h3>复选框<s:checkboxlist list="{'篮球','足球','看书'}" name="hobby"></s:checkboxlist> </h3><h3>复选框1<s:checkboxlist list="#{'basketball':'篮球','football':'足球','read':'看书'}" name="hobby1"></s:checkboxlist> </h3><h3>下拉框:<s:select list="{'上海','北京','东京'}" name="city"></s:select> </h3><h3>下拉框1:<s:select list="#{'1':'上海','2':'北京','3':'东京'}" name="city"></s:select> </h3><s:submit value="提交"></s:submit><s:reset value="重置"></s:reset></s:form>
</body>
</html>

主题样式

Struts2 模板文件,支持两种 Freemarker 生成 (.ftl 模板文件) , Velocity 生成 (.vm 模板文件)

提供四种主题 :

Simple 最简单主题

Xhtml 通过 布局表格 自动排版 (默认主题 )

css_xhtml 通过 CSS 进行排版布局

ajax 以 Xhtml 模板为基础,增加 ajax 功能

<!-- 修改主题风格为简单主题 -->
<constant name="struts.ui.theme" value="simple"></constant>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com