Action中的默认方法名字是execute,有一个String类型的返回值,而且没有形式参数。
Action中的方法名可以不是exectue,可以使任何合法的标示符,然而返回值类型必须是String,而且不能有形式参数。
例:
jsp页面register.jsp
<s:form action="RegisterAction">
<s:textfield name="custname" label="Input your custname"></s:textfield>
<s:password name="pwd" label="Input your password"></s:password>
<s:textfield name="age" label="Input your age"></s:textfield>
<s:textfield name="address" label="Input your address"></s:textfield>
<s:submit value="Register"></s:submit>
</s:form>
创建Action类,RegisterAction.java
package Action;
import dao.Impl.CustomerDAOImpl;
import Service.CustomerServiceImpl;
import VO.Customer;
public class RegisterAction {
private String custname;
private String pwd;
private Integer age;
private String address;
public String getCustname() {
return custname;
}
public void setCustname(String custname) {
this.custname = custname;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String register(){
CustomerServiceImpl cs = new CustomerServiceImpl();
cs.setDao(new CustomerDAOImpl());
try{
cs.register(new Customer(custname,pwd,age,address));
return"regsuccess";
}catch(Exception e) {
e.printStackTrace();
return "regfail";
}
}
}
配置struts.xml
<action name="RegisterAction" class="Action.CustomerAction" method="register">
<result name="regsuccess">/index.jsp</result>
<result name="regfail" >/register.jsp</result>
</action>
将多个Action类“合并”例:
登入和注册Action
package Action;
import dao.Impl.CustomerDAOImpl;
import Model.LoginService;
import Service.CustomerServiceImpl;
import VO.Customer;
public class CustomerAction {
private String custname;
private String pwd;
private Integer age;
private String address;
public String getCustname() {
return custname;
}
public void setCustname(String custname) {
this.custname = custname;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String login(){
CustomerServiceImpl cs = new CustomerServiceImpl();
cs.setDao(new CustomerDAOImpl());
boolean flag=cs.login(custname, pwd);
if(flag){
return "success";
}else{
return "fail";
}
}
public String register(){
CustomerServiceImpl cs = new CustomerServiceImpl();
cs.setDao(new CustomerDAOImpl());
try{
cs.register(new Customer(custname,pwd,age,address));
return"regsuccess";
}catch(Exception e) {
e.printStackTrace();
return "regfail";
}
}
}
配置文件struts.xml
<action name="Customerlogin" class="Action.CustomerAction" method="login">
<result name="success">/welcome.jsp</result>
<result name="fail" >/index.jsp</result>
</action>
<action name="Customerregister" class="Action.CustomerAction" method="register">
<result name="regsuccess">/index.jsp</result>
<result name="regfail" >/register.jsp</result>
</action>
JSP 文件
<s:form action="Customerlogin">
<s:textfield name="custname" label="Input your custname"></s:textfield><br>
<s:password name="pwd" label="Input your password"></s:password><br>
<s:submit value="Login"></s:submit>
</s:form>
Action类的不同调用方式
1、在struts.xml中通过method属性指定方法名。
<action name="RegisterAction" class="Action.CustomerAction" method="register">
<result name="regsuccess">/index.jsp</result>
<result name="regfail" >/register.jsp</result>
</action>
<s:form action="RegisterAction">
<s:textfield name="custname" label="Input your custname"></s:textfield>
<s:password name="pwd" label="Input your password"></s:password>
<s:textfield name="age" label="Input your age"></s:textfield>
<s:textfield name="address" label="Input your address"></s:textfield>
<s:submit value="Register"></s:submit>
</s:form>
2、使用动态方法调用(DMI)方式
<action name="Customer" class="Action.CustomerAction">
<result name="success">/welcome.jsp</result>
<result name="fail" >/index.jsp</result>
<result name="regsuccess">/index.jsp</result>
<result name="regfail" >/register.jsp</result>
</action>
<s:form action="Customer!login">
<s:textfield name="custname" label="Input your custname"></s:textfield><br>
<s:password name="pwd" label="Input your password"></s:password><br>
<s:submit value="Login"></s:submit>
</s:form>
3、使用提交按钮的method属性
<action name="Customer" class="Action.CustomerAction" >
<result name="success">/welcome.jsp</result>
<result name="fail" >/index.jsp</result>
<result name="regsuccess">/index.jsp</result>
<result name="regfail" >/register.jsp</result>
</action>
<s:form action="Customer">
<s:textfield name="custname" label="Input your custname"></s:textfield><br>
<s:password name="pwd" label="Input your password"></s:password><br>
<s:submit value="Login" method="login"></s:submit>
</s:form>
4、使用通配符配置Action
<action name="Customer*" class="Action.CustomerAction" method="{0}">
<result name="success">/welcome.jsp</result>
<result name="fail" >/index.jsp</result>
<result name="regsuccess">/index.jsp</result>
<result name="regfail" >/register.jsp</result>
</action>