<package name="struts-default" abstract="true">
<result-types><!--配置Action链结果类型-->
<result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
<!--配置默认结果类型,用于整合jsp的result-->
<result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/><!--default为true指定result类型为sstruts2的默认结果类型-->
<!--配置支持freemarker结果类型,用于整合FreeMarker的result-->
<result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
<!--配置特殊http请求结果类型,用于处理特殊HTTP行为的result-->
<result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>
<!--配置重定向结果类型-->
<result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>
<!--配置重定向action结果类型--〉
<result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>
<!--配置stream结果类型,用于向浏览器返回一个Inputstream-->
<result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
<!--配置支持velocity结果类型-->
<result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>
<!--配置支持xslt结果类型-->
<result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
<!--配置支持plainText结果类型-->
<result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />
</result-types>
redirect和dispatcher类型的最大区别就是转向和重定向的区别.重定向将会丢失所有的参数、值zai和请求属性,即同时丢失了action的处理结果。而dispatcher类形式转发,将会把上述的所有数据资源转发给视图资源。
要想深入了解各种结果类型的内容,可参考对应类的源代码,这些类一般包含了doExecute()方法。
再struts2的lib目录中有"plugin“字样的Jar文件,这些文件就是相关产品的插件。每个插件都有一个struts-plugin.xml配置文件。这些配置文件会被struts2自动加载。
使用OGNL动态配置result
<action name="Login_Bank" class="bank.Login_Bank">
<result name="success">/bank/${bankname}.jsp</result>
</action>
<action name="Login_*" class="bank.Login_{1}">
<result name="success">/bank/{1}.jsp</result>
</action>
jsp页面加入bankname的文本输入框。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title>用户登录界面</title>
<s:head />
</head>
<body>
<table>
<s:form id="id" action="Login_Bank.action">
<s:textfield name="username" label="登录名称:"/>
<s:textfield name="bankname" label="银行名称:"/>
<s:password name="password" label="密码:"/>
<s:submit value="登录"/>
</s:form>
</table>
</body>
</html>
action实现类同样增加bankname属性:
package bank;
import com.opensymphony.xwork2.ActionSupport;
public class Login_Bank extends ActionSupport {
private String username;
private String password;
private String msg;
private String bankname;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String execute() throws Exception {
// 返回信息
setMsg(username+"登录"+bankname+"成功!");
return SUCCESS;
}
public String getBankname() {
return bankname;
}
public void setBankname(String bankname) {
this.bankname = bankname;
}
}