struts中获取request,session,application以及HttpServletRequest,HttpSession ServletContext
第一种方法获取request,session,application:
public class UserAction extends ActionSupport {
private Map request;
private Map session;
private Map application;
public UserAction() {
request=(Map) ActionContext.getContext().get("request");
session=(Map) ActionContext.getContext().get("session");
//session=(Map) ActionContext.getContext().getSession();两种都可以
application=(Map) ActionContext.getContext().get("application");
//application=(Map) ActionContext.getContext().getApplication();两种都可以
}
public String add(){
request.put("request1", "request12");
session.put("session1", "session12");
application.put("application1", "application12");
return SUCCESS;
}
public String delete(){
return SUCCESS;
}
}
第二种:运用控制反转的方式获得request、session、application
//实现这三个接口(最常用)
class UserAction1 extends ActionSupport implements RequestAware,SessionAware,ApplicationAware {
private Map<String, Object> request;
private Map<String, Object> session;
private Map<String, Object> application;
public UserAction1() {}
public String add(){
request.put("request1", "request12");
session.put("session1", "session12");
application.put("application1", "application12");
return SUCCESS;
}
@Override
public void setApplication(Map<String, Object> application) {
this.application = application;
}
@Override
public void setSession(Map<String, Object> session) {
this.session = session;
}
@Override
public void setRequest(Map<String, Object> request) {
this.request = request;
}
}
/*
struts2访问Action类,发现其实现了这三个接口,将http协议种的request域转化成map形式的request,
再调用其setRequest()方法,将转化后的request赋给我们自己定义的request(private Map<String, Object> request;),session和application同上。
*/
第一种获取HttpServletRequest,HttpSession ServletContext
//获取HttpServletRequest,HttpSession ServletContext
class UserAction2 extends ActionSupport {
private HttpServletRequest request;
private HttpSession session;
private ServletContext application;
public UserAction2() {
//利用ServletActionContext去获取request
request = ServletActionContext.getRequest();
//使用request获取session
session = request.getSession();
//使用session获取application
application = session.getServletContext();
}
public String add(){
request.setAttribute("request1", "request12");
session.setAttribute("session1", "session12");
application.setAttribute("application1", "application12");
return SUCCESS;
}
}
第二种运用控制反转获取HttpServletRequest,HttpSession ServletContext
//通过实现ServletRequestAware方法,重写setServletRequest方法获取HttpServletRequest,剩下的思路与第一种相同
class UserAction3 extends ActionSupport implements ServletRequestAware {
private HttpServletRequest request;
private HttpSession session;
private ServletContext application;
public UserAction3() {}
public String add(){
request.setAttribute("request1", "request12");
session.setAttribute("session1", "session12");
application.setAttribute("application1", "application12");
return SUCCESS;
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
this.session = request.getSession();
this.application = session.getServletContext();
}
}