今天发现了MySQL的TimeStamp类型,居然支持Insert-TimeStamp的默认值(当前时间),以及Update-TimeStamp特性(更新该字段的时候自动更新)。
大喜过望,将其实装进数据库。
期间重做了一次系统,因为5.5不支持同时存在两个这样的TimeStamp。
结果不知道出了什么问题,Github里居然只剩下了bean……
看到一篇文章,http://blog.csdn.net/saroll57/article/details/51837551
博主的看法是:根因是Mysql数据的变化源存在多个(Tomcat、Mysql),而多个源很容易产生时区等不一致情况。在开发Web系统时,尽量要减少这种多个模块、部件的耦合,尽量保证数据的变化源只有一个地方,就是Tomcat的Java Bean。
仔细思考之下,两个TimeStamp只提供查询接口,Update语句里直接不给修改TimeStamp应该可以解决问题?
将bean里所有用到时间戳的地方,直接返回java.sql.TimeStamp类型的数据,交由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的接口及其实现类。
突然发现要实现验证码,找了个叫jCaptcha的轮子用上。
在启动的时候Tomcat报异常:
java.io.FileNotFoundException: Could not open ServletContext resource [/mybatis-config.xml],经检查是Spring-dao.xml中忘记加classpath:导致的。
折腾这个轮子搞了好久啊……没有中文文档,只能看别人的实例,折腾了一个多小时复制了一份Spring的配置终于能正常使用了。。
接下来的问题是在session中取出验证码对象来验证,这个应该和用户登陆放在同一块,看看有没有手册……
钻了半小时牛角尖,我的目标是前后端分离,采用Token验证而不是浏览器中的Session,我觉得这个轮子不适合我……
又花了15分钟查阅文章,总结一下:
旧版本:向服务器要一个验证码,服务器直接在内存中生成验证码,用户输入之后在Session里放输入的值,服务端来判断对不对得上。
新版本:同时要到验证码+id,将id+验证码写入json返回去,绑定在token上,服务端判断id和验证码是否能对上。
倒是发现一个比较新的轮子,Github上最近一次更新是11天前。。但是人家的技术选型是OAuth+Redis对我而言完全陌生……
而且也不是很友好,只是一个项目,并没有打出现成的jar。。
所以我的验证码到底怎么办。。