在上一章中,我們已經搭建好了struts2的一個開發環境,那麼這一章就來做一個簡單的登錄功能,以及介紹和使用struts2裡面一個重要的東西-通配符。 第一步,在WebContent下麵新建一個login.jsp的頁面,裡面使用form表單實現一個簡單的登錄頁面。 第二步:打開上一章中建好的Logi ...
在上一章中,我們已經搭建好了struts2的一個開發環境,那麼這一章就來做一個簡單的登錄功能,利用action來獲取表單數據。以及介紹和使用struts2裡面一個重要的東西-通配符。
第一步,在WebContent下麵新建一個login.jsp的頁面,裡面使用form表單實現一個簡單的登錄頁面。
第二步:打開上一章中建好的LoginAction這個類,先在它的預設方法中來獲取登錄表單的數據。Action獲取表單數據有三種方式。
那麼第一種:使用ActionContext類:
但是使用這種方法的時候getParameters()可以通過map數據中key獲得頁面提交的參數名。理論上通過遍歷key,可以獲取value, (得到頁面傳來的值)。或者通過map.get("name")得到name參數的值。但是輸出看到的卻是如,[Ljava.lang.String;@1e630208 。(一個String對象!)所以,那要用這種方法輸出name的值,System.out.println(((String[])map.get("name"))[0]); 輸出即為傳過來的name對應的值。
第二種:ServletActionContext類
.
這個就跟servlet一樣,獲取到一個HttpServletRequest。
第三種:使用介面註入(不常用),實現介面ServletRequestAware.
這個繞來繞去也是取到了HttpServletRequest。
以上三種方法可以獲取到form表單提交的數據。
下麵我們介紹以及使用通配符 *。
首先還是以登錄為例。
在LoginAction中重新寫一個login方法:
在struts.xml中修改配置如下:
到這裡肯定有疑問了,為什麼name="login_*",method="{1}"? *號就是我們所說的通配符,*可以有多個,method="{1}"代表執行哪個方法,{1}代表第一個*號,例如在頁面上提交的地址為login_drop.action,那麼*號就代表drop,那麼執行的就是drop這個方法。那麼為什麼要使用通配符?它可以解決多個action地址只跳一個Action的類。
例如我們現在做的登錄,使用通配符後,頁面的提交地址也要進行改變。
以上就是該章的主要內容