简单的cms系统
2022-07-28 14:14:58
163
{{single.collect_count}}

基于ssm的内容管理系统



前言

cms内容管理系统,用于后台管理主页面的文章,图片,视频等内容的管理。简单的来说就是对其新增内容,修改内容,和删除,或者将内容隐藏不显示等功能。


一、cms是什么?

cms就是内容管理系统,也可以理解成为网站建设系统。对于一些seo专员来说,内容管理系统可以帮助我们快速的建设任何类型的网站。cms系统的特点就是把网站模版和网站程序完全分开,同时还会提供模版方案,从而让网站的模版设计和程序彻底的分开,让网站设计人员可以对每个页面、栏目都使用不同的模版,随时都能进行编辑和修改。

二、功能模块

1.登录功能
2.文章管理
3.轮播图管理
4.视频管理
网站管理员登录后台主页面。
左边的为内容功能。

2.登录模块

在这里插入图片描述

登录设计
管理员实体类,需要有用户名,绰号,和密码。用用户名和密码登录。

点击登录后后台先根据用户名查询是否存在用户对象,存在后验证密码是否正确,不存在提示用户不存在,密码正确登录成功请求转发到后台管理主页面,否则提示密码错误。

在此之前需要创建一个拦截器对访问后台部分的网址拦截,只开放登录页面。
拦截器创建:
实现接口HandlerInterceptor 重写preHandle方发。
获取请求中的session判断其中有无登录信息。有就通过,没有进行拦截

@Overridepublic boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object arg2) throws Exception {// 获取session取user信息如果user为空没有登录,拦截,跳转到登录页面Object obj = req.getSession().getAttribute(Constant.USER_IN_SESSION);if(obj==null){// 没有登录// 跳转到登录页面】resp.sendRedirect("跳转到登录页面");return false;}else{// 登录了就放行return true;}}

登录 模块中的记住我
记住我,在后台登录成功以后设置完session中的user信息后将用户名和密码设置到cookie中 设置并设置了在后台路径有效和15天的生存周期。前端跟获取cookie中的user信息填写到登录表中。

当没有点击记住我,在后台将cookie中的用户信息直接干掉。
其中需要注意删除时一定要判断只将cookie中的用户信息删除,不能直接对其干掉,因为登录后的session信息保存在cookie中,如果删除用户将登录不了后台主页面。

public AjaxResult login(String username,String password,Integer remember,HttpSession sessioin,HttpServletResponse resp,HttpServletRequest req){try {User user = service.findOne(username,password);// 把user放入sessionsessioin.setAttribute(Constant.USER_IN_SESSION, user);// 记住我if(remember!=null){// 记住我// 1. 获取到正确的用户名和密码返回给浏览器 ---》 拿到用户名和密码放入input中去//把数据放入cookie中, 添加到浏览器端// 创建cookieCookie c1 = new Cookie("username",username );Cookie c2 = new Cookie("password",password );// 设置cookie路径c1.setPath("/");c2.setPath("/");// 设置cookie的存活时间c1.setMaxAge(7*24*60*60);c2.setMaxAge(7*24*60*60);// 把cookie添加到浏览器端resp.addCookie(c1);resp.addCookie(c2);}else{ // 取消记住我// 获取cookiesCookie[] cookies = req.getCookies();// 遍历for (Cookie c : cookies) { // 存有username 和 password的cookieif(c.getName().equals("username") || c.getName().equals("password")){// 使死亡c.setPath("/");c.setMaxAge(0); // 立刻死亡// 添加到浏览器resp.addCookie(c);}}}return new AjaxResult();} catch (Exception e) {return new AjaxResult(false, e.getMessage());}}

文章管理模块

​ 1.先根据需求,分析这一模块的实体类的属性。

​ 2.创建实体类。(domain)

​ 3.准备前端页面,表格展示文章的信息,并准备一个操作列其中有删除和修改。增加额外放在一个地方。使用到技术GridManager。

​ 4.准备一个分页实体类。

​ 5.创建一个查询类。

​ 6.先完成查询所有文章信息并显示的功能。

根据查询类中的分页要求将查询的所有内容展示。

​ 7.在完成查询,点某一行的删除后弹出模态框,提示用户是否确认删除,点击确认模态框隐藏,不做任何事,点击确认,就根据在前端点击删除按钮的行获取id后发到后台,根据id查到删除。删除完成返回成功或者失败信息。将信息返回到前端,前端根据返回信息将错误以弹出对话框展示给用户,或者直接刷新页面。

​ 8.在完成删除功能,前端点击添加以后弹出模态框,在完成信息填写后点击确认,用插件中 ajaxSumbit 将整个表单信息异步发送到后台,在完成添加。成功后刷新页面,错误提示错误。其中文章主体模块,因为html直接带的标签不能满足需求,用到了富文本工具。

​ 9.添加完成后,点击修改后弹出对话框,根据id找到对象将原来的值给回显到表上。用的插件 row 保存的当前行的文章信息,是一串字符串,转为json将他用setFrom方法回显数据。富文本回显用到富文本中的方法。

​ 10.后台基本完成,用户界面显示,在页面加载时就向后台发送异步请求获取文章信息,将最新未被禁用的文章用动态添加标签列出来给浏览者查阅。此标签因为是动态添加的不能直接绑定事件,需要用到事件委托,我直接委托给body。

​ 11.浏览者可根据自己需求点击具体的文章阅读,我这个模块用到了freemark直接生成对应的静态页面。这个页面中除了文章的具体内容和标题外还有点击量。点击量的实现用了点击网页后将当前的网页名发送后台,查询对应的文章信息将其中的点击量+1.在页面加载时获取点击量。。
在这里插入图片描述

回帖
全部回帖({{commentCount}})
{{item.user.nickname}} {{item.user.group_title}} {{item.friend_time}}
{{item.content}}
{{item.comment_content_show ? '取消' : '回复'}} 删除
回帖
{{reply.user.nickname}} {{reply.user.group_title}} {{reply.friend_time}}
{{reply.content}}
{{reply.comment_content_show ? '取消' : '回复'}} 删除
回帖
收起
没有更多啦~
{{commentLoading ? '加载中...' : '查看更多评论'}}