tiles2的布局管理(二)struts2+tiles2

Struts2与Tiles2布局管理
本文介绍了一个不使用Spring框架的项目中如何配置Struts2与Tiles2实现页面布局管理。通过web.xml文件配置BasicTilesContainer参数,并定义tiles.xml来组织页面布局。同时展示了如何在struts.xml中配置Action以使用Tiles布局。
tiles2的布局管理(二)struts2+tiles2

official web site
http://tiles.apache.org/

the document is here
http://tiles.apache.org/framework/index.html

Since spring is not used in our project, so we manage tiles like this.

configuration file web.xml:
<context-param>
<param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name>
<param-value>/WEB-INF/tiles.xml</param-value>
</context-param>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<listener>
<listener-class>
org.apache.struts2.tiles.StrutsTilesListener
</listener-class>
</listener>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

since we do not use spring here, so the properties file only leaving the struts config, struts.properties:
struts.i18n.encoding=utf-8
#dev mode flag
struts.devMode=true
struts.action.extension=do

I never changed the tiles.xml file:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
"http://struts.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>
<definition name="base.definition" template="/layout/layout.jsp">
<put-attribute name="title" value="当前客户起始页面"/>
<put-attribute name="banner" value="/content/top.jsp"/>
<put-attribute name="menu" value="/content/menu.jsp"/>
<put-attribute name="sidebar" value="/content/sidebar.jsp"/>
<put-attribute name="hintbar" value="/content/error.jsp"/>
<put-attribute name="body" value="/screen/body.jsp"/>
</definition>
<definition name="index.definition" extends="base.definition">
<put-attribute name="body" value="/screen/index.jsp"/>
</definition>
</tiles-definitions>

and I change the struts.xml to use java bean instead of spring bean:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="testp" namespace="/testn" extends="tiles-default">
<action name="hello" method="hello"
class="com.sillycat.easytiles.action.HelloAction">
<result name="hello" type="tiles">base.definition</result>
</action>
<action name="ads" method="ads"
class="com.sillycat.easytiles.action.HelloAction">
<result name="hello" type="tiles">index.definition</result>
</action>
</package>
</struts>

and the action is extends from ActionSupport, not spring controller, HelloAction.java:
package com.sillycat.easytiles.action;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class HelloAction extends ActionSupport{
private static final long serialVersionUID = -9057233877588668059L;
private Map<String, Object> request;
private Map<String, Object> session;
private Map<String, Object> application;
private String ctx = null;
public String getCtx() {
if (ctx == null) {
HttpServletRequest request = ServletActionContext.getRequest();
ctx = request.getScheme() + "://" + request.getServerName() + ":"
+ request.getServerPort();
ctx += request.getContextPath();
}
return ctx;
}
@SuppressWarnings("unchecked")
public String hello() {
request = (Map) ActionContext.getContext().get("request");
session = ActionContext.getContext().getSession();
application = ActionContext.getContext().getApplication();
request.put("request1", "request-test2");
session.put("session1", "session-test2");
application.put("application1", "application-test2");
return "hello";
}
@SuppressWarnings("unchecked")
public String ads() {
request = (Map) ActionContext.getContext().get("request");
session = ActionContext.getContext().getSession();
application = ActionContext.getContext().getApplication();
request.put("request1", "request-test1");
session.put("session1", "session-test1");
application.put("application1", "application-test1");
ctx = "http://sillycat.iteye.com";
return "hello";
}
}

nothing special, we still use this url to visit our pages.
<a href="testn/testp/hello.do">hello</a><br />
<a href="testn/testp/ads.do">ads</a><br />

everything runs well.
同步定位与地图构建(SLAM)技术为移动机器人或自主载具在未知空间中的导航提供了核心支撑。借助该技术,机器人能够在探索过程中实时构建环境地图并确定自身位置。典型的SLAM流程涵盖传感器数据采集、数据处理、状态估计及地图生成等环节,其核心挑战在于有效处理定位与环境建模中的各类不确定性。 Matlab作为工程计算与数据可视化领域广泛应用的数学软件,具备丰富的内置函数与专用工具箱,尤其适用于算法开发与仿真验证。在SLAM研究方面,Matlab可用于模拟传感器输出、实现定位建图算法,并进行系统性能评估。其仿真环境能显著降低实验成本,加速算法开发与验证周期。 本次“SLAM-基于Matlab的同步定位与建图仿真实践项目”通过Matlab平台完整再现了SLAM的关键流程,包括数据采集、滤波估计、特征提取、数据关联与地图更新等核心模块。该项目不仅呈现了SLAM技术的实际应用场景,更为机器人导航与自主移动领域的研究人员提供了系统的实践参考。 项目涉及的核心技术要点主要包括:传感器模型(如激光雷达与视觉传感器)的建立与应用、特征匹配与数据关联方法、滤波器设计(如扩展卡尔曼滤波与粒子滤波)、图优化框架(如GTSAM与Ceres Solver)以及路径规划与避障策略。通过项目实践,参与者可深入掌握SLAM算法的实现原理,并提升相关算法的设计与调试能力。 该项目同时注重理论向工程实践的转化,为机器人技术领域的学习者提供了宝贵的实操经验。Matlab仿真环境将复杂的技术问题可视化与可操作化,显著降低了学习门槛,提升了学习效率与质量。 实践过程中,学习者将直面SLAM技术在实际应用中遇到的典型问题,包括传感器误差补偿、动态环境下的建图定位挑战以及计算资源优化等。这些问题的解决对推动SLAM技术的产业化应用具有重要价值。 SLAM技术在工业自动化、服务机器人、自动驾驶及无人机等领域的应用前景广阔。掌握该项技术不仅有助于提升个人专业能力,也为相关行业的技术发展提供了重要支撑。随着技术进步与应用场景的持续拓展,SLAM技术的重要性将日益凸显。 本实践项目作为综合性学习资源,为机器人技术领域的专业人员提供了深入研习SLAM技术的实践平台。通过Matlab这一高效工具,参与者能够直观理解SLAM的实现过程,掌握关键算法,并将理论知识系统应用于实际工程问题的解决之中。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值