struts2作为一个成熟的控制层框架,对于控制器类的编写要求极为宽泛,也大大增加了开发的方便程度。同时,struts2还提供了一些接口和工具类来帮助大家编写action。下面我就从最简单的action类到实现接口开发action类,再到继承工具类来开发action,仅供大家参考和体会框架开发的便捷性。
方式1:手动编写action类
package com.js.action;
/**
* 最简单的Action=私有属性+属性的getters和setters+execute()方法
* @author jiangshuai
*
*/
public class LoginAction {
//接前台参数
private String username;
private String password;
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{
if(getUsername().equals("admin")&&getPassword().equals("1")) {
return "success";
}else {
return "error";
}
}
}
方式2:实现Action接口
package com.js.action;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
/**
* 实现Action接口的方式开发action
* 该接口默认提供了一些返回值常量
* @author jiangshuai
*
*/
public class LoginAction2 implements Action {
private String username;
private String password;
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;
}
@Override
public String execute() throws Exception {
if(getUsername().equals("admin")&&getPassword().equals("1")) {
ActionContext.getContext().getSession().put("user", username);
return SUCCESS;
}else {
return ERROR;
}
}
}
方式3:继承ActionSupport类
package com.js.action;
import javax.swing.plaf.synth.SynthScrollBarUI;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
/**
* 继承ActionSupport类
* 该类默认实现了Action接口和Validate接口,提供了数据校验功能
* @author jiangshuai
*
*/
public class LoginAction3 extends ActionSupport{
private String username;
private String password;
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 {
if(getUsername().equals("admin")&&getPassword().equals("1")) {
ActionContext.getContext().getSession().put("user", username);
return SUCCESS;
}else {
return ERROR;
}
}
public void validate(){
System.out.println("开始校验...");
if(getUsername()==null||getUsername().trim().equals("")){
addFieldError("username","user.required");
}
if(getPassword()==null||getPassword().trim().equals("")){
addFieldError("password","pass.required");
}
}
}