版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录再往后,就是一步一步写相应页面的代码了,一开始遇到很多问题,写了两个页面就花了我四天,不过解决了相应的问题后,后面的页面就写的很快了,前前后后花了半个月时间,终于完成。在这个过程中我查了无数的日志,学到了很多很多,不得不说做项目是最好的提升方式。
第三章项目结构3.1数据库结构库名:blogblog表结构:blog表结构:comment表结构:type表结构:tag表结构:user表结构:
3.2项目结构
第四章项目思路4.1用户登录我这里采用的是一种比较常规的手法,那就是拦截器+session的组合。首先写个拦截器,对所有访问后台的请求进行拦截,如果该请求的session中没有user对象,则拦截并将其重定向到登录页面(这里要注意登录页面不能被自己给拦截了)。如果存在该user对象,则放行通过。登录的时候验证管理员账户密码,如果正确就在session中加入该对象。当然还有一种情况就是用户什么也不输入直接提交,如果不对这种情况加以处理,那么数据库就会报错。我采取的方法是前端进行非空验证。当然后台也可以注销,即销毁session中的user对象。用流程图演示就是下面这样。4.2restful风格多变处理什么是restful风格?REST的核心原则是将你的API拆分为逻辑上的资源。这些资源通过http被操作(GET,POST,PUT,DELETE)。
如/newjueqi/article/details/44037011这个接口。其实csdn接口就是采用这种风格。不信?你看看你当前的地址栏就知道了。restful在命名上有个特点就是把所有东西当做资源,这就要求接口命名上以名词为主,然后通过发送请求方式的不同来区分增删改查的操作。这样好处就是我一看接口就知道我要干什么,把后端定义成资源的获取,后端分工明确,职责清晰。但是这样也存在一些问题,如果全按这种方式,那么在前后端分离不那么明显的情况下,接口不能完全应对前端错综复杂的需求变化。这就很考验接口的设计。所以这种情况下就要求我们不能完全采用这种风格,该加参数还得加,而且还得应对一个接口适应多种变化。4.3评论功能评论功能还是有点复杂的,解决思路也很多。而且你在建表的时候就得好好思考思路了。思考如何存储评论内容,如何存储评论与评论之间的关系。这样你后面处理起来才不会手忙脚乱。这里我介绍一下我的思路。首先,我把评论comment赋予以下几个属性id,name,email,blog,isAdmin,content,time,parent。前面几个属性好理解,无非就是存储评论的用户昵称,邮箱,评论内容之类。最后一个parent表示什么呢?其实这个parent使用用来存储评论与评论之间的关系的,它是int类型,主要存储父评论的id。如果没有父评论,那么则用-1存储以示区别。这样我们就可以分清以及评论和二级评论了。
4.4区分博主和普通游客的评论假设一种很有意思的情况,就是游客伪装成博主的用户名和头像来“过愚人节”,这很有意思,但是机智的我为了防止这种情况的发生,在comment类中加了isAdmin属性以区分是否是管理员的评论,前端也根据此来区别显示评论。而判断的依据就是session中有没有user对象。4.5分页显示分页显示实际上有三种思路,一是后端把所有查询结果都发到前端,然后由前端进行分页显示处理;二是后端查询后由后端出来分页,把其分好再发到前端三是我需要时再查,每次点击上一页下一页时发送一个请求,请求包含分页的信息,由后端返回该分页的结果我这里采用的是第三种方法,因为这种方法是通过后端处理,而我又擅长后端,而且这种方法展示的数据具有实时性,前端接收的数据量小,反应快,用户体验好。但是麻烦的地方随之而来,随着分页的信息都由后端来处理,还要肩负渲染的工作,导致后端的接口(controller)极其多。因为需求变化多。特别是同一个页面有多种返回数据的需求,而每种返回的需求都需要分页显示,这样的话接口就呈指数式快速增加。这显然会把系统搞复杂,这就要求我接口的设计必须应对多种场景。其实我在写的时候也很犹豫,当时我写了一半,发现比较麻烦,想尝试第一种方法,但是由于我前端能力实在不行,主要是我不知道怎么实现点击后重新加载数据。然后考虑再三,最终还是选择第三种方法,虽然麻烦是麻烦了点,但是折腾一下后发现也不是什么问题。
第五章过程中遇到的问题5.1SemanticUI文件的导入视频中时采用链接的方式导入,但是我怕部署到服务器上的时候响应会变慢,所以我就采用本地的方式来导入文件,但最主要的原因是官网上找不到cdn链接了,也许是官网不推荐使用了。不过也遇到了些问题,首先遇到的是图标显示异常,最后找了下百度,找到了缘由原因:图标资源未导入。最简单的办法加入这句`<linkrel='stylesheetprefetch'href='/ajax/libs/semantic-ui/2.1.8/components/icon.min.css'>`或者把icon.min.css文件下载到本地,再引入你的html。但是这有个问题,就是你如果单个文件引入的话,由于其内部src路径是按照压缩包里面写的路径写的,这样就会造成路径问题。解决方法就是把引用的路径改成现在的路径。这很麻烦,所以我才用另外一种,将这个文件夹复制粘贴至项目根目录,这样,引用的时候只要引用这三句就行了。<linkrel="stylesheet"href="../Semantic-UI-CSS-master/semantic.min.css">、<scriptsrc="../Semantic-UI-CSS-master/semantic.min.js"/><scriptsrc="js/jquery-3.5.1.min.js"/>我发现图标还是未导入,然后多方查找发现了原因引入图标,可以去/icons中找,因为semantic底层也是用它的图标库,不过引用是原来是fa-angle-double-right,改成angle
doublerighticon即可。这里我们就可以知道页面jquery.js的引用位置问题,如果导入了其它与jquery有关的js文件,那么jquery.js须在其它js的前面。所以jquery.js文件的引用必须在semanticUI的前面。图标还是不显示!当我近乎绝望的时候,我意外的发现了原因。这两者是有区别的!不然你的js操作都没用。。。后者才能成功导入,不能以/>结尾。5.2maven项目的静态资源问题当你发现SpringBoot给你报无数据源,可你明明在配置中配置了时,不要怀疑,点开target文件,看看里面是否有你的配置文件!SpringBoot项目实际上也是maven项目,其项目结构完全参照maven的结构,只是多了些额外的要求。不例外的,SpringBoot项目启动的时候实际上执行的是target文件夹中的内容,如果你明明配置了可还是给你报错,务必查找下target文件夹下面是否有你所需的文件。如果没有则需检查你的pom.xml文件里是否配置了静态资源扫描(即是你的某些配置文件是在resource目录下,但并不是所有文件都会扫描进target文件夹的),所以我们必须加入以下配置<!--如果不添加此节点mybatis的mapper.xml文件都会被漏掉。--><resources><resource><directory>src/main/java</directory><includes><include>**/*.yml</include><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource><resource><directory>src/main/resources</directory><includes><include>**/*.yml</include><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource>5.3SpringBoot项目的路径问题在SpringBoot中,引用的文件路径直接写成不用在前面加上static,且不用../的形式。5.4mybatis框架报数组越界一开始我还很奇怪mybatis框架怎么会报数组越界呢?后来我才知道是因为xml中resultmap写的字段和sql语句不匹配(实体类中不一致也会发生)是会发生这个错误。5.5表单怎么发送put请求其实SpringBoot已经有相应的措施,原理就是SpringBoot默认维护了一个WebMvcAutoConfiguration,其中如果有_method就改变请求方式,不过SpringBoot项目得在配置中开启,默认是关闭的这时候你要做就是在配置中将这个类设置为true
。然后再前端表单中加入这么一句即可。
参考文献[1]张海藩.软件工程导论(第五版),北京,清华大学出版社,2012.5.[2]朱敏,黎方晟,朱晴婷.JSPWeb应用教程(修订本),北京,北京交通大学出版社,2010.9.[3]王珊,萨师煊.数据库系统概论(第四版),北京,高等教育出版社,2008.[4]郑阿奇.SQLServer实用教程(第三版),北京,电子工业出版社,2009.[5]谢星星.UML基础与Rose建模实用教程,北京,清华大学出版社,2011.1.[6]郑莉、刘兆宏编.Java语言程序设计案例教程,北京,清华大学出版社,2007.[7]邓子云.JSP网络编程从基础到实践(第二版),北京,电子工业出版社,2007.[8]丁旭.基于B/S架构的软件项目实训,北京,北京交通大学出版社,2011.8.[9]赛奎春,白伟明,赵玉君等.JSP信息系统实例开发精选,北京,机械工业出版社,2006.[10]李林,施伟伟.JavaScript程序设计教程,北京,人民邮电出版社,2009.[11]蒋卫祥,朱利华,闾枫.J2E案例开发教程,北京,化学工业出版社,2011.5.[12](美)霍尔,(美)布朗,(美)蔡金著,胡书敏等译.Servlet与JSP核心编程(第2卷第2版),北京,清华大学出版社,2009.6.[13]刘宏,张晓云.SQLServer2005数据库应用技术,北京,机械工业出版社,2011.8.[14]BruceW.Perry.JavaServ1et&JSPCookbook,o’Reilly,2004.[15]TowardsanalyzingUMLclassdiagrammodelstoo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026广元市投资发展集团有限公司下属子公司粮油质量检验人员招聘1人模拟试卷含答案详解(综合卷)
- Unit 2 Lesson 1 The Underdog 教学设计 2022-2023学年高中英语(北师大版2019必修第一册)
- 2025年消防安全知识培训考试案例分析篇火灾事故应急救援试题及答案
- 2026年CCAA合格评定基础试题及参考答案
- 建筑工程质量与验收流程指导
- 小学主题班会课件:健康饮食护身体均衡营养促成长
- 2026年aq 逆商 测试题及答案
- 2026年初中数学压力测试题及答案
- 2026年音乐专项测试题及答案
- 2026年论语大会测试题及答案
- 2023年湖北省襄阳市生物中考真题(解析版)
- DL-T1362-2014输变电工程项目质量管理规程
- 同济大学课件钢结构设计原理
- 食品行业的食品安全风险评估案例分析
- JGT331-2011 建筑幕墙用氟碳铝单板制品
- 沥青路面修补恢复施工方案
- 巡察组作风纪律情况评估表
- 《电能计量装置》课件
- 河北专接本化工原理汇编
- GB.T19418-2003钢的弧焊接头 缺陷质量分级指南
- GB/T 41317-2022燃气用具连接用不锈钢波纹软管
评论
0/150
提交评论