具体视图的返回可以由用户自己定义的Action来决定
具体的手段是根据返回的字符串找到对应的配置项,来决定视图的内容
具体Action的实现可以是一个普通的java列,里面有public String execute方法即可
或者实现Action接口
struts.xml文件(注意必须放在src路径下,不能放在里面的包里)
<?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>
<!-- Add packages here -->
<constant name="struts.devMode" value="true" />
<package name="front" extends="struts-default" namespace="/">
<action name="test" class="org.hualang.strutsaction.Test1">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>
然后在src目录下创建包org.hualang.strutsaction,在里面创建三个类,分别为Test1.java,Test2.java,Test3.java
package org.hualang.strutsaction;
public class Test1 {
public String execute()
{
return "success";
}
}
第一种,如果没有写execute()就不能调用了,
而且也不能调用各种各样的方法
package org.hualang.strutsaction;
import com.opensymphony.xwork2.Action;
public class Test2 implements Action {
public String execute() throws Exception {
// TODO Auto-generated method stub
return "success";
}
}
第二种实现接口,但是用不了方法,所以不好
package org.hualang.strutsaction;
import com.opensymphony.xwork2.ActionSupport;
public class Test3 extends ActionSupport {
@Override
public String execute(){
// TODO Auto-generated method stub
return "success";
}
}
当没有匹配的时候,默认执行的是自己的class,叫作ActionSupport.class
真正开发的时候,只用Test3中的继承ActionSupport,原因是ActionSupport已经封装了一
系列可以直接调用的方面的方法,这样就可以在子类中直接调用,所以在企业开发的时候只用第三种
下面是运行结果
其他:Struts1与Struts2的一个小区别
struts2每次访问action的时候都会有new一个新的action对象,struts1则是一直使用同一
个action对象