当前位置: 首页 > news >正文

汕头seo建站wordpress开发公司

汕头seo建站,wordpress开发公司,爱站网长尾挖掘工具,网站备案多少岁博客系统 (三#xff09; 博客系统博客主页前端后端个人博客前端后端显示个人文章删除文章 修改文章前端后端提取文章修改文章 显示正文内容前端后端文章阅读量功能 添加文章前端后端 如何使用Redis项目地点#xff1a; 博客系统 博客系统是干什么的#xff1f; CSDN就是一… 博客系统 (三 博客系统博客主页前端后端个人博客前端后端显示个人文章删除文章 修改文章前端后端提取文章修改文章 显示正文内容前端后端文章阅读量功能 添加文章前端后端 如何使用Redis项目地点 博客系统 博客系统是干什么的 CSDN就是一个典型的博客系统。而我在这里就是通过模拟实现一个博客系统这是一个较为简单的博客系统但是主要功能一个不缺不过就是 UI 有些 low我学习前端是为了写后端更加顺手。不至于前后端完全分离但是有个问题设计的 web 页面不是很好看。 首先我将整体的业务流程展现 我们继博客系统二继续编写到了主页的业务逻辑了 接下来的流程是通过网页端后端统一数据结构交互的数据结构。 博客主页 前端 !DOCTYPE html html langenheadmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0title博客列表/titlelink relstylesheet hrefcss/list.csslink relstylesheet hrefcss/blog_list.csslink relstylesheet hrefcss/conmmon.css/linscript srcjs/jquery.min.js/scriptstyle.nav{position: fixed;top: 0;left: 0;right: 0;height: 50px;}.container{padding-top: 80px;height: auto;}.container-right{width: auto;}.blog-pagnation-wrapper{height: 40px;margin: 16px 0;text-align: center;}.blog-pagnation-item{display: inline-block;padding: 8px;border: 1px solid #d0d0d5;color: #333;}.blog-pagnation-item:hover{background: #4e4eeb;color: #fff;}.blog-pagnation-item.actvie{background: #4e4eeb;color: #fff;}/stylescript srcjs/urluitils.js/script /headbody!-- 导航栏 --div classnavimg srcimg/sleep.jpg altspan classtitle我的博客系统/span!-- 用来占据中间位置 --span classspacer/spana hrefblog_list.html主页/aa hrefblog_add.html写博客/aa hrefmyblog_list.html我的博客/aa hrefjavascript:logout()注销/a/div!-- 版心 --div classcontainer!-- 右侧内容详情 --div classcontainer-right stylewidth: 100%;div idartListDiv!-- 每一篇博客包含标题, 摘要, 时间 --/divdiv classblog-pagnation-wrapperbutton classblog-pagnation-item onclickdoFirst()首页/button button classblog-pagnation-item onclickdoBefore()上一页/button button classblog-pagnation-item onclickdoNext()下一页/buttonbutton classblog-pagnation-item onclickdoLast()末页/buttonnbsp; nbsp; nbsp; nbsp;当前在第span idpindex/span页共:span idpsize/span页/div/div/divscriptvar psize2;var pindex1;var totalpage1;//总页//初始化数据function init(){//得到url中的分页参数psizegetParamValue(psize);if(psizenull){psize2;}pindexgetParamValue(pindex);if(pindexnull){pindex1;}jQuery(#pindex).html(pindex);//请求后端接口jQuery.ajax({url:/article/getlistbypage,type:get,data:{pindex:pindex,psize:psize},success:function(res){if(res.code200res.data!null){var createHtml;if(res.data.list!nullres.data.list.length0){//文章totalpage res.data.list.szie;jQuery(#psize).html(totalpage);var artListres.data.list;for(var i0;iartList.length;i){var artartList[i];createHtmldiv classblog;createHtmldiv classtitleart.title/div;createHtmldiv classdateart.createtime/div;createHtmldiv classdescart.content/div;createHtml a hrefblog_content.html?aidart.id classdetail查看全文 gt;gt;/a;createHtml/div;}}else{createHtmlh3 stylemargin-top:20px;margin-left:20px暂无文章/h3;}jQuery(#artListDiv).html(createHtml);}else{alert(抱歉查询失败res.msg);}}});}init();function doFirst(){//判断是否在首页if(pindex1){alert(已经在首页了不需跳转);return false;}location.hrefblog_list.html;}function doLast(){if(pindextotalpage){alert(已经在末页了不需跳转);return false;}location.hrefblog_list.html?pindex(parseInt(totalpage));}function doBefore(){if(pindex1){alert(已经在首页了不需跳转);return false;}location.hrefblog_list.html?pindex(parseInt(pindex-1));}function doNext(){if(pindextotalpage){alert(已经在末页了不需跳转);return false;}location.hrefblog_list.html?pindex(parseInt(pindex1));}/script /body /html后端 首先在主页中需要注意的是我在这里添加了分页功能如何解决分页问题诺是将整个数据库里的文章全部读取到内存里对于内存的消耗极大所以这里我用sql语言中的 limt 语言进行分页读取不知道的可以看我Mysql的文章 通过mapper接口调用数据库 Mapper public interface ArticleMapper {Select(select * from articleinfo order by id desc limit #{psize} offset #{offset})ListArticleinfo getListByPage(Param(pszie) int pszie,Param(offset) int offset); }通过service层调用mapper接口 Service public class ArticleService {Autowiredprivate ArticleMapper articleMapper;public ListArticleinfo getListByPage (int psize,int offset){return articleMapper.getListByPage(psize, offset);} }通过Controller层调用service层方法 RestController RequestMapping(/article) public class ArticleController {Autowiredprivate ArticleService articleService;Resourceprivate ThreadPoolTaskExecutor taskExecutor;public ResultAjax getListByPage(Integer pindex,Integer psize) throws ExecutionException, InterruptedException {if (pindexnull||pindex1){pindex1;}if (psizenull||psize1){psize1;}Integer finalPsizepsize;int offsetpsize*(pindex-1);FutureTaskListArticleinfo listFutureTasknew FutureTask(()-{return articleService.getListByPage(finalPsize,offset);});taskExecutor.submit(listFutureTask);FutureTaskInteger sizeTasknew FutureTask(()-{int count articleService.getCount(); double sizeTemp((count*1.0)/(finalPsize*1.0));return (int)Math.ceil(sizeTemp);});taskExecutor.submit(sizeTask);ListArticleinfo articleinfoslistFutureTask.get();int sizesizeTask.get();HashMapString ,Object mapnew HashMap();map.put(list,articleinfos);map.put(szie,size);return ResultAjax.success(map);} }解释 我在页面中每页所展示两个文章。而 limit finalPsize offset offset 我定位为 finalPsize 为第 几 行offset 显示几个数据具体原则在我的myslq 文章中有体现LIMIT [位置偏移量,] 行数使用多线程可以避开有读者写数据有读者读数据的情况。并且可以以最快速度反应的客户端这个线程池Spring提供的线程池可以不需要去设置参数。第一个线程池用来查找页面每页的内容第二个线程池用来查找文章的总数。 个人博客 前端 !DOCTYPE html html langenheadmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0title博客列表/titlelink relstylesheet hrefcss/conmmon.csslink relstylesheet hrefcss/blog_list.cssscript srcjs/jquery.min.js/scriptscript srcjs/logout.js/script /headbody!-- 导航栏 --div classnavimg srcimg/sleep.jpg altspan classtitle我的博客系统/span!-- 用来占据中间位置 --span classspacer/spana hrefblog_list.html主页/aa hrefblog_add.html写博客/aa hrefmyblog_list.html我的博客/aa hrefjavascript:logout()注销/a/div!-- 版心 --div classcontainer!-- 左侧个人信息 --div classcontainer-leftdiv classcardimg srcimg/sleep.jpg classavtar alth3 idusername/h3a hrefhttp:www.github.comgithub 地址/adiv classcounterspan文章/span/divdiv classcounterspan idartcount/span/div/div/div!-- 右侧内容详情 --div idartListDiv classcontainer-right /div/divscriptfunction init(){jQuery.ajax({url:/article/mylist,type:get,data:{},success:function(res){if(res.code200){var creatHtml;var arrListres.data.artList;if(res.code200res.data!null){var userres.data.user;var sizeres.data.size;var artres.data.artList;if(user!null){if(user.photo!){jQuery(#photo).att(src,user.photo);}jQuery(#username).html(user.username);jQuery(#artcount).html(size);}else{alert(抱歉查询失败res.msg);}}if(arrList!nullarrList.length0){ for( var i0;iarrList.length;i){var art arrList[i];creatHtmldiv classblog;creatHtmldiv classtitleart.title/div;creatHtmldiv classdateart.createtime/div;creatHtmldiv classdesc art.content /div;creatHtml a hrefblog_content.html?aidart.id classdetail查看全文 gt;gt;/anbsp;nbsp;;creatHtmla hrefblog_edit.html?aidart.id classdetail修改 gt;gt;/anbsp;nbsp;;creatHtmla οnclickdel(art.id) classdetail删除 gt;gt;/a;creatHtml /div;}}else{creatHtmlh3 stylemargin-top:20px;margin-left:20px暂无文章请先添加a hrefblog_add.html添加/a /h3;}jQuery(#artListDiv).html(creatHtml);}else{alert(抱歉操作失败res.msg);}}});}init();function del(aid){//1.参数校验if(aid||aid0){alert(参数错误);return false;}jQuery.ajax({url:/art/del,type:post,data:{aid:aid},success:function(res){if(res.code200 res.data1){alert(恭喜删除成功);location.hreflocation.href;}else{alert(删除失败res.msg);}}});}/script /body/html后端 显示个人文章 调用mapper层控制数据库 Mapper public interface ArticleMapper {Select(select * from articleinfo where uid#{uid})ListArticleinfo getUidByArticle(Param(uid) int uid); }调用service层调用mapper接口 Service public class ArticleService {Autowiredprivate ArticleMapper articleMapper;public ListArticleinfo getUidByArticle(int uid){return articleMapper.getUidByArticle(uid);} }调用Controller 层调用service层 RestController RequestMapping(/article) public class ArticleController {Autowiredprivate ArticleService articleService;Resourceprivate ThreadPoolTaskExecutor taskExecutor;Resourceprivate UserinfoVO userinfoVO;RequestMapping(/mylist)public ResultAjax getUidByArticle(HttpServletRequest request){Userinfo userinfo SessionUtis.getUser(request);if (userinfonull){return ResultAjax.fail(-1,请先登录);}ListArticleinfo list articleService.getUidByArticle(userinfo.getUid());int sizearticleService.getArtCountById(userinfo.getUid());if (list!nulllist.size()0){list.stream().forEach(articleinfo - {if (articleinfo.getContent().length()120){articleinfo.setContent(articleinfo.getContent().substring(0,120));}});}HashMapString ,Object mapnew HashMap();map.put(artList,list);map.put(user,userinfo);map.put(size,size);return ResultAjax.success(map);} }删除文章 调用mapper层控制数据库 Mapper public interface ArticleMapper {Delete(delete from articleinfo where aid#{aid} and uid#{uid})int delArt(Param(aid)int aid,Param(uid) int uid); }调用service层调用mapper接口 Service public class ArticleService {Autowiredprivate ArticleMapper articleMapper;}Controller层调用service 这个代码太多了我只展示主要代码 RestController RequestMapping(/article) public class ArticleController {Autowiredprivate ArticleService articleService;Resourceprivate ThreadPoolTaskExecutor taskExecutor;RequestMapping(/del)public ResultAjax delArt(Integer aid,HttpServletRequest request){if (aidnull||aid0){return ResultAjax.fail(-1,请先登录);}Userinfo userinfoSessionUtis.getUser(request);int result articleService.delArt(aid,userinfo.getUid());return ResultAjax.success(result);}}修改文章 前端 !DOCTYPE html html langenheadmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0title博客编辑/title!-- 引入自己写的样式 --link relstylesheet hrefcss/conmmon.csslink relstylesheet hrefcss/blog_edit.css!-- 引入 editor.md 的依赖 --link relstylesheet hrefeditor.md/css/editormd.min.css /script srcjs/jquery.min.js/scriptscript srcjs/urluitils.js/scriptscript srceditor.md/editormd.js/script /headbody!-- 导航栏 --div classnavimg srcimg/sleep.jpg altspan classtitle我的博客系统/span!-- 用来占据中间位置 --span classspacer/spana hrefblog_list.html主页/aa hrefjavascript:logout()注销/a/div!-- 编辑框容器 --div classblog-edit-container!-- 标题编辑区 --div classtitleinput typetext placeholder在这里写下文章标题 idtitlebutton onclickdoUpdate()修改文章/button/div!-- 创建编辑器标签 --div ideditorDivtextarea ideditor-markdown styledisplay:none;/textarea/div/divscriptvar editor;var aidgetParamValue(aid);function initEdit(md){// 编辑器设置editor editormd(editorDiv, {// 这里的尺寸必须在这里设置. 设置样式会被 editormd 自动覆盖掉. width: 100%,// 高度 100% 意思是和父元素一样高. 要在父元素的基础上去掉标题编辑区的高度height: calc(100% - 50px),// 编辑器中的初始内容markdown: md,// 指定 editor.md 依赖的插件路径path: editor.md/lib/,saveHTMLToTextarea: true // });}initEdit(# 在这里写下一篇博客); // 初始化编译器的值// 提交function doUpdate(){var titlejQuery(#title);if(title.val()){alert(输入标题);title.focus();return false;}if(editor.getValue()){alert(请先输入正文);return false;}jQuery.ajax({url:/article/update,type:post,data:{aid:aid,title:title.val(),content:editor.getValue()},success:function(res){if(res.code200res.data1){alert(恭喜修改成功);location.hrefmyblog_list.html;}else if(res.code-2){alert(未登录)location.hreflogin.html;}else{alert(抱歉修改失败res.msg);}}});}//初始化页面function init(){//校验aidif(aidnull||aid0){alert(非法参数);return false;}//查询文章详情jQuery.ajax({url:/article/update_init,type:get,data:{aid:aid},success: function(res){if(res.code200res.data!nullres.data.id0){jQuery(#title).val(res.data.title);initEdit(res.data.content);}else if(res.code-2){alert(未登录)location.hreflogin.html;}else{alert(抱歉查询失败res.msg);}}});//将文章内容展示到页面}init();/script /body/html后端 提取文章 调用mapper层控制数据库 Mapper public interface ArticleMapper {Select(select * from articleinfo where aid#{aid} and uid#{uid})Articleinfo getArtByaidAnduid(Param(aid)int aid,Param(uid) int uid); }调用service层调用mapper接口 Service public class ArticleService {Autowiredprivate ArticleMapper articleMapper;public Articleinfo getArtByaidAnduid(int aid,int uid){return articleMapper.getArtByaidAnduid(aid,uid);} }Controller层调用service RestController RequestMapping(/article) public class ArticleController {Autowiredprivate ArticleService articleService;Resourceprivate ThreadPoolTaskExecutor taskExecutor;Resourceprivate UserinfoVO userinfoVO;RequestMapping(/update_init)public ResultAjax updataInti(Integer aid,HttpServletRequest request){if (aid0||aidnull){return ResultAjax.fail(-1,参数有误);}Userinfo userinfoSessionUtis.getUser(request);if (userinfonull){return ResultAjax.fail(-2,请先登录);}Articleinfo articleinfoarticleService.getArtByaidAnduid(aid,userinfo.getUid());return ResultAjax.success(articleinfo);}}修改文章 调用mapper层控制数据库 Mapper public interface ArticleMapper {Update(Update articleinfo set title#{title},content#{content} where aid#{aid} and uid#{uid})int setArt(Articleinfo articleinfo); }调用service层调用mapper接口 Service public class ArticleService {Autowiredprivate ArticleMapper articleMapper;public int setArt(Articleinfo articleinfo){return articleMapper.setArt(articleinfo);} }Controller层调用service RestController RequestMapping(/article) public class ArticleController {Autowiredprivate ArticleService articleService;Resourceprivate ThreadPoolTaskExecutor taskExecutor;Resourceprivate UserinfoVO userinfoVO;RequestMapping(/update)public ResultAjax setArt(Articleinfo articleinfo,HttpServletRequest request){if (articleinfonull||!StringUtils.hasLength(articleinfo.getContent())||!StringUtils.hasLength(articleinfo.getTitle())){return ResultAjax.fail(-1,参数非法);}Userinfo userinfoSessionUtis.getUser(request);if (userinfonull){return ResultAjax.fail(-2,请先登录);}articleinfo.setUid(userinfo.getUid());int resultarticleService.setArt(articleinfo);return ResultAjax.success(result);} }显示正文内容 前端 !DOCTYPE html html langenheadmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0title博客正文/titlelink relstylesheet hrefcss/conmmon.csslink relstylesheet hrefcss/blog_content.csslink relstylesheet hrefeditor.md/css/editormd.preview.min.css /script srcjs/jquery.min.js/scriptscript srceditor.md/editormd.js/scriptscript srceditor.md/lib/marked.min.js/scriptscript srceditor.md/lib/prettify.min.js/scriptscript srcjs/urluitils.js/script /headbody!-- 导航栏 --div classnavimg srcimg/sleep.jpg altspan classtitle我的博客系统/span!-- 用来占据中间位置 --span classspacer/spana hrefblog_list.html主页/aa hrefblog_edit.html写博客/aa hrefmyblog_list.html我的博客/aa hreflogin.html登陆/aa hrefjavascript:logout()注销/a/div!-- 版心 --div classcontainer!-- 左侧个人信息 --div classcontainer-leftdiv classcardimg srcimg/sleep.jpg classavtar idphotoh3 idusername/h3a hrefhttp:www.github.comgithub 地址/adiv classcounterspan文章/span/divdiv classcounterspan idartcount/span/div/div/div!-- 右侧内容详情 --div classcontainer-rightdiv classblog-content!-- 博客标题 --h3 idtitle/h3!-- 博客时间 --div classdate 发布时间 span idcreatetime/span| 阅读量 span idrcount/span/div!-- 博客正文 --div ideditorDiv/div/div/div/divscript typetext/javascriptvar aidgetParamValue(aid);var editormd;function initEdit(md){editormd editormd.markdownToHTML(editorDiv, {markdown : md, });}//初始化页面function init(){if(aidnull||aid0){alert(参数有误);return false;}jQuery.ajax({url:/article/detail,type:get,data:{aid:aid},success:function(res){if(res.code200res.data!null){var userres.data.user;var artres.data.art;if(user!null){if(user.photo!){jQuery(#photo).att(src,user.photo);}jQuery(#username).html(user.username);jQuery(#artcount).html(user.artCoout);}else{alert(抱歉查询失败res.msg);}if(art!null){jQuery(#title).html(art.title);jQuery(#createtime).html(art.createtime);jQuery(#rcount).html(art.rcount);initEdit(art.content);}else{alert(抱歉查询失败res.msg);}}else{alert(抱歉查询失败res.msg);}}});}init();function incrementRCount(){if (aidnull||aid0) {return false;}jQuery.ajax({url:/article/increment_rcount,type:post,data:{aid:aid},success:function(res){}})}incrementRCount();/script /body/html后端 调用mapper层控制数据库 UserMapper Mapper public interface UserMapper {Select(select * from userinfo where uid#{uid})UserinfoVO getUserById(Param(uid)int uid); }ArticleMapper Mapper public interface ArticleMapper {Update(Update articleinfo set title#{title},content#{content} where aid#{aid} and uid#{uid})int setArt(Articleinfo articleinfo);Select(select * from articleinfo where aid#{aid})Articleinfo readDetail(Param(aid)int aid);}调用service层调用mapper接口 UserServie Service public class UserService {Autowiredprivate UserMapper userMapper;public UserinfoVO getUserByUid(int uid){return userMapper.getUserById(uid);} }ArticleService Service public class ArticleService {Autowiredprivate ArticleMapper articleMapper;public Articleinfo readDetail(int aid){return articleMapper.readDetail(aid);} } Controller层调用service ArticleController RestController RequestMapping(/article) public class ArticleController {Autowiredprivate ArticleService articleService;Resourceprivate ThreadPoolTaskExecutor taskExecutor;Resourceprivate UserService userService;Resourceprivate UserinfoVO userinfoVO;RequestMapping(/detail)public ResultAjax readDetail(Integer aid) throws ExecutionException, InterruptedException {if (aid0||aidnull){return ResultAjax.fail(-1,非法参数);}Articleinfo articleinfoarticleService.readDetail(aid);if (articleinfonull){return ResultAjax.fail(-1,非法参数);}FutureTaskUserinfoVO userTasknew FutureTask(()-{return userService.getUserByUid(articleinfo.getUid());});taskExecutor.submit(userTask);FutureTaskInteger artCountTasknew FutureTask(()-{return articleService.getArtCountById(articleinfo.getUid());});taskExecutor.submit(artCountTask);UserinfoVO userinfoVOuserTask.get();int artCountartCountTask.get();userinfoVO.setArtCount(artCount);HashMapString,Object mapnew HashMap();map.put(user,userinfoVO);map.put(art,articleinfo);return ResultAjax.success(map);} }文章阅读量功能 调用mapper层控制数据库 Mapper public interface ArticleMapper {Update(upate articleinfo set readcountreadcount1 where aid#{aid})int readArtCount(Param(aid)int aid);}调用service层调用mapper接口 Service public class ArticleService {Autowiredprivate ArticleMapper articleMapper;public int readArtCount(int aid){return articleMapper.readArtCount(aid);} }Controller层调用service RestController RequestMapping(/article) public class ArticleController {Autowiredprivate ArticleService articleService;Resourceprivate ThreadPoolTaskExecutor taskExecutor;Resourceprivate UserService userService;Resourceprivate UserinfoVO userinfoVO;RequestMapping(/increment_rcount)public ResultAjax readArtCount(Integer aid){if (aidnull||aid0){return ResultAjax.fail(-1,参数有误);}int result articleService.readArtCount(aid);return ResultAjax.success(result);} }添加文章 前端 !DOCTYPE html html langenheadmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0title博客编辑/title!-- 引入自己写的样式 --link relstylesheet hrefcss/conmmon.csslink relstylesheet hrefcss/blog_edit.css!-- 引入 editor.md 的依赖 --link relstylesheet hrefeditor.md/css/editormd.min.css /script srcjs/jquery.min.js/scriptscript srceditor.md/editormd.js/script /headbody!-- 导航栏 --div classnavimg srcimg/sleep.jpg altspan classtitle我的博客系统/span!-- 用来占据中间位置 --span classspacer/spana hrefblog_list.html主页/aa hrefmyblog_list.html我的博客/aa hrefjavascript:logout()注销/a/div!-- 编辑框容器 --div classblog-edit-container!-- 标题编辑区 --div classtitle input typetext placeholder在这里写下文章标题 idtitlebutton onclickmysub() 发布文章/button/div!-- 创建编辑器标签 --div ideditortextarea ideditor-markdown styledisplay:none;/textarea/div/divscriptvar editor;function initEdit(md){// 编辑器设置editor editormd(editor, {// 这里的尺寸必须在这里设置. 设置样式会被 editormd 自动覆盖掉. width: 100%,// 高度 100% 意思是和父元素一样高. 要在父元素的基础上去掉标题编辑区的高度height: calc(100% - 50px),// 编辑器中的初始内容markdown: md,// 指定 editor.md 依赖的插件路径path: editor.md/lib/,saveHTMLToTextarea: true // });}initEdit(# 在这里写下一篇博客); // 初始化编译器的值// 提交function mysub(){//非空校验var titlejQuery(#title);if(title.val()){alert(输入标题);title.focus();return false;}if(editor.getValue()){alert(请先输入正文);return false;}//将用户提交的数据传递给后端jQuery.ajax({url:/article/add,type:post,data:{title:title.val(),content:editor.getValue()},success:function(res){if(res.code200res.data1){if(confirm(恭喜:添加成功是否继续添加文章)){Location.hrefLocation.href;}else{location.hrefmyblog_list.html;}}else{alert(抱歉操作失败res.msg); }}});//将返回的数据展现给用户}/script /body/html后端 mapper Insert(insert into articleinfo(title,content,uid) values(#{title},#{content},#{uid}))int add(Articleinfo articleinfo);Service public int add(Articleinfo articleinfo) {return articleMapper.add(articleinfo);}Controller RequestMapping(/add)public ResultAjax add(Articleinfo articleinfo,HttpServletRequest request){if (articleinfonull||!StringUtils.hasLength(articleinfo.getTitle())||!StringUtils.hasLength(articleinfo.getContent())){return ResultAjax.fail(-1,非法参数);}Userinfo userinfoSessionUtis.getUser(request);if (userinfonull){return ResultAjax.fail(-2,请先登录);}articleinfo.setUid(userinfo.getUid());int resultarticleService.add(articleinfo);return ResultAjax.success(result);}补充一点 如何使用Redis 具体详情可以看我的Redis哪一章文章链接 你会发现启动的并没有成功。原因我这里留了一个坑关于拦截器的。 Configuration public class MyConfig implements WebMvcConfigurer {Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new LoginIntercpet()).addPathPatterns(/**).excludePathPatterns(/css/*).excludePathPatterns(/js/*).excludePathPatterns(/css).excludePathPatterns(/img/*).excludePathPatterns(/reg.html).excludePathPatterns(/blog_list.html).excludePathPatterns(/article/detail).excludePathPatterns(/article/getlistbypage).excludePathPatterns(/user/reg).excludePathPatterns(/user/login).excludePathPatterns(/editor.md/*).excludePathPatterns(/blog_content.html).excludePathPatterns(/login.html);} }第二个启动这里要添加mapper映射否则会失败 SpringBootApplication MapperScan(com.example.myblog.mapper) public class MyblogApplication {public static void main(String[] args) {SpringApplication.run(MyblogApplication.class, args);}} 项目地点 项目的Gitee链接实际调试完毕的项目
http://www.tj-hxxt.cn/news/142768.html

相关文章:

  • 黄州网站建设百度2022年版本下载
  • 网站开发关键技术开发网站年度工作总结及明年工作计划
  • 黄页88网站关键词怎么做人才网站开发
  • 外贸多语言网站建设贷款申请入口
  • 主题资源网站建设作业北京工程质量建设协会网站
  • 一般门户网站深情密码免费观看网站
  • 联通网站备案系统WordPress响应式幻灯片
  • 上海网站制作优化免费舆情网站直接打开
  • 大连科技公司建设网站个人如何做微商城网站
  • 网站建设工作计划表网站建设立项申请书
  • 自己可以做网站空间吗中国建设银行2024版本
  • 自己做网站系统首选平台网站发展阶段怎么做
  • 榆社网站建设河南省建设监理协会网站人才十
  • 网站推广计划书具体包含哪些基本内容?阜阳网站制作公司多少钱
  • 亿网行网站建设一个人做网站 没有人写文章怎么办
  • 那个网站专利分析做的好做动漫网站的意义
  • 百度描述 网站做的网站怎么样才能再网上看到
  • 建立个人网站流程建设工程检测报告查询网站
  • wordpress 数据库 恢复seo云优化是什么意思
  • 怎么开发个人网站wordpress适合seo
  • 可以做外链网站黄页网站建设
  • 自己制作网站需要什么网络机房建设公司
  • 玉树商城网站建设网站建设入门要求以及建站流程
  • 网站建设素材包网页做网站的尺寸
  • 0基础做网站多久qq浏览器官网主页网址
  • 做酒店管理网站的作用网站中英文切换怎麼做
  • 网站设计与网页制作项目教程个人主页怎么找
  • 农产品网站如何做地推wordpress add_filter
  • 网站开发中用什么安全性比性比较高福建建设资格执业注册管理中心网站
  • 网站备案号信息网站建设是前端吗