code-behind在struts2里有两种表现形式:
1.Default mappings (默认映射):其实就是访问那些没有配置过Action的JSP页面,也能像访问Action那样访问。
比如说在项目${root}/leo/a.jsp 有这么一个a.jsp.
我可以在地址栏里输入:http://localhost:8080/项目名称/leo/a.action 来访问这个 a.jsp
效果与 http://localhost:8080/项目名称/leo/a.jsp是一样的。类似于咱们在welcome-file 那里定义的index,
这就是默认映射。
2.Default results (默认结果):其实就是无须显示的在struts-*.xml里配置那些返回 jsp, vm. ftl视图的Action。
比如说,我有一个以下配置文件, 没有result.
<package name="code" extends="struts-default" namespace="/code">
<action name="leo" class="code.LeoAction" />
</package>
Action文件是这样的:
package code;
import com.opensymphony.xwork2.ActionSupport;
public class LeoAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private String flag = "";
public String getFlag() {
return flag;
}
public void setFlag(String flag) {
this.flag = flag;
}
public String execute() {
if (flag == null || flag.equals("")) {
this.addActionMessage("input message");
return INPUT;
} else if (flag != null && flag.equals("error")) {
this.addActionError("error happen");
return ERROR;
} else {
this.addActionMessage("I am leo");
return SUCCESS;
}
}
}
故意设置了一个 flag 来查看结果。 通过,http://localhost:8080/项目名称/leo/leo.action?flag=测试值
你会发现,
INPUT 对应 http://localhost:8080/项目名称/leo/leo-input.jsp
ERROR 对应 http://localhost:8080/项目名称/leo/leo-error.jsp
SUCCESS 对应 http://localhost:8080/项目名称/leo/leo-success.jsp
这就是默认结果的意思。
下面是codebehind的path示例:
<?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>
<constant name="struts.devMode" value="false" />
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.action.extension" value="html" />
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.custom.i18n.resources"
value="ApplicationResources,errors" />
<constant name="struts.multipart.maxSize" value="2097152" />
<constant name="struts.ui.theme" value="css_xhtml" />
<constant name="struts.codebehind.pathPrefix"
value="/WEB-INF/pages/" />
<!-- Include Struts defaults -->
<include file="struts-default.xml" />
<!-- Configuration for the default package. -->
<package name="default" extends="struts-default">
<default-interceptor-ref name="defaultStack" />
<!-- DashBoard-->
<action name="dashBoard" method="showDashBoard"
class="com.flips.action.DashBoard">
<result name="success">dashBoard.jsp</result>
<interceptor-ref name="basicStack"/>
</action>
<action name="showRule" method="showRule"
class="com.flips.action.RuleImpl">
<result name="success">ruleList.jsp</result>
<interceptor-ref name="basicStack"/>
</action>
</package>
</struts>
1.Default mappings (默认映射):其实就是访问那些没有配置过Action的JSP页面,也能像访问Action那样访问。
比如说在项目${root}/leo/a.jsp 有这么一个a.jsp.
我可以在地址栏里输入:http://localhost:8080/项目名称/leo/a.action 来访问这个 a.jsp
效果与 http://localhost:8080/项目名称/leo/a.jsp是一样的。类似于咱们在welcome-file 那里定义的index,
这就是默认映射。
2.Default results (默认结果):其实就是无须显示的在struts-*.xml里配置那些返回 jsp, vm. ftl视图的Action。
比如说,我有一个以下配置文件, 没有result.
<package name="code" extends="struts-default" namespace="/code">
<action name="leo" class="code.LeoAction" />
</package>
Action文件是这样的:
package code;
import com.opensymphony.xwork2.ActionSupport;
public class LeoAction extends ActionSupport {
private static final long serialVersionUID = 1L;
private String flag = "";
public String getFlag() {
return flag;
}
public void setFlag(String flag) {
this.flag = flag;
}
public String execute() {
if (flag == null || flag.equals("")) {
this.addActionMessage("input message");
return INPUT;
} else if (flag != null && flag.equals("error")) {
this.addActionError("error happen");
return ERROR;
} else {
this.addActionMessage("I am leo");
return SUCCESS;
}
}
}
故意设置了一个 flag 来查看结果。 通过,http://localhost:8080/项目名称/leo/leo.action?flag=测试值
你会发现,
INPUT 对应 http://localhost:8080/项目名称/leo/leo-input.jsp
ERROR 对应 http://localhost:8080/项目名称/leo/leo-error.jsp
SUCCESS 对应 http://localhost:8080/项目名称/leo/leo-success.jsp
这就是默认结果的意思。
下面是codebehind的path示例:
<?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>
<constant name="struts.devMode" value="false" />
<constant name="struts.i18n.encoding" value="UTF-8" />
<constant name="struts.action.extension" value="html" />
<constant name="struts.objectFactory" value="spring" />
<constant name="struts.custom.i18n.resources"
value="ApplicationResources,errors" />
<constant name="struts.multipart.maxSize" value="2097152" />
<constant name="struts.ui.theme" value="css_xhtml" />
<constant name="struts.codebehind.pathPrefix"
value="/WEB-INF/pages/" />
<!-- Include Struts defaults -->
<include file="struts-default.xml" />
<!-- Configuration for the default package. -->
<package name="default" extends="struts-default">
<default-interceptor-ref name="defaultStack" />
<!-- DashBoard-->
<action name="dashBoard" method="showDashBoard"
class="com.flips.action.DashBoard">
<result name="success">dashBoard.jsp</result>
<interceptor-ref name="basicStack"/>
</action>
<action name="showRule" method="showRule"
class="com.flips.action.RuleImpl">
<result name="success">ruleList.jsp</result>
<interceptor-ref name="basicStack"/>
</action>
</package>
</struts>