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

 

一,获取方式

从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;
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值