基于SpringBoot的博客系统设计与实现_第1页
基于SpringBoot的博客系统设计与实现_第2页
基于SpringBoot的博客系统设计与实现_第3页
基于SpringBoot的博客系统设计与实现_第4页
基于SpringBoot的博客系统设计与实现_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于 SpringBoot 的博客系统设计与实现摘 框: I目 录摘要 IAbstractI目录 1 绪论 11.1 研究的背景 11.2 研究目的 11.3 主要研究的内容 11.3.1 系统框架设计 11.3.2 系统功能设计 11.4 论文整体结构 22 开发环境介绍 32.1 开发环境介绍 32.1.1 Eclipse 简介32.1.2 数据库简介 32.2 运行环境介绍 33 需求分析 43.1 可行性分析 43.2 Windows43.3 Java 44 系统设计 54.1 系统目标 54.2 数据库设计 55 系统实现 75.1 登录页面 75.2 注册页面 75.3 网站前端浏

2、览和发表功能 75.4 网站后台实现数据处理功能 86 总结 9参考文献 10附录 11附录 :登录后台验证代码11附录 :获取验证码和注册代码11附录 C:博文页面和分页查询文章代码15附录 :文章页面和将发表的文章存入数据库代码21附录 E:修改密码代码23附录 :增加评论代码 23II1 绪论1.1 研究的背景SpringBoot是全新框架,其设计目的是用来简化Spring应用的初始搭建环境以及开发过程 。该框架使用了特定的方式来进行配置,从而使开发人员不再需1要麻烦的配置 。通过这种方式,SpringBoot 致力于在蓬勃发展的快速应用开发2领域成为领导者。SpringBoot 的优点

3、:1.创建独立的 Spring 应用程序 2.嵌入的 WAR文件 3.简化 Maven配置 4.自动配置 Spring5. 绝对没有代码生成和对 XML没有要求配置 。31.2 研究目的实现一个基于 SpringBoot 的博客系统。1.3 主要研究的内容1.3.1 系统框架设计在 Windows 操作系统下,使用 Tomcat服务器,MySQL 数据库和 Java 去设计一个基于网页的博客系统,主要分为登录注册功能,网站前端浏览和发表功能4。1.3.2 系统功能设计登录注册功能登录:注册的用户可以通过登录手机号和密码登录到页面。注册:没有注册的用户注册手机号和密码。网站前端浏览和发表功能浏览

4、:查看发表的文章和相册。发表:发表文章和相册,评论网站后台实现数据处理功能用户管理模块:实现用户的信息及密码修改。博文和相册管理模块:实现博文和相册增、删、改。评论模块管理:实现增加和删除功能。第1页(共 26 页)1.4 论文整体结构第一章:介绍博客系统的研究内容以及意义第二章:系统开发的运行环境和开发工具第三章:系统的总体设计需求分析和系统目标及实现功能第四章:数据库的设计,实现方法和思路第五章:各个模块的功能及实现第六章:总结第2页(共 26 页)2 开发环境介绍2.1 开发环境介绍2.1.1 Eclipse 简介Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其

5、本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是Eclipse附带了一个标准的插件集,包括 Java 开发工具。2.1.2 数据库简介MySQL 是一种开放源代码的关系型数据库管理系统,使用最常用的数据库管理语言-结构化查询语句()进行数据库管理 。MySQL 因为其速度、可5靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择 。62.2 运行环境介绍操作系统:Windows操作系统数据库:MySQL开发环境:Eclipse第3页(共 26 页)3 需求分析3.1 可行性分析可行性研究是指从经济、技术及理论等进行研究。分析

6、项目的可行度,进行合理的调查,从而制定合理的实施方案,保证项目的规范性和成功率。在对本系统上来说,就是研究该系统需要何种功能,需要什么技术,如何着手实施,同时对开发的时间、成本、工作量等等的问题。本设计主要选择 Windows 操作系统、Eclipse 开发工具、MySQL数据库来完成系统 。73.2 WindowsWindows系统是以消费者为中心的操作系统,在对于博客系统来说主要面向于客户,而 Windows系统是大多数人首选的,所以会选择 Windows 操作系统。3.3 JavaJava 是一种面向对象编程语言,不仅吸收了语言的各种优点,还摒弃了里难以理解的多继承、指针等概念,因此Ja

7、va 语言具有功能强大和简单易用两个特征 Java 语言作为静态面向对象编程语言的代表,极好地实现了面向对8象理论,允许程序员以优雅的思维方式进行复杂的编程。第4页(共 26 页)4.1 系统目标该系统主要用于网页,主要目标让使用者能够自由的发表博文和查看别人发表的博文,本系统可以让使用者能够快速的了解周边人们关注和感兴趣的事,几个人可以通过评论的方式谈谈自己的见解,这样还可以达到交友目的。4.2 数据库设计user_id int(10) NOT NULL AUTO_INCREMENT,user_name varchar(20) NOT NULL,KEY user_name (user_nam

8、e) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;文章:KEY article_username (article_username),CONSTRAINT tbl_article_ibfk_1 FOREIGN KEY (article_username)REFERENCES tbl_user (user_name)第5页(共 26 页)) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;评论表:words_content varchar(255) NOT NULL,KEY ar

9、ticle_username (article_username),CONSTRAINT tbl_words_ibfk_1 FOREIGN KEY (article_username)REFERENCES tbl_article (article_username) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;第6页(共 26 页)5.1 登录页面:手机号不正确,密码不正确,不能登录。只有当手机号、密码都正确无误的前提先才能登录。通过页面的两个输入框输入手机号和密码,点击登录后会将两条数据通过表单提交的方式提交到控制层,控制层获得这两

10、条数据就会回和数据库中的数据比较,如果在数据库中不能找到,就会将“登录失败,用户名或密码错误”返回到登录页面,重新登录,如果能够找到,就会把数据库中的文章数据查询出来,返回到博文页面 。代码见“附录95.2 注册页面没有注册的用户通过点击注册跳转到注册页面进行注册,通过手机号注册,如果该手机号被注册过就不能注册成功,注册成功就会跳转到登录页面 。10在注册页面,第一行是输入手机号码,当光标离开此输入框的时候会触发一个请求,将此手机号码提交到控制层,控制层获得此号码之后会向它发送一条短信验证码,控制层获得此验证码并返回到页面,第二个输入框是密码,第三个输入框就是输入手机获取的短信验证码,如果输入

11、的验证码与短信验证码不相同,和密码提交到控制层,控制层会通过手机号码在数据库中查询,如果能查询到数数据,就将该数据存到数据库中,然后返回到登录页面。代码见“附录 5.3 网站前端浏览和发表功能浏览:查看发表的文章和相册。该页面主要实现的是查看当前用户发表的文章。代码见“附录 发表:发表文章和相册,评论。第7页(共 26 页)该功能主要是发表文章和对文章的评论,代码见“附录 5.4 网站后台实现数据处理功能用户管理模块:实现用户的信息及密码修改。该页面主要实现了密码修改。代码见“附录 评论模块管理:实现增加和删除功能。该功能主要实现讲评论存入数据库中。代码见“附录 第8页(共 26 页)6 总结

12、系统主要使用的是 SpringBoot 框架,SpringBoot 框架减少了很多的很多的配置文件,使用的时候很方便,只需要添加响应 jar 包的 maven 配置。SpringBoot还有一个模板技术,使用也比较方便,但是在此次项目中没有运用到,主要是因 jsp 由于对 SpringBoot 不是太熟悉的关系,网站的一些功能还有待优化和完善,以后我会继续学习 SpringBoot 框架,因为SpringBoot 运用的也是比较多的,对以后编程也会有很大的帮助。第9页(共 26 页)参考文献 4 和 .基于 . S y 的第10页(共 26 页)附 录附录 A:登录后台验证代码RequestM

13、apping(/login)public String login(String username,String password,ModelMap modelMap) User user = userMapper.select(username,password);if(user =null) modelMap.put(massage, 登录失败,用户名或密码错误);returnlogin;elsemodelMap.put(username,username);Article article = articleMapper.selectArticle(1);modelMap.put(arti

14、cle, article);List wordes = wordsMapper.selectWords(article.getUsername();int endPage = articleMapper.selectCount();int firstResult = 1;modelMap.put(firstResult, firstResult);modelMap.put(wordes, wordes);modelMap.put(endPage, endPage);returnblog;附录 B:获取验证码和注册代码短信验证:提交手机号码和注册信息:$(#username).blur(func

15、tion()第页(共 26 页)$.ajax(type:post,async:true,dataType:json,url:phone,data:phone:$(#username).val(),success:function(code)$(#register).click(function()if($(#code).val() != code)alert(验证码不正确);returnfalse;else$(form).submit(););););获取验证码:RequestMapping(/phone)public String phone(HttpServletRequest req)

16、throwsException DefaultHttpClient httpClient = new DefaultHttpClient();HttpPost httpPost = new HttpPost(SERVER_URL );第12页(共 26 页)String curTime = valueOfnew Date().getTime() / 1000L);String checkSum = getCheckSum(APP_SECRET,NONCE, curTime);httpPost.addHeader(AppKey, APP_KEY);httpPost.addHeader(Nonce

17、, NONCE);httpPost.addHeader(CurTime, curTime);httpPost.addHeader(CheckSum, checkSum);httpPost.addHeader(Content-Type,application/xformurlencoded;charset=utf8);List nvps =new ArrayList();nvps.add(new BasicNameValuePair(templateid,);nvps.add(newBasicNameValuePair(mobile,req.getParameter(phone);nvps.ad

18、d(new BasicNameValuePair(codeLen,CODELEN);httpPost.setEntity(new UrlEncodedFormEntity(nvps, utf8);HttpResponse response = httpClient.execute(httpPost);String strss = EntityUtils.toString(response.getEntity(), utf8);String encode=strss.substring(strss.length()8, strss.length()2);System.out.println(en

19、code);returnencode;CheckSumBuilder.javapackage com.example.blog.controller;importjava.security.MessageDigest;public class CheckSumBuilder public static String getCheckSum(String appSecret, String nonce,第13页(共 26 页)String curTime) returnencode(sha1, appSecret + nonce + curTime);public staticString ge

20、tMD5(String requestBody) returnencode(md5, requestBody);privatestaticString encode(String algorithm, String value) if (value =null) returnnull;tryMessageDigest messageDigest= MessageDigest.getInstance(algorithm);messageDigest.update(value.getBytes();return(messageDigest.digest(); catch(Exception e)

21、thrownew RuntimeException(e);privatestaticString byte bytes) int len = bytes.length;StringBuilder buf = new StringBuilder(len * 2);for (int j = 0; j 4) & 0 x0f);buf.append(HEX_DIGITSbytesj & 0 x0f);第14页(共 26 页)returnbuf.toString();private static final char HEX_DIGITS = 0, 1, 2, 3, 4, 5,6, 7, 8,9, a,

22、 b, c, d, e, f ;注册用户:RequestMapping(/register)public String register(String username,String password,ModelMap map) User user2 = userMapper.selectUsername(username);if(user2 =null) User user =new User();user.setUsername(username);user.setPassword(password);userMapper.insert(user);map.put(massage, 注册成

23、功);returnlogin;elseif(username.equals() | password.equals() map.put(massage, 用户名或密码不能为空);returnregist;elsemap.put(massage, 该用户已存在);returnregist;附录 C:博文页面和分页查询文章代码第15页(共 26 页)博文页面:登录人:$usernamea index退出$article.title作者$article.username第16页(共 26 页)$article.content评论$word.wordsUsername $word.time :$wor

24、d.content添加评论label message你的评论第17页(共 26 页)a /turn?page=$1&username=$username首页= flag上一页上一页c:if $firstResult+1 a /turn?page=$firstResult+1$username下一页下一页a /turn?page=$endPage$username尾页$firstResult/$endPage页第18页(共 26 页)h2 star个人信息 博 文 发 表 博 文 修 改 密 码查询文章和评论:Controller:modelMap.put(username,username);

25、Article article = articleMapper.selectArticle(1);modelMap.put(article, article);第19页(共 26 页)List wordes = wordsMapper.selectWords(article.getUsername();int endPage = articleMapper.selectCount();int firstResult = 1;modelMap.put(firstResult, firstResult);modelMap.put(wordes, wordes);modelMap.put(endPa

26、ge, endPage);:select * from tbl_article order by article_id desc limit #page,1select * from tbl_article where article_username = #usernameselect count(*) from tbl_article第20页(共 26 页)附录 D:文章页面和将发表的文章存入数据库代码发表文章页面:div col-md-1作者:$usernamediv col-md-1主题:div col-md-1内容第21页(共 26 页)添加文章到数据库:Controller:Req

27、uestMapping(/report)public String report(Article article,ModelMap modelMap) articleMapper.insert(article);modelMap.put(username,article.getUsername();Article article2 = articleMapper.selectArticle(1);modelMap.put(article, article2);List words = wordsMapper.selectWords(article2.getUsername();modelMap.put(words, words);returnblog;:第22页(共 26 页)insertintotbl_article(article_title,article_content,article_username)VALUES(#title,#content,#username)附录 E:修改密码代码Controller:RequestMappin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论