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

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.

你可能感兴趣的:(apache,spring,xml,bean,struts)