前湖校园博客系统旨在加强学校教师和学生之间的了解和交流、教师与教师之间的教学经验的分享,学生与学生之间的学习心得的分享,以及更好的展示该学校老师和学生的风采,并且希望通过博客系统的日志积累,形成丰富的教学资源库,真正促进学校的教学工作。
本文首先介绍了个人博客的发展背景与发展现状,然后遵循软件常规开发流程,首先针对系统选取适用的语言和开发平台,根据需求分析制定模块并设计数据库结构,再根据系统总体功能模块的设计绘制系统的功能模块图,流程图以及E-R图。然后,设计框架并根据设计的框架编写代码以实现系统的各个功能模块。最后,对初步完成的系统进行测试,主要是功能测试、单元测试和性能测试。测试结果表明,该系统能够实现所需的功能,运行状况尚可并无明显缺点。
在各学校的教学过程中,个人博客是一项非常重要的事情。随着计算机多媒体技术的发展和网络的普及。采用当前流行的B/S模式以及3层架构的设计思想通过Python技术来开发此系统的目的是建立一个配合网络环境的个人博客的平台,这样可以有效地解决个人博客混乱的局面。
在系统所实现的功能模块中,有效实现了表现与代码分离。每个模块所实现的功能都在相应的层中完成,这样对于代码的维护和升级带来了极大使得。对数据操作采用存储过程来实现。存储过程是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
目录
摘 要 I
Abstract II
第一章 绪论 1
1.1选题的依据及意义 1
1.2国内外研究现状及发展趋势 1
1.3本课题研究内容 2
1.3.1项目概述 2
1.3.2项目功能简介 2
1.3.3性能实现 3
第二章 需求分析 4
2.1项目概述 4
2.1.1项目目标 4
2.1.2业务用例 4
2.2系统功能性需求 7
2.2.1系统功能 7
2.2.2详细功能需求 9
2.3性能需求 11
2.3.1界面要求 11
2.3.2软件质量要求 11
2.4运行环境规定 12
2.4.1服务器设备 12
2.4.2支持软件 12
第三章 系统概要设计 13
3.1总体设计 13
3.1.1设计约束 13
3.1.2体系结构 13
3.1.3系统结构图 14
3.1.4总业务流程图 16
3.2数据库设计 17
3.2.1概念结构设计 17
3.2.2物理结构设计 18
3.3系统出错处理设计 25
3.3.1出错信息 25
3.3.2系统维护设计 25
第四章 系统详细设计 26
4.1程序系统的结构 26
4.2浏览者中心 27
4.3注册用户中心 28
4.4管理员中心 30
第五章 系统实现与测试 33
5.1系统开发环境 33
5.2系统主要功能实现 33
5.2.1构建公共类 33
5.2.2设计用户自定义控件 36
5.2.3系统功能实现 39
5.3系统安全 43
5.4系统测试 43
5.4.1测试目的(和环境) 43
5.4.2测试方法 43
5.4.3测试结果 44
第六章结论 46
参考文献 47
/**
* 登录相关
*/
@RequestMapping("users")
@RestController
public class UserController{
@Autowired
private UserService userService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
userService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list( UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", userService.selectListView(ew));
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 保存
*/
@PostMapping("/save")
public R save(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
userService.updateById(user);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}