編輯:關於Android編程
本來不想寫關於struts2的學習筆記了,由於感覺關於struts2的理論知識比較簡單,所以才打算不寫,但是在學習過程中,特別是在Myeclipse中編碼練習的時候,遇到的一些問題,因此,自己覺得有必要記錄一下,所以,還是邊學習邊寫博客吧。
動態方法調用指的就是為了解決一個Action對應多個請求的處理,以免Action太多。
動態方法調用有3中方法,分別為:
1、Action的method屬性
2、感歎號方式 !
3、通配符方式
下面將分別進行介紹。
只需要改兩個地方,第一個是在Action類中添加其他的方法。例如:在本例中就是添加了add()和sub()方法。
要更改的第二個地方為:更改struts.xml配置文件,例如本例中的struts.xml文件內容如下:
每個Action的結果文件自己添加即可,完成之後,就可以打開浏覽器,並輸入:http://localhost:8080/HelloWorld/addAction.action 就可以看到HelloWorldAction類執行add()方法了。
在實踐過程中,遇到了一個問題:即按照這個流程走下來,原以為在浏覽器中輸入地址就可以看到結果,但是我剛開始並沒有看到,原以為是哪裡錯了,檢查了好久也沒有錯誤,也參考了慕課網上關於struts2的視頻,也查了相關blog資料,感覺流程一模一樣,為什麼會運行不出來了。
最後查找出來的原因是:要重新啟動tomcat服務器,再運行就好了。
這種使用method屬性的方式來實現動態方法有一個不好的地方在於:如果只有幾個方法需要被調用,這樣還好,我們只需要在struts.xml文件中,寫幾個類似下面的代碼段。但是,如果有幾百個方法需要被動態調用,那麼用這種方法可能就不適合了,這樣代碼冗余太大,也不便於管理。因此就有了下面的兩種方法:!、通配符的使用,這裡介紹第一種。
/add.jsp
使用感歎號來實現動態方法調用,有兩個地方需要改動,如下:
第一個是Action類中,注意每個方法的返回值:
第二個是struts.xml文件中:注意result標簽下的name屬性<喎?/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPqGjPC9wPg0KPHA+PGltZyBhbHQ9"" src="/uploadfile/Collfiles/20160422/20160422090814121.png" title="\" />
在struts.xml文件中最下面一行代碼特別要注意:這是開啟感歎號可應用於動態方法調用。
待上面更改完成之後,在重啟服務器之後,就可以在浏覽器中輸入:http://localhost:8080/HelloWorld/helloworld!add.action來動態調用Action類中的add方法了。截圖如下:
上面就是在浏覽器中輸出的url格式是錯誤的,正確的如下:
雖然上面兩種方法都能夠完成動態方法的調用,但是官方都不推薦使用,通配符這種方法是推薦使用的。下面來介紹介紹。
通配符我們一般都知道,即用 * 來獲取內容。
下面還是看具體的例子。
Action類中的內容如下:
struts.xml文件中的內容如下:
上圖代碼中的
使用通配符在url地址中來取得要調用的方法的名稱。
例如:當我們在浏覽器中輸出 http://localhost:8080/HelloWorld/addAction ,則就會調用Action類中的add()方法。
在浏覽器中輸入url後顯示結果如下:
多個通配符的使用例子如下:動態的獲取Action類名和方法名:
在浏覽器中輸入url=http://localhost:8080/HelloWorld_add.action.
使用通配符來進行動態方法的調用,你始終要保證你的url地址格式要與你在struts.xml文件中使用通配符的格式一致,即要保證使用通配符提取出來的結果是你想要的。
無論是多麼小的一個知識點,都需要我們去實踐,這樣我們的收獲會更多,理解會更深。
原理最近用socket寫了一個消息推送的demo,在這裡和大家分享一下。主要實現了:一台手機向另外一台手機發送消息,這兩台手機可以隨時自由發送文本消息進行通信,類似我們常
繼承TabActivity並以activity布局先查看下最終效果圖:再看下代碼結構:其中black.gif顧名思義就是一個黑背景圖片,grey.gif就是一張灰色的背景
本文實例講述了Android控件之ProgressBar用法。分享給大家供大家參考。具體如下:ProgressBar位於android.widget包下,其繼承於View
網上開源項目:https://github.com/beworker/pinned-section-listview,該項目用的是ArrayAdapter()..不太適合