一.action的三种实现方式
1.继承com.opensymphony.xwork2.ActionSupport; 然后重写 execute() 方法。
public class LoginAction extends ActionSupport{
public String execute() throws Exception {
return "success";
}
}
2.实现com.opensymphony.xwork2.Action 接口; 然后覆写execute()方法
public class LoginAction implement Action{
public String execute() throws Exception {
return “success”;
}
}
接在任意一个类中,写一个返回值为String类型的execute方法即可
public class LoginAction{
public String execute() throws Exception {
return “success”;
}
}
二.依赖注入三种方式
1、直接在Action中使用其的属性直接输入
class LoginAction extends ActionSupport{
String userName;
Stirng userPass;
public String execute() throws Exception {
return "success";
}
// userName 和userPass 的get() set()方法
}
2、使用领域对象接受用户输入。(封装到bean中 也就是pojo)
class LoginAction extends ActionSupport{
private User user;
public String execute() throws Exception {
return "success";
}
//user的get()和set()方法
}
3、使用ModelDriven方式
class LoginAction extends ActionSupport implement ModelDriven {
public String execute() throws Exception {
return "success";
}
//覆写geModel()方法
public object getModel(){
return new User();
}
}
/**
* 在使用ModelDriven的方式下
* 在jsp页面中,调用属性时,不用写成 name="#user.userName"
* 可以直接写成name="userName"
**
三、获得servletApi的四中方式
即获得request、session等的4种方式,尽量使用IOC的方式
非IOC方式两种,即通过使用com.opensymphony.xwork2.ActionContext类
1、非IOC方式,并且通过map存放
class LoginAction extends ActionSupport{
private User user;
ActionContext context=ActionContext.getContext();
//request比较特殊
Map request=(Map)context.get("request");
Map session=(Map)context.getSession();
public String execute() throws Exception {
request.put("user",user);
session.put("user",user);
.
.
.
return "success";
}
//user的get()和set()方法
}
2.非IOC方式 ,通过setAttribute方式存放
class LoginAction extends ActionSupport{
private User user;
HttpServletRequest request=SerevletActionContext.getRequest();
HttpSession session=ServletActionContext.getServletContext();
ServletContextApplicaton application=ServletActionContext.getServletContext();
public String execute() throws Exception {
request.setAttribute("user",User);
session.setAttribute("user",User);
.
.
.
return "success";
}
//user的get()和set()方法
}
3.通过IOC方式 ,并且通过Map存放 (常用)
public class LoginAction extends ActionSupport implements SessionAware ,RequestAware,ApplicationAware{
private User user;
private Map session;
private Map request;
private Map application;
public String execute() throws Exception {
request.put("user",user);
session.put("user",user);
.
.
.
return "success";
}
//user、application、request、session的get()和set()方法
}
4.通过IOC方式 ,并且用setAttribute方式存放
public class LoginAction extends ActionSupport implements ,ServletRequestAware,ServletContextAware{
private User user;
..
..
public String execute() throws Exception {
request.setAttribute("user",User);
application.setAttribute("user",User);
.
.
.
return "success";
}
//user、application、request、session的get()和set()方法
}