疫情社区项目笔记小总结
注册的时候,用户输入到服务端的是明文密码,在后端进行MD5加密后,保存到数据库中的是加密后的密码。
所以,当用户登录时,传到服务端的也是明文密码,所以在登录方法里也要对password这个参数进行MD5加密。
因为MD5对同一个字符串,加密后的密文总是想等的。
表单提交过来的数据,相当于加到数据库里,用post。比如登录。
!kaptcha.equalsIgnoreCase(code)
和
!kaptcha.equals(code)
两者其实一样的,都是判断是否相等。前者忽略大小写,比如验证码的时候就有用处!
当需要给一个对象设置当前时间的时候,可以使用new Date( );
System.currentTimeMillis()+3600*1000)可以这样解读:System.currentTimeMillis()相当于是毫秒为单位,但是,后头成了1000,就变成了以秒为单位。那么,3600秒=1小时,所以输出为当前时间的1小时后。
我们可以这样控制时间:System.currentTimeMillis()+time*1000),里面传入的time是以秒为单位,当传入60,则输出:当前时间的一分钟后
System.currentTimeMillis()+60*1000×10)代表60秒乘以10,也就是当前时间的10分钟后。
ThreadLocal
-
ThreadLocal采用线程隔离的方式存放数据,可以避免多线程之间出现数据访问冲突。
-
ThreadLocal提供set方法,能够以当前线程为key存放数据。
-
ThreadLocal提供get方法,能够以当前线程为key获取数据。
spring自带的工具,对标签做一个处理。比如这个在页面上会显示这种标签,所以也要处理;
让它在数据库中进行转义lt、gt。
//❤ int i = discussPostMapper.insertDiscussPost(discussPost);
//返回是int i,所以直接return+操作方法;
//返回是String Object,所以需要操作方法.var封装数据,然后return封装后的对象参数;
/*这里有点小重要:上面查询到帖子对象后,将结果封装到model返回前端,但是里面有个user_id字段,我们不能将这个显示给前端
*而要通过user_id找到user的头像或者姓名来展示;
两种方式:一种关联查询,一次查两张表,但是sql语句很复杂并且有冗余
第二种(使用)就是在这里再对user_id做一次查询,查出它的头像或姓名,然后结果一起封装进行展示,但是效率低,查了两次数据库;后期可以用redis完美解决;/
controller 里这里应该返回的是一个页面,但是我这里老是返回一个空白页,上面return后面路径的字符串。
这是因为controller层加的是@RestController注解,它是@Controller+@ResponseBody,它会将数据通过json格式给前端,用于前后端分离。
但是我的是单体项目,不存在这个,将其改回@Controller就好了!
10.
重要规则:
只要是实体类型,比如一个java bean;那么我们声明在条件当中作一个参数的话;那么最终springmvc都会把这个bean存到Model model里,所以在页面上通过model就能获取这个bean;比如这里得Page page;
Page.java
11.
groupBy的分组是对每一个会话进行分组,即有多少人正在和你私信沟通;
from_id != 1 意思是 会话当中,来源是1的人给你发的消息,也就是系统本身,即单方面的通知,而不是双方的交流沟通;
这句sql意思就是 查询每一个会话中id最高的那条数据信息;
12.
声明:如果不想每次都写private final Logger logger = LoggerFactory.getLogger(当前类名.class); 可以用注解@Slf4j;
- 导lombok插件
- 类上添加@Sl4j注解,然后可以使用log打印日志
@RequestBody的使用
别人博客地址
@RequestParam