发生邮件
注册功能
访问注册页面
HTTP的基本性质
- HTTP是简单的
- HTTP是可扩展的
- HTTP是无状态的,有会话的(Cookies) 使服务器可以识别浏览器(由服务器发给浏览器,浏览器存放在本地,下次访问出示)
Session (依赖于Cookie,用于在服务端记录客户端的数据,安全但是服务器压力变大)
浏览器和session之间的对应需要cookie(cookie携带sessionId传给浏览器,即服务器和浏览器之间的令牌是sessionId)
cookie只能存少量字符串,session可以存更多的任何类型的数据
分布式部署中session会有问题,对于分布式服务器,浏览器访问的是nginx(代理,做负载均衡等),这就导致浏览器访问的可能是不同的服务器,原来的sessionId不能使用了。解决方法:粘性session,同步session(影响性能,产生耦合),共享session(存在宕机风险和瓶颈);主流方法是不使用session,尽可能存在cookie,敏感数据存在数据库集群(redis)中
空值处理很重要
DAO层实现Mapper接口,Service层将错误信息或者登录凭证放入map中,登陆成功还要将凭证存入数据库和map中,controller层中将service层的map放入,同时将验证码等验证信息也放入,并且将凭证从map中取出放入cookie中返回,thymeleaf可以直接读取map中的内容(${},链接是@{}),同时实体类或者request中的内容也可以读取到,配合bootstrap的class属性即可给出错误信息
显示登录信息
拦截器
-在请求开始时查询登录用户
-在本次请求中持有用户数据
-在模板视图上显示用户数据
-在请求结束时请理用户数据
上传文件:请求必须时POST请求,表单:enctype="multipart/form-data",Spring MVC通过MultipartFile处理上传文件
使用拦截器
- 在方法前标注自定义语法
- 拦截所有请求,只处理带有该注解的方法
使用映射读取注解 Method.getDeclaredAnnotations()