基于ssm的内容管理系统
文章目录
- 基于ssm的内容管理系统
- 前言
- 一、cms是什么?
- 二、功能模块
- 2.登录模块
- 文章管理模块
前言
cms内容管理系统,用于后台管理主页面的文章,图片,视频等内容的管理。简单的来说就是对其新增内容,修改内容,和删除,或者将内容隐藏不显示等功能。
一、cms是什么?
cms就是内容管理系统,也可以理解成为网站建设系统。对于一些seo专员来说,内容管理系统可以帮助我们快速的建设任何类型的网站。cms系统的特点就是把网站模版和网站程序完全分开,同时还会提供模版方案,从而让网站的模版设计和程序彻底的分开,让网站设计人员可以对每个页面、栏目都使用不同的模版,随时都能进行编辑和修改。
二、功能模块
1.登录功能
2.文章管理
3.轮播图管理
4.视频管理
网站管理员登录后台主页面。
左边的为内容功能。
2.登录模块
登录设计
管理员实体类,需要有用户名,绰号,和密码。用用户名和密码登录。
点击登录后后台先根据用户名查询是否存在用户对象,存在后验证密码是否正确,不存在提示用户不存在,密码正确登录成功请求转发到后台管理主页面,否则提示密码错误。
在此之前需要创建一个拦截器对访问后台部分的网址拦截,只开放登录页面。
拦截器创建:
实现接口HandlerInterceptor 重写preHandle方发。
获取请求中的session判断其中有无登录信息。有就通过,没有进行拦截
@Override
public 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放入session
sessioin.setAttribute(Constant.USER_IN_SESSION, user);
// 记住我
if(remember!=null){// 记住我
// 1. 获取到正确的用户名和密码 返回给浏览器 ---》 拿到用户名和密码放入input中去
// 把数据放入cookie中, 添加到浏览器端
// 创建cookie
Cookie 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{ // 取消记住我
// 获取cookies
Cookie[] cookies = req.getCookies();
// 遍历
for (Cookie c : cookies) { // 存有username 和 password的cookie
if(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.在页面加载时获取点击量。。