<package name="front" namespace="/" extends="struts-default">
<action name="index" class="com.ying.struts2.front.action.IndexAction">
<result name="success">/Hello.jsp</result>
</action>
</package>
在action中定义一个class,如上面的代码。这个class可以任意定义,但是它一定要包含一个public String execute()方法。但是一般说来这个类我们都是通过继承 com.opensymphony.xwork2.ActionSupport 这个类来实现的,因为在ActionSupport中已经定义了很多有用的方法,子类可以直接拿来用。
execute()方法的返回值和result标签里的name属性一一对应,将决定我们要调用哪一个jsp文件。
在接口 com.opensymphony.xwork2.Action 中已经预先定义了一部分result的name属性可能值,包括success, none, error, input, login等等。当然我们自己也可以定义一些返回值,并在result中设置相对应的name值。
另外我们可以在action标签里增加属性method,这样在调用类的时候就会调用指定的这个method,而不是默认的execute()方法。但是这种方法不推荐使用。我们推荐通过动态方法调用(DMI)来实现调用不同的方法,即在URL中指定方法名 http://localhost:8080/webappname/namespace/action!method
此外,我们还可以通过通配符来配置struts.xml文件,这会使得配置文件及其的简洁。如下
<package name="front" namespace="/" extends="struts-default">
<action name="*_*" class="com.ying.struts2.front.action.{1}Action" method="{2}">
<result name="success">/{1}_{2}.jsp</result>
</action>
</package>
*是通配符,{1}指代第一个*,{2}指代第二个*。
当传过来的URL为http://localhost:8080/webappname/Teacher_add时,它会调用TeacherAction类的add()方法,当其返回值是success时,会将请求转到Teacher_add.jsp来处理。
<action name="index" class="com.ying.struts2.front.action.IndexAction">
<result name="success">/Hello.jsp</result>
</action>
</package>
在action中定义一个class,如上面的代码。这个class可以任意定义,但是它一定要包含一个public String execute()方法。但是一般说来这个类我们都是通过继承 com.opensymphony.xwork2.ActionSupport 这个类来实现的,因为在ActionSupport中已经定义了很多有用的方法,子类可以直接拿来用。
execute()方法的返回值和result标签里的name属性一一对应,将决定我们要调用哪一个jsp文件。
在接口 com.opensymphony.xwork2.Action 中已经预先定义了一部分result的name属性可能值,包括success, none, error, input, login等等。当然我们自己也可以定义一些返回值,并在result中设置相对应的name值。
另外我们可以在action标签里增加属性method,这样在调用类的时候就会调用指定的这个method,而不是默认的execute()方法。但是这种方法不推荐使用。我们推荐通过动态方法调用(DMI)来实现调用不同的方法,即在URL中指定方法名 http://localhost:8080/webappname/namespace/action!method
此外,我们还可以通过通配符来配置struts.xml文件,这会使得配置文件及其的简洁。如下
<package name="front" namespace="/" extends="struts-default">
<action name="*_*" class="com.ying.struts2.front.action.{1}Action" method="{2}">
<result name="success">/{1}_{2}.jsp</result>
</action>
</package>
*是通配符,{1}指代第一个*,{2}指代第二个*。
当传过来的URL为http://localhost:8080/webappname/Teacher_add时,它会调用TeacherAction类的add()方法,当其返回值是success时,会将请求转到Teacher_add.jsp来处理。