今天發(fā)現(xiàn)了MySQL的TimeStamp類型遂赠,居然支持Insert-TimeStamp的默認(rèn)值(當(dāng)前時間)鸵膏,以及Update-TimeStamp特性(更新該字段的時候自動更新)虏杰。
大喜過望眼虱,將其實(shí)裝進(jìn)數(shù)據(jù)庫宴卖。
期間重做了一次系統(tǒng),因?yàn)?.5不支持同時存在兩個這樣的TimeStamp衔峰。
結(jié)果不知道出了什么問題漓雅,Github里居然只剩下了bean……
看到一篇文章录别,http://blog.csdn.net/saroll57/article/details/51837551
博主的看法是:根因是Mysql數(shù)據(jù)的變化源存在多個(Tomcat、Mysql)邻吞,而多個源很容易產(chǎn)生時區(qū)等不一致情況。在開發(fā)Web系統(tǒng)時葫男,盡量要減少這種多個模塊抱冷、部件的耦合,盡量保證數(shù)據(jù)的變化源只有一個地方梢褐,就是Tomcat的Java Bean旺遮。
仔細(xì)思考之下,兩個TimeStamp只提供查詢接口盈咳,Update語句里直接不給修改TimeStamp應(yīng)該可以解決問題耿眉?
將bean里所有用到時間戳的地方,直接返回java.sql.TimeStamp類型的數(shù)據(jù)鱼响,交由Service解析鸣剪。
為User表添加了create_at和last_login_at字段。
昨天配的XML全部完蛋……好像resource文件夾是不會被git同步的丈积。筐骇。日了狗
重配增加熟練度吧。
這回重新從Mapper開始寫起江滨,不過先寫UserMapper吧铛纬。。
Mapper有這三個方法:
User getUser(Integer id)
int update(User user)
int add(User user)
不提供刪除用戶的接口唬滑。
接下來是userService的接口及其實(shí)現(xiàn)類告唆。
突然發(fā)現(xiàn)要實(shí)現(xiàn)驗(yàn)證碼,找了個叫jCaptcha的輪子用上晶密。
在啟動的時候Tomcat報(bào)異常:
java.io.FileNotFoundException: Could not open ServletContext resource [/mybatis-config.xml]擒悬,經(jīng)檢查是Spring-dao.xml中忘記加classpath:導(dǎo)致的。
折騰這個輪子搞了好久啊……沒有中文文檔惹挟,只能看別人的實(shí)例茄螃,折騰了一個多小時復(fù)制了一份Spring的配置終于能正常使用了。连锯。
接下來的問題是在session中取出驗(yàn)證碼對象來驗(yàn)證归苍,這個應(yīng)該和用戶登陸放在同一塊,看看有沒有手冊……
鉆了半小時牛角尖运怖,我的目標(biāo)是前后端分離拼弃,采用Token驗(yàn)證而不是瀏覽器中的Session,我覺得這個輪子不適合我……
又花了15分鐘查閱文章摇展,總結(jié)一下:
舊版本:向服務(wù)器要一個驗(yàn)證碼吻氧,服務(wù)器直接在內(nèi)存中生成驗(yàn)證碼,用戶輸入之后在Session里放輸入的值,服務(wù)端來判斷對不對得上盯孙。
新版本:同時要到驗(yàn)證碼+id鲁森,將id+驗(yàn)證碼寫入json返回去,綁定在token上振惰,服務(wù)端判斷id和驗(yàn)證碼是否能對上歌溉。
倒是發(fā)現(xiàn)一個比較新的輪子,Github上最近一次更新是11天前骑晶。痛垛。但是人家的技術(shù)選型是OAuth+Redis對我而言完全陌生……
而且也不是很友好,只是一個項(xiàng)目桶蛔,并沒有打出現(xiàn)成的jar匙头。。
所以我的驗(yàn)證碼到底怎么辦仔雷。蹂析。