基于java+ssm+vue的个人博客网站

项目介绍

互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对文章和相册分享信息管理混乱,出错率高,信息安全性差,劳动强度大,费时费力等问题,采用个人博客网站可以有效管理,使信息管理能够更加科学和规范。

个人博客网站在idea环境中,使用Java语言进行编码,使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务,其管理员审核博客文章和相册分享信息,管理文章和相册的分类,用户资料以及留言。用户评论和查看博客文章和相册分享信息,使用留言反馈功能与管理员交流,用户进入用户后台发布博客文章和相册分享信息。

总之,个人博客网站集中管理信息,有着保密性强,效率高,存储空间大,成本低等诸多优点。它可以降低信息管理成本,实现信息管理计算机化。

第4章 系统设计
一个成功设计的系统在内容上必定是丰富的,在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值,吸引更多的访问者访问系统,以及让来访用户可以花费更多时间停留在系统上,则表明该系统设计得比较专业。

4.1 设计原则
本系统在设计过程中需要依照一定的设计原则进行,目的就是为了让开发的系统具备高质量,齐全完备的功能,方便简单的操作,如此才可以最大限度的满足使用者的要求。系统设计原则除了基本的易操作原则外,还有安全性原则,准确性原则。

第一个设计原则:易操作原则,针对本系统设计的功能要完备齐全,编码时,设计的各个接口要具备友好性,使用者一旦使用本系统时,要能够轻松上手,操作本系统处理数据时,要具备便利性。此外,也需要设计一些必要提示,引导使用者操作系统。

第二个设计原则:安全性原则,本系统在登录模块要对各个访问者进行身份验证,系统会通过访问者输入的信息进行判断,使用提前编写的安全验证代码进行数据比对,引导匹配成功的访问者进入指定的操作界面。这样可以避免无关性访问者窃取系统的数据。

第三个设计原则:准确性原则,为了保证使用者登记的数据是正确的,需要提前设计数据纠错机制,让使用者可以通过系统的报错提示,仔细检查登记的错误信息,并及时纠正错误,填写规范正确的信息。比如设置密码时,要求密码的长度不能低于6个字符,且数据类型要求不能全部是数字等都能进行规范。

4.2 功能结构设计
在前面分析的管理员功能的基础上,进行接下来的设计工作,最终展示设计的管理员结构图(见下图)。管理员审核博客文章和相册分享信息,管理文章和相册的分类,用户资料以及留言。
在这里插入图片描述
在前面分析的用户功能的基础上,进行接下来的设计工作,最终展示设计的用户结构图(见下图)。用户评论和查看博客文章和相册分享信息,使用留言反馈功能与管理员交流,用户进入用户后台发布博客文章和相册分享信息。
在这里插入图片描述

开发环境

编程语言:Java
数据库 :Mysql
系统架构:B/S
后端框架:SSM
编译工具:idea或者eclipse,jdk1.8,maven
支持定做:java/php/python/android/小程序ue/爬虫/c#/asp.net

系统截图

第5章 系统实现
进入到这个环节,也就可以及时检查出前面设计的需求是否可靠了。一个设计良好的方案在运用于系统实现中,是会帮助系统编制人员节省时间,并提升开发效率的。所以在系统的编程阶段,也就是系统实现阶段,对于一些不合理的设计需求,也是可以及时发现。因为设计的方案是完全指导系统的编码过程的。
5.1 管理员功能实现
5.1.1 文章分类管理
管理员进入指定功能操作区之后可以管理文章分类。其页面见下图。管理员新增文章分类,查询文章分类,及时修改或删除有异常的文章分类信息。
在这里插入图片描述

5.1.2 博客文章管理
管理员进入指定功能操作区之后可以管理博客文章。其页面见下图。管理员审核博客文章,通过审核之后的博客文章会在前台展示,查看用户对博客文章的评论。
在这里插入图片描述

5.1.3 相册分享管理
管理员进入指定功能操作区之后可以管理用户分享的相册信息。其页面见下图。管理员审核相册信息,点击每行的查看评论链接可以查看对应相册的评论。
在这里插入图片描述

5.1.4 留言板管理
管理员进入指定功能操作区之后可以管理留言。其页面见下图。留言功能的设置主要是在管理员与用户之间建立信息交流的渠道。
在这里插入图片描述

5.1.5 相册分类管理
管理员进入指定功能操作区之后可以管理相册分类。其页面见下图。管理员设置相册的分类,维护相册分类信息,包括修改,查询,删除。
在这里插入图片描述

5.2 用户功能实现
5.2.1 博客文章
用户进入指定功能操作区之后可以查看博客文章。其页面见下图。用户查看博客文章内容,评论当前页面的博客文章。
在这里插入图片描述

5.2.2 相册分享
用户进入指定功能操作区之后可以查看相册分享信息。其页面见下图。用户评论本页面的相册,查看相册的内容。
在这里插入图片描述

5.2.3 留言反馈
用户进入指定功能操作区之后可以提交留言。其页面见下图。当用户提交了留言信息之后,只需要等待管理员的回复信息。
在这里插入图片描述

部分代码

package com.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;

import com.utils.ValidatorUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.annotation.IgnoreAuth;

import com.entity.WenzhangfenleiEntity;
import com.entity.view.WenzhangfenleiView;

import com.service.WenzhangfenleiService;
import com.service.TokenService;
import com.utils.PageUtils;
import com.utils.R;
import com.utils.MD5Util;
import com.utils.MPUtil;
import com.utils.CommonUtil;


/**
 * 文章分类
 * 后端接口
 */
@RestController
@RequestMapping("/wenzhangfenlei")
public class WenzhangfenleiController {
    @Autowired
    private WenzhangfenleiService wenzhangfenleiService;
    


    /**
     * 后端列表
     */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params,WenzhangfenleiEntity wenzhangfenlei, 
		HttpServletRequest request){

        EntityWrapper<WenzhangfenleiEntity> ew = new EntityWrapper<WenzhangfenleiEntity>();
		PageUtils page = wenzhangfenleiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wenzhangfenlei), params), params));
        return R.ok().put("data", page);
    }
    
    /**
     * 前端列表
     */
    @RequestMapping("st")
    public R list(@RequestParam Map<String, Object> params,WenzhangfenleiEntity wenzhangfenlei, 
		HttpServletRequest request){
        EntityWrapper<WenzhangfenleiEntity> ew = new EntityWrapper<WenzhangfenleiEntity>();
		PageUtils page = wenzhangfenleiService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, wenzhangfenlei), params), params));
        return R.ok().put("data", page);
    }

	/**
     * 列表
     */
    @RequestMapping("sts")
    public R list( WenzhangfenleiEntity wenzhangfenlei){
       	EntityWrapper<WenzhangfenleiEntity> ew = new EntityWrapper<WenzhangfenleiEntity>();
      	ew.allEq(MPUtil.allEQMapPre( wenzhangfenlei, "wenzhangfenlei")); 
        return R.ok().put("data", wenzhangfenleiService.selectListView(ew));
    }

	 /**
     * 查询
     */
    @RequestMapping("/query")
    public R query(WenzhangfenleiEntity wenzhangfenlei){
        EntityWrapper< WenzhangfenleiEntity> ew = new EntityWrapper< WenzhangfenleiEntity>();
 		ew.allEq(MPUtil.allEQMapPre( wenzhangfenlei, "wenzhangfenlei")); 
		WenzhangfenleiView wenzhangfenleiView =  wenzhangfenleiService.selectView(ew);
		return R.ok("查询文章分类成功").put("data", wenzhangfenleiView);
    }
	
    /**
     * 后端详情
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        WenzhangfenleiEntity wenzhangfenlei = wenzhangfenleiService.selectById(id);
        return R.ok().put("data", wenzhangfenlei);
    }

    /**
     * 前端详情
     */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id){
        WenzhangfenleiEntity wenzhangfenlei = wenzhangfenleiService.selectById(id);
        return R.ok().put("data", wenzhangfenlei);
    }
    



    /**
     * 后端保存
     */
    @RequestMapping("ve")
    public R save(@RequestBody WenzhangfenleiEntity wenzhangfenlei, HttpServletRequest request){
    	wenzhangfenlei.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(wenzhangfenlei);

        wenzhangfenleiService.insert(wenzhangfenlei);
        return R.ok();
    }
    
    /**
     * 前端保存
     */
    @RequestMapping("/add")
    public R add(@RequestBody WenzhangfenleiEntity wenzhangfenlei, HttpServletRequest request){
    	wenzhangfenlei.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());
    	//ValidatorUtils.validateEntity(wenzhangfenlei);

        wenzhangfenleiService.insert(wenzhangfenlei);
        return R.ok();
    }

    /**
     * 修改
     */
    @RequestMapping("/update")
    public R update(@RequestBody WenzhangfenleiEntity wenzhangfenlei, HttpServletRequest request){
        //ValidatorUtils.validateEntity(wenzhangfenlei);
        wenzhangfenleiService.updateById(wenzhangfenlei);//全部更新
        return R.ok();
    }
    

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        wenzhangfenleiService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
    
    /**
     * 提醒接口
     */
	@RequestMapping("/remind/{columnName}/{type}")
	public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, 
						 @PathVariable("type") String type,@RequestParam Map<String, Object> map) {
		map.put("column", columnName);
		map.put("type", type);
		
		if(type.equals("2")) {
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			Calendar c = Calendar.getInstance();
			Date remindStartDate = null;
			Date remindEndDate = null;
			if(map.get("remindstart")!=null) {
				Integer remindStart = Integer.parseInt(map.get("remindstart").toString());
				c.setTime(new Date()); 
				c.add(Calendar.DAY_OF_MONTH,remindStart);
				remindStartDate = c.getTime();
				map.put("remindstart", sdf.format(remindStartDate));
			}
			if(map.get("remindend")!=null) {
				Integer remindEnd = Integer.parseInt(map.get("remindend").toString());
				c.setTime(new Date());
				c.add(Calendar.DAY_OF_MONTH,remindEnd);
				remindEndDate = c.getTime();
				map.put("remindend", sdf.format(remindEndDate));
			}
		}
		
		Wrapper<WenzhangfenleiEntity> wrapper = new EntityWrapper<WenzhangfenleiEntity>();
		if(map.get("remindstart")!=null) {
			wrapper.ge(columnName, map.get("remindstart"));
		}
		if(map.get("remindend")!=null) {
			wrapper.le(columnName, map.get("remindend"));
		}


		int count = wenzhangfenleiService.selectCount(wrapper);
		return R.ok().put("count", count);
	}
	


}

论文参考

在这里插入图片描述

目 录
第1章 绪论 1
1.1 课题背景 1
1.2 课题意义 1
1.3 研究内容 2
第2章 开发环境与技术 3
2.1 MYSQL数据库 3
2.2 JSP技术 3
2.3 SSM框架 4
第3章 系统分析 5
3.1 可行性分析 5
3.1.1 技术可行性 5
3.1.2 经济可行性 5
3.1.3 操作可行性 5
3.2 系统流程 6
3.2.1 操作流程 6
3.2.2 登录流程 6
3.2.3 删除信息流程 7
3.2.4 添加信息流程 8
3.3 性能需求 8
3.4 功能需求 9
第4章 系统设计 12
4.1 设计原则 12
4.2 功能结构设计 12
4.3 数据库设计 13
4.3.1 数据库概念设计 14
4.3.2 数据库物理设计 16
第5章 系统实现 20
5.1 管理员功能实现 20
5.1.1 文章分类管理 20
5.1.2 博客文章管理 20
5.1.3 相册分享管理 21
5.1.4 留言板管理 21
5.1.5 相册分类管理 22
5.2 用户功能实现 22
5.2.1 博客文章 22
5.2.2 相册分享 23
5.2.3 留言反馈 23
第6章 系统测试 25
6.1 功能测试 25
6.1.1 登录功能测试 25
6.1.2 修改密码功能测试 26
6.2 测试结果 26
结 论 27
致 谢 28
参考文献 29

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_3306428634

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值