原创 org.thymeleaf.spring4.templateresolver模板視圖解析器

Springmvc html模板解析方式 使用org.thymeleaf.spring4.templateresolver 當然也可以使用freemarker模板解析器 我上傳了一個thymeleaf的官方文檔,應該在官方網站

原创 svn不同分支代碼合併

記錄一下,有個印象 從sit merge到uat 1. 本地uat文件revert 和資源庫保持一致 2. uat文件右鍵merge 選擇資源庫中sit的分支文件merge,在這兒是可以選擇sit的某一/幾個commit進

原创 DateUtilt

package com.base.utils; import org.apache.commons.lang.StringUtils; import org.joda.time.DateTime; import org.joda

原创 Shiro集成CAS登錄成功跳轉地址問題

最近做了Shiro與CAS的集成,第一次深入Shiro,發現Shiro是一個不錯的安全框架,cas是另外一個搭建做的。 登錄成功之後有3種頁面跳轉選擇,這是根據觸發登錄操作的頁面分類的。 1. 當前頁面不需要登錄即可訪

原创 Shiro CAS對接原理一覽

用戶訪問需授權的地址,Shiro攔截請求重定向到cas登錄地址,附帶service參數 cas登錄成功則重定向到service參數指定的地址,附加請求參數token Shiro攔截請求拿到token,通過http訪問cas接口(

原创 eclipse中maven項目發佈到tomcat下 報找不到類或class或未定義類或class,實際上定義了

首先排查問題,清除tomcat緩存,手動刪除target文件,清理,構建項目,從新發布。 如果此時還出現上面問題,那麼可能是下面描述的問題了。 與maven編譯的輸出路徑設置有關,maven默認編譯完成的class及resour

原创 maven下多環境配置文件、屬性管理 & Spring使用@value初始化字段值

說明一下,很多項目把配置文件與項目偶合在一起,比如與第三方的各種私密配置信息都與項目耦合在一起,導致什麼結果,任何一個該項目的開發人員都能知道生產環境的各種配置,而且開發人員離職後一般都會把項目copy在自己的硬盤上,各種私密的配

原创 web 靜態資源

原文地址 在web.xml文件中經常看到這樣的配置default,這個配置的作用是:對客戶端請求的靜態資源如圖片、js文件等的請求交由默認的servlet進行處理,如下所示: <servlet-mapping> <servlet-

原创 程序運行過程中獲取Spring上下文通過ApplicationContextAware

public class SpringContextUtil implements ApplicationContextAware { private static ApplicationContext applicat

原创 分佈式任務調度xxl-job

記錄一下有這個東西 https://github.com/xuxueli/xxl-job

原创 eclipse 修改contextroot導致spring springmvc加載2次

問題描述:在eclipse中開發項目,想發佈到項目到root下,然後修改項目發佈目錄爲 /; 然後導致什麼 spring初始化2次,導致很多問題 導致如下問題 第二次初始化時,會導致 數據庫的連接數成倍增加 導致dubbo消費者

原创 在shiro中控制自動登錄

場景一:集羣中各節點登錄狀態保持一致,當然這個集羣沒有統一的認證中心 場景二:微信環境微店項目,自動登錄,進入微店,則判斷用戶是否註冊,如果已經註冊則自動登錄否則跳轉到註冊頁面(ps:需要用戶關注公衆號纔可以註冊) 這兒針對場景

原创 Twitter Snowflake 主鍵生成

http://blog.yxwang.me/2012/08/twitter-snowflake/ 這是一篇兩年前 Twitter 開發團隊寫的文章,今天挖出來研究了一下。原文地址 http://engineering.twitte

原创 Twitter_Snowflake生成主鍵代碼

package com.common.common; /** * Twitter_Snowflake<br> * SnowFlake的結構如下(每部分用-分開):<br> * 0 - 0000000000 00000000

原创 自定義表單驗證,密碼是否包含數字、字母、特殊字符的至少2種

實現起來比較簡單吧 function validatePwd(password) { var iNow = 0; if (password.match(/\s/)) { return false;