注:与容器无关的方法:不能获取request所有属性,因为他得到的是Map类的request。与容器无关的适用于测试
一、两种与Servlet容器解耦合的方法(即与容器无关)
------1》IOC方法(实现接口RequestAware、SessionAware、ApplicationAware)、
例子:
public class Test extends ActionSupport implements RequestAware,SessionAware,ApplicationAware{
private Map request;
private Map session;
private Map application;
public String execute() throws Exception {
if(.......................................................){
request.put("request键", "request属性");
session.put("session键", "session属性");
application.put("application键", "application属性");
return SUCCESS;
}else{
return ERROR;
}
}
public void setRequest(Map request) {
this.request = request;
}
public void setSession(Map session) {
this.session = session;
}
public void setApplication(Map application) {
this.application = application;
}
}
------2》非IOC方法(利用ActionContext对象中的get(object)用于获取request 、getSession、getApplication)
需要在execute初始化context
例子:
public class Test extends ActionSupport{
private Map request;
private Map session;
private Map application;
ActionContext context;
public String execute() throws Exception {
if(.......................................................){
context = ActionContext.getContext();
request = (Map)context.get("request");
session = context.getSession();
application = context.getApplication();
request.put("request键", "request属性");
session.put("session键", "session属性");
application.put("application键", "application属性");
return SUCCESS;
}else{
return ERROR;
}
}
}
二、两种与Servlet容器耦合的方法(即与容器(servlet有关))
-----3》IOC方法(实现两个借口 ServletRequestAware来获取request在通过request.getSession获取HttpSession对象)
例子:
public class Test extends ActionSupport implements ServletRequestAware,ServletContextAware{
HttpServletRequest request;
HttpSession session;
ServletContext application;
public String execute() throws Exception {
if(.......................................................){
session = context.getSession();
request.put("request键", "request属性");
session.put("session键", "session属性");
application.put("application键", "application属性");
return SUCCESS;
}else{
return ERROR;
}
}
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
public void setServletContext(ServletContext application) {
this.application = application;
}
}
-----4》非IOC方法(利用ServletActionContext中的getRquest()方法、getServletContext()方法分别获得HttpRequest和HttpApplication对象)
例子:
public class Test extends ActionSupport{
HttpServletRequest request;
HttpSession session;
ServletContext application;
public String execute() throws Exception {
if(.......................................................){
request = ServletActionContext.getRequest();
session = request.getSession();
application = ServletActionContext.getServletContext();
request.put("request键", "request属性");
session.put("session键", "session属性");
application.put("application键", "application属性");
return SUCCESS;
}else{
return ERROR;
}
}
}