在Action獲取Scope物件

2021-09-30 09:45:09 字數 2217 閱讀 9350

在action獲取scope物件

方式一、與servlet解耦合的非ioc方式

獲取的scope物件與容器無關,通過actioncontext獲取。

loginaction**如下:

package com.asm;

public class loginaction extends actionsupport 

$的形式來接受

request:

<%=request.getattribute("req") %>

session:

<%=session.getattribute("ses") %>

分析:通過actioncontext

的getcontext

靜態方法得到

actioncontext

物件,然後

actioncontext

物件呼叫

get方法來獲取乙個儲存在

request

範圍中的物件。我們使用

el或通過

request.getattribute

這樣的方式均可以獲取物件值,這說明了這些

map request

物件實際是儲存在

request

範圍內的物件。 方式

二、與servlet解耦合的ioc方式

我們建立login2action,主要**如下:

package com.asm;

private string username;

map request;

map session;

public string execute() throws exception 

註冊此action的name為login2,隨後修改登入提交為.../login2.action。便可以發布測試。說明:此方法其實和方式一很相似,只是在方式一中我們需要手動的為map request賦值,但是在方式二中它是通過實現介面,在重寫介面中的方法中完成對map requset的賦值,所以稱之ioc方式。借助此例,略談下依賴注入與控制反**所謂依賴注入就是乙個物件自己本身的初始化是依賴其它物件。比如這裡map request這些物件會依賴struts2來給其初始化,稱為依賴注入,而依賴注入的就表示,這些物件的控制權不再由此類本身掌握,而是交給了別的物件,即是控制權反轉了。 強調:方式二是開發中主要用的方式,應重點掌握

方式三、與servlet耦合的非ioc方式

建立login3action,**如下:

package com.asm;

public class login3action extends actionsupport 

此方法獲取的純粹的scope物件,它與容器相關,這些scope物件操作更強。同樣只需要註冊此action並修改登入頁面便可進行測試。

方式四、與servlet耦合的ioc方式

建立login4action,**如下:

request.setattribute("req", "requst屬性

");session.setattribute("ses", "sesion屬性

system.out.println("測試:

"+request);

this.request=request;

system.out.println("測試:

...省略

username

的get/set方法

同樣只需要註冊此action並修改登入頁面便可發布測試 

Struts2 Action獲取Scope物件

方式 一 與servlet解耦合的非ioc方式 獲取的scope物件與容器無關,通過actioncontext獲取。loginaction 如下 package com.asm public class loginaction extends actionsupport 省略username的get...

在filter中獲取action的引數值

public voidonactionexecuting actionexecutingcontextfiltercontext 中比較方便 有filtercontext.actionparameters,key value,直接可以獲得 但是在其他的 public void onactionexe...

Spring中對scope的意思

預設情況下,從 bean工廠所取得的例項為singleton bean的singleton屬性 1.singleton spring容器只存在乙個共享的bean例項,預設的配置。2.prototype 每次對bean的請求都會建立乙個新的bean例項。二者選擇的原則 有狀態的bean都使用proto...