Struts2 标签使用简介

本文详细介绍了Struts2框架中的各种标签用法,包括property、set、include、fielderror等标签的功能及应用场景,同时还展示了如何利用这些标签进行数据展示、错误提示、条件判断等操作。

web.xml配置如下:

<filter>
		<filter-name>struts2</filter-name>
		<filter-class>
			org.apache.struts2.dispatcher.FilterDispatcher
		</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

struts.xml配置如下:

<package name="tags" extends="struts-default">
		<action name="tags" class="com.mengya.action.TagsAction">
			<result name="success">/tags.jsp</result>
		</action>
	</package>

 TagsAction如下:

public class TagsAction extends ActionSupport {
	private String username;

	private String password;
	
	@Override
	public String execute() throws Exception {
		this.addFieldError("actionError", "error!!");
		return SUCCESS;
	}
	
	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

}

 Dog Bean如下:

public class Dog {
	private String dogName;

	public String getDogName() {
		return dogName;
	}

	public void setDogName(String dogName) {
		this.dogName = dogName;
	}

	@Override
	public String toString() {
		return "Dog:DogName=" + dogName;
	}

}

 页面struts标签使用如下:

<a href="tags.action?username=u&password=p&age=9">Struts2Tags</a>


<body>
		<ol>
			<li>
				property:
				<s:property value="username" />
			</li>
			<li>
				property 取值为字符串:
				<s:property value="'username'" />
			</li>
			<li>
				property 设定为默认值:
				<s:property value="admin" default="管理员" />
			</li>
			<li>
				property 设定为HTML:
				<s:property value="'<hr/>'" escape="false" />
			</li>
			<hr />
			<li>
				set 设定mengya的值(默认为Request和ActionContext):
				<s:set var="mengya" value="username"></s:set>
			</li>
			<li>
				set 从request中取值:
				<s:property value="#request.mengya" />
			</li>
			<li>
				set 从ActionContext中取值:
				<s:property value="#mengya" />
			</li>
			<li>
				set 设定范围:
				<s:set var="adminPassword" value="password" scope="session" />
			</li>
			<li>
				set 从相应的范围取值:
				<%=session.getAttribute("adminPassword")%>
			</li>
			<li>
				set 从相应的范围取值:
				<s:property value="#session.adminPassword" />
			</li>
			<hr>
			<li>
				bean 定义bean,并使用bean的param来设定的新属性值
				<s:bean name="com.mengya.bean.Dog"></s:bean>
				<%-- 没有指定var则在</s:bean>之前会构造一个对象放在椎顶在</s:bean>结束之前则放到了actionContext中 --%>
			</li>
			<li>
				bean 定义bean,并使用bean的param来设定的新属性值
				<s:bean name="com.mengya.bean.Dog" var="myDog">
					<s:param name="dogName" value="'myDog'"></s:param>
				</s:bean>
				取出值:
				<s:property value="#myDog" />
			</li>
			<hr>
			<li>
				include 包含静态英文html
				<s:include value="/include1.html"></s:include>
			</li>
			<li>
				include 包含静态中文html
				<s:include value="/include2.html"></s:include>
			</li>
			<li>
				<font color="red">%的用法:%是将%{}中的内空强转成ognl表达示而不是普通字符串</font>
				<s:set var="incPage" value="'/include1.html'"></s:set>
				<br>
				<s:include value="incPage"></s:include>
				<br>
				<s:include value="%{incPage}"></s:include>
				<%-- 将incPage作为ognl表达式 --%>
			</li>
			<li>
				fielderror:
				<s:fielderror key="actionError" theme="simple"></s:fielderror>
			</li>
			<hr>
			<li>
				if elseif else: age =
				<s:property value="#parameters.age[0]" />
				<s:if test="#parameters.age[0]<0">
					age error!
				</s:if>
				<s:elseif test="#parameters.age[0]<20">
					to young!
				</s:elseif>
				<s:else>
					OK!
				</s:else>
				&nbsp;&nbsp;|&nbsp;&nbsp;
				<s:set var="age" value="#parameters.age[0]"></s:set>
				<s:if test="age<0">
					age error!
				</s:if>
				<s:elseif test="age<20">
					to young!
				</s:elseif>
				<s:else>
					ok!
				</s:else>
				&nbsp;&nbsp;|&nbsp;&nbsp;
				<s:if test="#parameters.aaa==null">null</s:if>
			</li>
			<li>
				遍历集合:
				<br>
				<s:iterator value="{'aa','bb','cc'}">
					<s:property />&nbsp;|&nbsp;
				</s:iterator>
			</li>
			<li>
				自定义变量:
				<br>
				<s:iterator value="{'aa','bb','cc'}" var="temp">
					<s:property value="#temp" />&nbsp;|&nbsp;<s:property
						value="#temp.toUpperCase()" />
				</s:iterator>
			</li>
			<li>
				使用status:
				<br>
				<s:iterator value="{11,22,33}" status="status">
					<s:property />&nbsp;|遍历过的总元素:<s:property value="#status.count" />&nbsp;|当前元素索引:<s:property
						value="#status.index" />&nbsp;|当前值是否为偶数:<s:property
						value="#status.even" />&nbsp;|当前值是否为奇数:<s:property
						value="#status.odd" />&nbsp;|当前值是否为第一个:<s:property
						value="#status.first" />&nbsp;|当前值是否为最后一个:<s:property
						value="#status.last" />
					<br />
				</s:iterator>
			</li>
			<s:debug></s:debug>
		</ol>
		总结:
		
		$用于i18n和struts配置文件
		#用于得到ActionContext的值
		%将原本的文本属性解析为OGNL表达式,对于本来就是OGNL的属性不起做用
		
	</body>

  

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值