CMS内容管理系统
作用
主要是用于对网站前台的信息管理,如文字、图片、影音和其他内容的发布、更新、删除、查询等操作
需求分析
官网中的内容或信息的显示和不显示来自于后台管理系统,需要我们开发一个后台管理系统来管理官网中的信息。主要涉及到三个模块,一是文章的管理,二是轮播图的管理,最后涉及到用户的登陆和注销功能的实现。
技术选型
开发工具:eclipse
数据库:Mysql
后端框架:SSM
前端框架:jQuery、Bootstrap、GridManager表格插件等
用户登录功能实现
- 用户登陆实现
用户在登陆页面输入用户名和密码,点击登录按钮或者点击回车键,这是会向后台发送ajax请求,提交表单中的数据,后台会根据得到的用户名去数据库进行查询,如果没有查到,说明没有该用户,向页面显示用户不存在;如果查到用户名,需要判断输入的密码,将传入的密码和数据库对应的密码相比较,如果不相同,说明密码输入错误,向页面显示密码错误;相反,密码匹配成功,返回用户对象,前台页面跳转到后台系统管理的首页。
User user= mapper.findUser(username);
if (user==null) { //用户不存在
throw new Exception(“用户名不存在”);
}else { //用户不为空
//判断密码
if (!user.getPassword().equals(password)) {
throw new Exception(“密码错误”);
}else { //密码正确,返回user
return user;
}
}
-
记住我功能实现
用户在是在用户名密码都输入正确的情况下,勾选了记住我,后台将正确的用户名和密码存入cookie中,前台判断从后台传过来的cookie中是否存有用户名和密码,如果存在用户名和密码,将用户名和密码截取下来,然后将用户名和密码回显在输入框内,这样下次进入登陆不再需要输入密码
后台存入cookie
//获取正确的用户名和密码,返回给浏览器
Cookie cookie1 = new Cookie(“username”, username);
Cookie cookie2 = new Cookie(“password”, password);
//设置cookie路径
cookie1.setPath("/");
cookie2.setPath("/");//设置cooke存活时间 cookie1.setMaxAge(7*24*60*60); cookie2.setMaxAge(7*24*60*60); //将cookie放入到浏览器端 res.addCookie(cookie1); res.addCookie(cookie2);
前台页面获取数据
//获取cookie信息
if(cookie1.indexOf(“username=”)!=-1){ //判断浏览器是否存在username和password
var username=null;
var password=null;
//截取
var arr=cookie1.split(";");
//遍历arr
for(var i in arr){
//判断是否存在username
if(arr[i].indexOf(“username”)!=-1){
username=arr[i].substring(arr[i].indexOf("=")+1);
}
//password是否存在
if(arr[i].indexOf(“password”)!=-1){
password=arr[i].substring(arr[i].indexOf("=")+1);
}
}
//数据回显到输入框
$("#password").val(password);
$("#username").val(username);
$("#remember").prop(“checked”,true);
用户注销功能的实现
用户注销的过程其实就是销毁session的过程
文件管理和轮播图的实现
文件管理主要是利用一个freemark的页面静态化技术,以空间换时间,生成一个静态的html文件,可以提高系统的效率。在后台系统添加内容的时候,会自动生成一个可访问的html访问路径。這里就只拿内容的修改来做一个说明:
String path = req.getServletContext().getRealPath("/static/template");
//生成模板
String url = FreemarkerUtil.createFile(path,"article.ftl", article, ".html");
Integer id = Integer.valueOf(""+article.getId());
Article dbArticle = mapper.findByid(id);
//把新生成的url放到article中
article.setUrl(url);
mapper.update(article);
//System.err.println(article);
//删除之前的url
File file = new File(path,dbArticle.getUrl());
if (file.exists()) {
file.delete();
}
轮播图的实现也是同样的道理,只是设计到一个文件的上传,这里要注意在spring_mvc配置文件中配置上传文件解析
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大尺寸为10MB -->
<property name="maxUploadSize">
<!-- spring el写法:10MB -->
<value>#{1024*1024*10}</value>
</property>
<!-- 效果同上 -->
<!-- <property name="maxUploadSize" value="1048576" /> -->
</bean>
请求的form表单中也要加上enctype="multipart/form-data"属性