这个实战项目是一个不错的面试拿来讲的项目,牛客网购买的,如果有缘看到这个博客,喏,拿去好了 链接:http://pan.baidu.com/s/1nv86TVN 密码:pj06
该项目实现的功能:
数据交互iBatis集成
用户注册登录管理
资讯发布 图像上传
评论中心
基于Redis点赞的功能
异步设计 站内邮件
多种资讯的排布算法
Spring boot注解
@Controller定义Controller控制器,用它标记的类就是一个SpringMVC Controller对象用于定义控制器类,在spring 项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping。
@RequestMapping来映射request请求与处理器(url到Controller)
@RequestBody在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。
@RequestParam绑定HttpServletRequest请求参数到控制器方法参数
@CookieValue绑定cookie的值到Controller方法参数
@RequestHeader绑定HttpServletRequest头信息到Controller方法参数
附一位博主的总结
AOP 面向切面编程
在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。
一般而言,我们管切入到指定类指定方法的代码片段称为切面,而切入到哪些类、哪些方法则叫切入点。有了AOP,我们就可以把几个类共有的代码,抽取到一个切片中,等到需要时再切入对象中去,从而改变其原有的行为。
IOC 依赖注入 控制反转
让调用类对某一接口实现类的依赖关系由第三方(容器或协作类)注入,以移除调用类对某一接口实现类的依赖。
velocity
是一个java模板引擎,可以直接引用定义在java代码中的对象
基本语法
‘ # ‘用来标识velocity的脚本语言 包括’ #set、#if 、#else、#end、#foreach、#end、#iinclude、#parse、#macro ‘等
‘ $ ‘ 用来标识对象或者说变量
‘ {} ‘ 用来明确标识velocity变量
‘ ! ‘ 用来强制将不存在的变量显示为空白
实践
‘ $!obj ‘直接返回对象中的结果
‘ #if($!obj) #else #end ‘判断语句
‘ #foreach($info in $list) $info.someList #end ‘ 循环读取集合list中的对象,并做处理
‘ #macro(macroName)#end ‘ 脚本函数(宏)调用,不推荐在界面模板中大量使用
包含文件’ #inclue(“模板文件名”)或#parse(“模板文件名”) ‘ parse与include的区别在于,若包含的文件中有Velocity脚本标签,将会进一步解析,而include将原样显示。
‘ #set ‘声明
在万不得已的时候,不要在页面视图自己声明Velocity脚本变量,也就是尽量少使用’ #set ‘。
附一位博友的文章链接
数据库部分
业务字段的设计
数据的创建及增删改查的操作
myBatis集成数据库环境
整体框架的搭建 model controller service dao database
注册 登录 浏览 功能的实现
注册
用户合法性检验(长度,敏感词,重复,特殊字符)
密码长度要求
密码salt加密,密码长度检测(基于MD5加密)
用户邮件 短信激活