1、Action访问ActionContext
ActionContext类是一个Action执行的上下文,Action执行期间所用到的对象都保存在ActionContext中,如客户端提交的参数,session会话信息等。
创建ActionContext的方法:ActionContext ac = ActionContext.getContext();
ActionContext类中的常用方法:
Map getApplication(); 返回一个application级别的Map对象
Map getSession(); 返回Map类型的HttpSession对象
public String execute() throws Exception{
if("qq".equals(getUserName()) && "123".equals(getPassword())) {
ActionContext ac = ActionContext.getContext();
ac.getApplication().put("userName", getUserName());
ac.getSession().put("userName", getUserName());
return SUCCESS;
}
return INPUT;
}
2、Action直接访问Servlet,IoC方式
在Struts2框架中,可以通过IoC方式将Servlet对象注入到Action中,这需要在Action中实现以下接口
1)ServletRequestAware:实现该接口的Action可以直接访问request对象
2)ServletResponseAware:实现该接口的Action可以直接访问response对象
3)SessionAware:实现该接口的Action可以直接访问session对象
public class LoginActionIoC extends ActionSupport implements ServletRequestAware{
private String userName;
private String password;
private HttpServletRequest request;
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 void setServletRequest(HttpServletRequest arg0) {
request = arg0;
}
public String execute() throws Exception{
if("qq".equals(getUserName()) && "123".equals(getPassword())) {
HttpSession session = request.getSession();
session.setAttribute("userName", getUserName());
return SUCCESS;
}
return INPUT;
}
}
3、Action直接访问Servlet,非IoC方式
在非IoC方式中,Struts2提供了ServletActionContext类帮助获得Servlet。该类中的常用方法如下:
1)static getRequest() 获取Web应用程序的request对象
2)static getResponse() 获取Web应用程序的response对象
public String execute() throws Exception{
if("qq".equals(getUserName()) && "123".equals(getPassword())) {
HttpServletRequest request = ServletActionContext.getRequest();
HttpSession session = request.getSession();
session.setAttribute("userName", getUserName());
return SUCCESS;
}
return INPUT;
}