- Struts2的Action类只要是一个普通的java类
- 我们需要为这个action类提供一个无参构造器(Struts2会为每次请求创建一个Action的实例,所以是多实例)
- Action的请求参数
//如果想要在Action中获得用户发送的请求参数,只需在Action中创建一个参数同名的属性
//并且为属性提供get和set方法,Struts2会将属性自动注入Action中 - 我们至少要为Struts提供一个方法,在处理请求时调用。
- 同一个Action类可以处理多种请求(action接口不常用)
通过实现action接口创建一个action类
这个接口中为我们提供了几个结果类型的常量
还提供了一个抽象的execute方法
开发中大部分Action类都会继承ActionSupport类。(ActionSupport对国际化、验证等做了很好的支持)
获取Servlet相关API
在Action类中获取Servlet相关的API:
request
session
application
ActionContext
ActionContext对象保存当前Action上下文内容,当前Action的相关对象都可以通过Context得到
ActionContext内部维护了一个Map集合,这些对象存在Map中保存,可以获得key和value
在ActionContext中保存的对象中的Map,而不是属性HTTPrequest,session、application
package com.Action;
import java.util.Map;
import org.apache.struts2.dispatcher.SessionMap;
import com.opensymphony.xwork2.ActionContext;
public class UserAction {
//Action的请求参数
//如果想要在Action中获得用户发送的请求参数,只需在Action中创建一个参数同名的属性
//并且为属性提供get和set方法,Struts2会将属性自动注入Action中
private String username;
private int age;
private String address;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String add() {
System.out.println(username+"年龄"+age+"--"+address);
//System.out.println("请求成功");
//获取ActionContext对象
ActionContext context = ActionContext.getContext();
//获取一个application对应的Map<String,Object>
Map<String, Object> application = context.getApplication();
//向application中添加一个对象
application.put("appKey", "appvalue");
//获取一个session对应的Map<String,Object>
Map<String, Object> session = context.getSession();
//向application中添加一个对象
session.put("sessKey", "sessvalue");
SessionMap sess = (SessionMap) session;
sess.invalidate();
//获取一个request对应的Map<String,Object>
Map<String, Object> request = (Map<String, Object>) context.get("request");
request.put("reqKey", "reqvalue");
//获取请求参数的map
Map<String, Object> parameters = context.getParameters();
// Object object = parameters.get("hobby");
String[] hobby = (String[]) parameters.get("hobby");
System.out.println(hobby[0]);
return "success";
}
}