學習在於堅持與積累,有句話說得好:Life Is An Endless Journey Of Learning! 時間匆匆而過, 記錄下自己的足跡.....
I. SpringMVC中如果出現亂碼問題,可使用CharacterEncodingFilter來對請求和相應進行編碼。
<span style="font-family:KaiTi_GB2312; font-size:18px"> <filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping> // encoding 參數對請求數據進行編碼
// 也可設置forceEncoding參數對相應進行編碼</span>
<span style="font-family:KaiTi_GB2312; font-size:18px"></span>
II. 避免表單數據進行重複提交 表單數據的重複提交問題,永遠是程序員需要面對於解決的一個基本問題。表單重複提交可能會造成極爲嚴重的後果,尤其是金融系統。因而應該細心處理表單操作可能出現的問題。 1. PRG(Post Redirect Get)是最常用的 處理表單重複提交的手段。該方法的步驟是:
表單進行Post提交,後端代碼處理完成相應操作然後將請求重定向另一URL,瀏覽器再次以Get方式進行請求。這時無論如何刷新,發送的請求都只是針對最後那次Get方式訪問的URL,和表單數據沒有了任何牽連。
這種方式的應用場景:適合那些最終呈遞的頁面所需數據與表單數據非緊密聯繫,或者說非直接取值與表單數據。如用戶登陸可使用PRG方式,呈遞頁面只需要用戶名即可(已存在Session中,不再需要表單數據)。
2. Token方式。步驟如下:
<1> 呈遞相應表單頁面前,生成Token並存於Session中。
<2> 頁面表單添加隱藏域,值爲上生成的Token。
<3> 表單提交,後端代碼將Request中的Token與Session中存儲的Token進行對比,若一致則進行相應處理,保存處理得到的數據與Model(Request)中,同時使Session中的Token失效(Session.removeAttribute("Token")),呈遞頁面。
<4> 若Token不一致,則爲用戶刷新操作,進行相應頁面跳轉。 Token方式適用場景:最終呈遞頁面需要使用表單提交的數據或根據表單數據處理得到的數據。例如:圖片上傳後跳轉至快速編輯頁面,後一頁面需要前一請求處理得到的數據,如果使用PRG方式無法獲取相應數據亦或是獲取到數據而導致頁面刷新進行多次請求,數據庫查詢壓力增大。
III. jquery中的.attr()與,.prop()方法的對比
attribute與property的漢語解釋皆爲:屬性。 如果完全將attribute與property理解爲相同意義,那麼使用中會犯下錯誤。 最好的理解是將attribute當做Dom元素的用戶定義屬性,而property理解爲Dom元素固有屬性。以人爲例:人的眼睛,嘴巴等是固有屬性;而衣服,鞋子則是自定義屬性。想穿什麼衣服,鞋子由自己,但是你有一雙眼睛,一個鼻子這些是生來具備的。
<input type="text" value="i am an attribute" />// 這裏的type與value屬性是用戶定義的,取值使用.attr()方法 -- $("input").attr("type"); 若想獲取該input是否disable是否checked,因爲這些是其property(本身屬性),使用.prop()方法 -- $("input").prop("disabled");
IV. 今天見到一個SQL語句,以前沒使用過,不過很有特點,跟大家分享下:
<span style="font-family:KaiTi_GB2312; font-size:18px"> 語法是:insert into select
insert into table1 select * from table2 // 將table2查詢出的數據複製到table1中,當然列數要對應</span>
有興趣的朋友可以試試.....
Good Bye, Readers; See You Next Post.....