您的位置:首页 > 编程语言 > Java开发

Struts2取得内置对象的4种方式

2013-08-07 18:05 218 查看
 

一,获取方式

从Servlet容器中获取的方法

与Servlet容器无关的获取方法

IoC方式

非Ioc方式

二,获取方法

2.1 与servlet无关:

2.1.1 非IOC模式

Action代码
//private ActionContext context ;//该方法还可以取得值栈(getValueStack()),使用push(obj)往值栈中放数据
private Map request;
private Map session ;
private Map application ;

public LoginAction1(){
request = (Map)ActionContext.getContext().get("request"); //获取request
session = ActionContext.getContext().getSession(); //取得session
application = ActionContext.getContext().getApplication(); //取得application

request.put("r1","r1");
session.put("i1","i1");
application.put("a1","a1");
return SUCCESS;
}
JSP代码
<s:property value="#request.r1" />|<%=request.getAttribute("r1") %><br>
<s:property value="#session.i1" />|<%=session.getAttribute("i1") %><br>
<s:property value="#application.a1" />|<%=application.getAttribute("a1") %><br>
<s:debug></s:debug>
//后台使用的是Map类型的request/session/application,前台可以使用httpServletRequest类型的request对象及其他对象接收到,说明struts2肯定帮我们在Map 和Http之间建立了某种关联

2.1.2 IOC模式(理论上最常用)

Action代码
//DI dependency injection(依赖注入)
//IOC(注射方式) inverse of control(控制反转)
public classLoginAction2 extends ActionSupport implements RequestAware,SessionAware, ApplicationAware {
private Map<String,Object> request;//依赖注入,控制反转
private Map<String,Object> session;
private Map<String,Object> application;

public voidsetApplication(Map<String, Object> arg0) {
this.application = arg0;
}
public voidsetSession(Map<String, Object> arg0) {
this.session = arg0;
}
public voidsetRequest(Map<String, Object> arg0) {
this.request = arg0;
}
request.put("r1","r1");
session.put("i1","i1");
application.put("a1","a1");
return SUCCESS;
JSP代码(同上)

2.2 与servlet有关:

2.2.1 非IOC模式(个人认为最常用)

public class LoginAction3 extends ActionSupport{

private HttpServletRequest request;
private HttpSession session;
private ServletContext application;
public LoginAction3(){
request = ServletActionContext.getRequest();
session = request.getSession();
application = session.getServletContext();
}
}

2.2.2  IOC模式

public classLoginAction4 extends ActionSupport implements ServletRequestAware,
SessionAware,ServletContextAware {

private HttpServletRequest request;
private Map session; // 此处是Map类型的
private ServletContext application;

@Override
public String execute() throws Exception {
request.setAttribute("r1", "r1");
session.put("i1","i1");
application.setAttribute("a1", "a1");
return super.execute();
}
public voidsetServletContext(ServletContext arg0) {
this.application = arg0;
}
public voidsetSession(Map<String, Object> arg0) {
this.session = arg0;
}
public void setServletRequest(HttpServletRequestarg0) {
this.request = arg0;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Struts2