struts2 demo之blank

在HTML中,可以利用的< META >標籤實現Web的自動跳轉。
例如:在Web上顯示一段歡迎信息,隔一定秒數後,自動跳轉到其他的Web頁面,由此可以造成新奇的效果。
實現方法是在< HEAD >與< /HEAD >標籤之間加上如下語句:
< meta http-equiv="Refresh" content="秒數; url=跳轉的文件或地址" > ,
在Struts 2的blank這個例子中index.html就是這樣做的:
< META HTTP-EQUIV="Refresh" CONTENT="0;URL=example/HelloWorld.action" >,即:立即向服務器發出請求example/HelloWorld.action,
請求example命名空間中的名爲HelloWorld的Action,這個可以在/WEB-INF/classes/example.xml中找到。
HelloWorld Action執行成功之後,返回給客戶端的是/example/HelloWorld.jsp。這裏如果用HelloWorld可以嗎?答:不可以,這樣構成死循環了!
打開HelloWorld.jsp,首先是通過輸出一個國際化字符串,這個可以在/WEB-INF/classes/example/package.properties中找到。命名?位置?
然後通過輸出Action的屬性,即HelloWorld這個類的屬性,這個可以在/WEB-INF/src/java/example/HelloWorld.java中找到。
然後通過定義一個url地址變量,準備用在English中在頁面上顯示一個超鏈接,
可以在中嵌套子標記,用來傳遞請求參數,奇怪的是在HelloWorld Action中並沒有處理request_locale這個參數,
然而request_locale確實是發揮了作用。即:http://localhost:8080/struts2-blank-2.0.9/example/HelloWorld.action?request_locale=en有效。
why?
哦,原來在Struts 2.0中,通過ActionContext.getContext().setLocale(Locale arg)可以設置用戶的默認語言。
Struts 2.0爲您提供了一個名i18n的攔截器(Interceptor),並在默認情況下將其註冊到攔截器鏈(Interceptor chain)中。
它的原理爲在執行Action方法前,i18n攔截器查找請求中的一個名爲"request_locale"的參數。
如果其存在,攔截器就將其作爲參數實例化Locale對象,並將其設爲用戶默認的區域(Locale),最後,將此Locale對象保存在session的名爲“WW_TRANS_I18N_LOCALE”的屬性中。
真暈!
blank中其他的東東去哪兒了?通過index.html到不了啊!
再看看/WEB-INF/classes/example.xml,輸入http://localhost:8080/struts2-blank-2.0.9/example/Welcome.action,
OK,入口界面出來了,其實Welcome只是個jsp,但是這裏必須輸入Welcome.action,否則struts 2不認識。
在Welcome.action中主要就是用了在頁面上顯示了幾個超鏈接。
其中,在example.xml映射到Login.class,執行它的input方法,但是Login.class中沒有input方法,怪!
所以,程序會跟着input這個result響應/example/Login.jsp。
隨便輸入點東東,Login Action返回success,接着響應了/example/Menu.action,其實Menu也是個jsp,這裏硬給加上了後綴。
登陸頁面如果不輸入,Struts 2回自動調用/classes/example/Login-validation.xml驗證合法性。
採用stuts 2的校驗框架時,只需要爲Aciton按-validation.xml提供一個校驗文件即可,該文件放在Acion class相同路徑下。
哦,原來是Struts 2.0爲您提供了一個名validation的攔截器(Interceptor),並在默認情況下包含在defaultStack中了,直接用就行了。


總結一下:
1)用下面這兩個鏈接就能看到blank所有的東東了,真奇怪Apache爲什麼在一個例子包含了2塊不相干的東東:
http://localhost:8080/struts2-blank-2.0.9/example/HelloWorld.action
http://localhost:8080/struts2-blank-2.0.9/example/Welcome.action
2)Struts 2的國際化和驗證框架都是通過內置的攔截器實現的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章