1. 程式人生 > >struts2獲取引數,解決亂碼

struts2獲取引數,解決亂碼

Struts2獲取引數,跳轉,中文亂碼
Struts2中獲取引數
1..類ActionContext。可以將這個類看成是一個容器,實際上它是一個map,這個類封裝了parameter , session,application,本地化資訊。類中提供方法
getContext():用來獲取ActionContext的物件
getParameters():獲取傳遞過來的所有的引數,
getSession():這個方法實際上是獲得session物件,但是struts2中對這個進行了再次 封裝成map物件,map的key為session中的key,map的value為session 中的value。
getApplication():同session一樣。獲得application物件。
2.類ServletActionContext。這個類是ActionContext的子類。通過這個類的
getRequest(),和getResponse()方法可以獲得 HttpServletRequest和HttpServletResponse物件,有了request和response 就能夠像struts1中獲取其他的任何物件了。

3.通過屬性直接填充
在struts1中能夠通過form直接填充。在struts2中更加直接簡單,我們只需要在action處理類中加上屬性 屬性的名稱和所獲取form的元素名稱一樣即可實現填充。Struts2中還有一個特性,就是屬性不需要手動進行儲存到作用域中,它會將屬性自動儲存進request的作用域中。

4.屬性賦值的第二種表現形式
我們用struts實現的三層都是用到了實體類,我們的目的是將資料儲存進實體的JavaBean中然後進行操作,這裡如果一個form可能出現上百個引數,如果每個屬性都去寫那將很繁瑣也很浪費時間,所以我們可以直接在屬性的位子放一個封裝了所有屬性的物件。然後在頁面對這個物件進行填充,struts2會自動將這個物件放進 request的作用域中。


Struts中頁面的跳轉
Struts1中頁面跳轉是用一個forward標籤在配置檔案中配置即可,struts2和struts1大同小異,在Struts.xml檔案的 <Action>標籤的內部配置 <result name="index">/index.jsp</result> 當在action的處理方法中返回的是String型別的,這裡如果想要跳轉到根目錄下的index.jsp頁面中只需要返回 return "index" 即可。預設的跳轉方式是轉發,如果想把跳轉方式改為重定向 則 <result name="index" type="redirect">/index.jsp</result>

有時想從一個action方法中跳轉到另一個action中 。假設類Test1 實現Action介面 , 類Test2 繼承Actionsupport類,兩者都是Action。 Test1中有 方法 execute.Test2中有function2. 兩者間相互跳轉如下:
Test1的execute 到 Test2的function2
<result name="demo" type="redirect">
Test2!function2.action
</result>

Test2的fucntion2到Test1的execute方法中
<result name="demo" type="chain">
Test1.action
</result>


中文亂碼問題
在struts2中解決中文亂碼問題非常簡單。只需要在struts.xml中的<struts>的標籤中新增 子標籤 <contant name="struts.i18n.encoding" value="gbk"></contant>
在struts2中 可以在src目錄下新增 名稱為struts.properties的配置檔案,可以將在struts.xml中的一些全域性變數放在整合各配置檔案中。比如可以將 上面的轉換中文的程式碼放進 struts.properties檔案中,在 struts.properties配置檔案中的格式是 key=value. 所以可以將上面的程式碼 寫成 struts.i18n.encoding=gbk 放進 資原始檔中。