Struts

★注意点

Struts 1.xの場合、Actionインスタンス(サブクラスも含む)には、マルチスレッド間で共用されるため、定数以外のフィールド(インスタンス変数・メンバ変数)を書かないようにする。

Struts 2.xの場合、リクエストごとにActionインスタンス(サブクラスも含む)が生成される。そのほか、画面入力値もActionクラスのフィールドに持たせる。

ちなみに、

Servletは一つのインスタンスが複数のスレッドで共用されるため、Servletクラス(サブクラスも含む)にフィールドを書かないようにする。

★Struts2.xについて

<form action="login.do" name="LoginForm" method="POST">

Username:<input type="text" name="name"><br>

Password:<input type="password" name="pass"><br>

<input type="submit" value="Submit">

</form>

Attribute Driven

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport {

private String name;

private String pass;

// getter/setter

@Override

public String execute() throws Exception {

return ActionSupport.SUCCESS;

}

}

Model Driven

Struts 1.x(ActionとActionFormが一対一)のActionFormと似ている

public class User {

private String name;

private String pass;

// getter/setter

}

import com.opensymphony.xwork2.ActionSupport;

import com.opensymphony.xwork2.ModelDriven;

public class LoginAction extends ActionSupport implements ModelDriven<User> {

private User user;

// getter/setter

@Override

public String execute() throws Exception {

return ActionSupport.SUCCESS;

}

public User getModel() {

return user;

}

}