Struts2第二節(jié)

Action 類

1. action VS Action 類

1). action: 代表一個? Struts2 的請求.

2). Action 類: 能夠處理 Struts2 請求的類.

> 屬性的名字必須遵守與 JavaBeans 屬性名相同的命名規(guī)則.

屬性的類型可以是任意類型. 從字符串到非字符串(基本數(shù)據(jù)庫類型)之間的數(shù)據(jù)轉(zhuǎn)換可以自動發(fā)生

> 必須有一個不帶參的構(gòu)造器: 通過反射創(chuàng)建實例

> 至少有一個供 struts 在執(zhí)行這個 action 時調(diào)用的方法

> 同一個 Action 類可以包含多個 action 方法.

> Struts2 會為每一個 HTTP 請求創(chuàng)建一個新的 Action 實例, 即 Action 不是單例的, 是線程安全的.

關(guān)于 Struts2 請求的擴展名問題

1). org.apache.struts2 包下的 default.properties 中配置了 Struts2 應用個的一些常量

2). struts.action.extension 定義了當前 Struts2 應用可以接受的請求的擴展名.

3). 可以在 struts.xml 文件中以常量配置的方式修改 default.properties 所配置的常量.

?在 Action 中訪問 WEB 資源

1). 什么是 WEB 資源 ?

HttpServletRequest, HttpSession, ServletContext 等原生的 Servlet API。

?2). 為什么訪問 WEB 資源?

B\S 的應用的 Controller 中必然需要訪問 WEB 資源: 向域?qū)ο笾凶x寫屬性, 讀寫 Cookie, 獲取 realPath ....

3). 如何訪問 ?

I. 和 Servlet API 解耦的方式: 只能訪問有限的 Servlet API 對象, 且只能訪問其有限的方法(讀取請求參數(shù), 讀寫域?qū)ο蟮膶傩? 使 session 失效...).?

? ? ?> 使用 ActionContext> 實現(xiàn) XxxAware 接口

? ? ?> 選用的建議: 若一個 Action 類中有多個 action 方法, 且多個方法都需要使用域?qū)ο蟮?Map 或 parameters, 則建議使用Aware 接口的方式

? ? ?> session 對應的 Map 實際上是 SessionMap 類型的! 強轉(zhuǎn)后若調(diào)用其 invalidate() 方法, 可以使其 session 失效!

II. 和 Servlet API 耦合的方式: 可以訪問更多的 Servlet API 對象, 且可以調(diào)用其原生的方法.?

? ? ?> 使用 ServletActionContext

? ? > 實現(xiàn) ServletXxxAware 接口.

Struts2的Action對象中使用Map類型request,session,application

1、聲明private Maprequest;private Mapsession;private Mapapplication;

2、產(chǎn)生ActionContext實例ActionContext context=ActionContext.getContext();

3、獲取request,session和application

Map<String,Object>? request=(Map<String,Object>) context.get("request");

Map<String,Object> ??session=context.getSession();

Map<String,Object> ??application=context.getApplication();

4、存值

String info="星期一";

request.put("info",info);

session.put("info",info);

application.put("info",info);

5、JSP頁面取值

request范圍內(nèi)的info值:request.getAttribute("info");

session范圍內(nèi)的info值:session.getAttribute("info");

application范圍內(nèi)的info值:application.getAttribute("info");

**獲取請求參數(shù)

//. 獲取請求參數(shù)對應的 Map, 并獲取指定的參數(shù)值.

//鍵: 請求參數(shù)的名字, 值: 請求參數(shù)的值對應的字符串數(shù)組//注意: 1. getParameters 的返回值為在 Map, 而不是 Map

//? ? 2. parameters 這個 Map 只能讀, 不能寫入數(shù)據(jù), 如果寫入, 但不出錯, 但也不起作用!

Map<String,Object>? parameters = actionContext.getParameters();

System.out.println(((String[])parameters.get("name"))[0]);

parameters.put("age", 100);

**注銷session

if(sessionMap instanceof SessionMap){

? ? SessionMap sm = (SessionMap) sessionMap;

? ? sm.invalidate();

? ?System.out.println("session 失效了. ");

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • action中如何接受頁面?zhèn)鬟^來的參數(shù) 第一種情況:(同名參數(shù)) 例如:通過頁面要把id=1 name=tom a...
    清楓_小天閱讀 3,285評論 1 22
  • 概述 什么是Struts2的框架Struts2是Struts1的下一代產(chǎn)品,是在 struts1和WebWork的...
    inke閱讀 2,337評論 0 50
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評論 19 139
  • 1、struts2工作流程 Struts 2框架本身大致可以分為3個部分: 核心控制器FilterDispatch...
    重山楊閱讀 1,604評論 0 38
  • 標簽 如果要配置的標簽,那么必須要先配置標簽,代表的包的概念。 包含的屬性 name包的名稱,要求是唯一的,管理a...
    偷偷得路過閱讀 1,512評論 0 0

友情鏈接更多精彩內(nèi)容