基于ssm的内容管理系统






文章目录

  • 基于ssm的内容管理系统
  • 前言
  • 一、cms是什么?
  • 二、功能模块

  • 2.登录模块
  • 文章管理模块



前言

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



一、cms是什么?

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

二、功能模块

1.登录功能

2.文章管理

3.轮播图管理

4.视频管理

cms底层架构 cms技术架构图_管理系统

网站管理员登录后台主页面。

左边的为内容功能。

2.登录模块

cms底层架构 cms技术架构图_用户名_02

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

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

在此之前需要创建一个拦截器对访问后台部分的网址拦截,只开放登录页面。
拦截器创建:
实现接口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.在页面加载时获取点击量。。

cms底层架构 cms技术架构图_用户名_03