**CMS 内容管理系统**
1:Maven:项目构建工具---->管理整个项目的
好处:以前导包和配置文件很烦
maven解决 -- pom.xml -- 写上一小段配置
maven的结构:src/main/java
src/main/resources
src/main/webapp
src/test/java
src/test/resources
2:跳转到后台首页 index.jsp
3:跳转到文章列表页面 article.jsp
4:显示文章列表
使用到了Gridmanager(后台返回数据格式必须是totals data)
1:分页
supportAjaxPage: true 分页
currentPageKey: "localPage" 设置请求参数名 当前页
pageSizeKey: "pageSize" 设置请求参数名 每页的条数
sizeData: [5,10,15,20] 自定义分页样式
pageSize: 5 自定义分页初始值
对分页的localPage(当前页) pageSize(每页的条数) 进行了封装 并且构造了一个方法用来获得limit 第一个参数
2:高级查询
对高级查询的参数封装了 并且这个类继承了分页类
自动获取前台参数 var formData = $('#queryForm').serializeObject();
发送请求 GridManager.setQuery('demo-baseCode', formData);
3:对文章的增删改
删除:
1:绑定删除按钮点击事件
2:获取id
3:弹出模态框
4:取消模态框确定按钮事件
5:绑定确定点击事件
6:ajax请求: 如果删除成功 :
关闭模态框
刷新页面
删除失败: 弹出一句话
添加:
1:绑定添加按钮点击事件
2:清除缓存
3:清除隐藏域缓存
4:弹出模态框
修改:
1:绑定修改按钮点击事件
2:获取数据
3:数据回显
4:弹出模态框
添加和修改的保存操作:
1:绑定保存按钮点击事件
2:发送请求
3:成功回调函数中 如果保存成功 :
关闭模态框
刷新页面
保存失败: 弹出一句话
1:抽取了公共资源
index.jsp 和 article.jsp 中的样式以及引入 还有
2:js分离
自己写的js代码进行了抽取
3:前台用户页面的跳转
4:页面静态化 freeMarker
1:封装了freeMarker工具类
1:添加功能时生成静态页面
1.1 获取存放静态页面.ftl文件的绝对路径
1.2 根据 freeMarker工具类生成了新的静态页面
1.3freeMarker工具类的返回值是url,将新生成的url 设置到article去
1.4 操作数据库 添加操作
2:修改功能时对静态页面的处理
2.1 获取旧的文章对象,获取数据库中的url
2.2 获取路径,生成了新的静态页面
2.3 操作数据库,更新操作
2.4 删除旧的静态页面
3:删除功能对静态页面的处理
3.1 获取存放静态页面.ftl文件的绝对路径,获取要删除文章的url
3.2 操作数据库,删除操作
3.3删除文件
4:浏览次数或点击次数的实现
4.1 点击次数的改变是每次刷新访问的文章页面时候+1 -->页面加载 发送请求
4.2 向后台传递的url 通过location.href得到网址 然后截取得到url
4.3 根据url查询数据库文章对象 给对象中的点击数set值 原来的+1
4.4 最后在操作数据库 更新操作
5:富文本编辑器的使用
5.1 一大堆的配置
6:轮播图的列表展示
参考文章的列表展示
7:轮播图的高级查询和分页
1:轮播图的添加功能
1.1 文件上传 --> 核心代码 ioUtil.copy(in,out);
1.2 添加和修改的模态框需要改 涉及到上传 form表单三要素 post type = file enctype="multipart/form-data"
还需要再applicationContext-mvc.xml配置<!-- 配置文件上传解析器 -->
1.3后面的操作文章模块的添加差不多了
1.4controller层 :Slide slide,HttpServletRequest aq,MultipartFile photo
2.轮播图的修改功能
3:轮播图的删除功能
4:前台页面轮播图的展示
5:Cookie与Session
区别:
Cookie:将一小段文本信息保存在客户端浏览器中的一种会话跟踪技术
优点:减轻了服务器的压力
Session:将数据保存在服务器端的会话跟踪技术
优点:安全性高
大小相对于Cookie来说大得多
数据类型没有限制
6:用户登录功能实现
6.1 准备登录的页面
6.2 点击登录按钮时发送异步请求
6.3 后台操作逻辑:
6.3.1根据前台传来的用户名操作数据库查询user
6.3.2 如果为空 说明该用户不存在
6.3.3 如果不为空 说明用户账号正确 接下来判断数据库的密码和前台传来的密码是否一致
6.3.4 登录成功后 前台请求回调函数中判断后 进行页面跳转 location.href="跳转的页面";
1.在后台管理首页显示登录信息
将用户对象放入到session 然后再页面用el表达式取称号
2.注销功能
2.1杀死session
2.2 跳转回登录首页
3.键盘回车就登录
3.1页面加载里面 整个document对象中都能点击
3.2 事件为 keypress 当e.keyCode==13时 就是回车键
3.3 做登录的操作
4.登录拦截
4.1准备一个类继承HandlerInterceptor 覆写3个方法
4.2再preHandle方法里做登录拦截功能
4.3因为登录成功后会将对象放到session中去,所有创建一个session 取到 这个对象
4.4 如果对象不为空 就是登录过了 不用拦截 返回值为true
4.5 如果对象为空 就是没有登录
4.5.1 跳转到登录首页
4.5.2 拦截 返回值为false
5.记住我
5.1 后台代码: 通过前台传来的记住我input框的value值判断是否进行了勾选
如果不等于null,通过cookie将正确的用户名和密码放到浏览器中(可以设置生命周期 以及 路径("/"))
5.2前台代码: 再页面加载的时候
获取cookie (是字符串类型)
判断:如果cookie包含了username 那就是登录成功了
通过split将cookie以;分隔开得到数组
遍历数组
判断:包含了username字段的 取值
包含了password字段的 取值
往form表单中赋值: username
password
以及记住我框框设置为默认勾选
6:取消记住我
6.1后台代码:通过前台传来的记住我input框的value值判断是否进行了勾选
如果等于null,通过请求对象req得到cookie数组
遍历数组 将k值为username password 杀死(生命周期设为0 路径设置 放到浏览器中)
6.2 前台代码: 往form表单中赋值: 用户名和密码为空 记住我框不勾选