java个人家乡博客管理员功能的实现技术文档

无敌的宇宙
无敌的宇宙
擅长邻域:Java,HTML,JavaScript,MySQL,支付,退款,图片上传

分类: Java springboot MySQL 专栏: java springboot Mysql 标签: java个人家乡博客管理员功能的实现技术文档

2023-01-02 22:49:02 553浏览

主要介绍java个人家乡博客管理员功能的实现过程

(1) 管理员登录功能的实现


图4.28 管理员后台登录图

进入登录页面http://localhost:8099/admin/userInfo/tologin,登录页面简洁美观,输入管理员账号和密码可直接登录,前台通过form表单提交,将用户输入的用户名uname和密码upass传入AdminUserInfoController.login(UserInfo u)控制器,该控制器调用userInfoService.queryList(u)方法,该方法调用UserInfoMapper..queryList(u),最终生成sql语句:select * from userinfo where 1=1 and uname = ? and upass = ? order by id desc 。后台根据该语句返回结果集, 若查询数据库之后没有数据则返回null,表示用户登录失败,反之则返回查询的list,并将该list的第一条数据存入session中,作为该用户的登录信息保存。见图4.29。

(2)用户管理功能实现


图4.30 用户管理图


点击左侧的用户管理,进入admin/userInfo/list页面,触发事件后,后台将请求传送给AdminUserInfoController.list(UserInfo u)控制器。默认只查第一页的数据。AdminUserInfoController.list调用userInfoService.queryList,该业务层会调用UserInfoMapper..queryList(u),最终通过UserInfoMapper.xml生成sql语句:select * from userinfo where 1=1 order by id desc limit ?,? 。并且返回查询数据库之后的结果集到控制层,该功能主要使用limit来实现分页功能。

管理用户是后台的功能之一,分有左右结构,左边菜单,右边主体。以table的形式分页展示注册用户,可以根据昵称、用户名、禁用启用状态和权限进行条件查询,其调用的控制层和上面的分页功能的一样,均为AdminUserInfoController.list(UserInfo u),当用户点击查询按钮时,程序会把用户的查询条件以form的形式提交到控制层,再由service层和mapper的层的调用,最终生成带条件查询的sql语句。在UserInfoMapper.xml中使用<if test="role != null and role != ''"> and 字段 = #{参数}</if>来动态拼接sql语句,从而达到带条件查询的效果,比如按昵称模糊查询会生成的sql语句:select * from userinfo where 1=1 and nickname like concat('%',?,'%') order by id desc limit ?,?。按用户名查询会生成的sql语句:select * from userinfo where 1=1 and uname = ? order by id desc limit ?,? 。这样做可以提高代码的复用性,提高开发效率,多条件查询非常灵活。

管理员可以指定和取消其他用户管理员,以分担维护网站的工作。主要是通过a标签来实现发请求的,此时,程序会调用AdminUserInfoController.setrole()方法,根据用户传过了的数据主键id和权限role来判断用户操作的具体是哪一条数据,以及role的值来判断是设置管理员的请求还是取消管理员的请求。当role等于pt则表示取消管理员,当role等于admin则表示设置管理员,通过代码的业务层和dao 层的调用,最终生成sql语句:update userinfo set role=? where 1=1 and id=?。通过修改role来实现用户的权限功能。并且通过redirect指直接跳转list控制器,这样就实现了设置权限的功能。

若用户忘记密码,则可以联系管理员初始化该用户的登录密码。程序调用AdminUserInfoController.initPwd()控制器,最终生成sql语句:update userinfo set upass=? where 1=1 and id=? 。这样就实现了密码初始化的功能。

同时,管理员还可以启用和禁用注册用户的账号,以此来规范网站,营造良好的网站氛围。其原理和初始密码一样,修改status字段,当status等于0则表示该用户被禁用,当该用户输入自己的账号密码则直接提示他无法登陆网站以及禁用的原因;当status=1时则表示该用户的账号正常。

见图4.30。

(3)博文分类管理功能的实现


图4.31 分类管理图


点击左侧的分类管理,进入admin/type/list页面,触发事件后,后台将请求传送给AdminTypeController.List(type t)控制器,AdminTypeController调用TypeServiceImpl层的相关逻辑代码进行处理,最终生成sql语句:select * from type where 1=1 order by tsort asc limit ?,? ,从而实现分页功能 。还可以根据分来名称进行查询。

当然管理员还可以添加和编辑分类,调用AdminTypeController.toadd()控制器就可以进入分类的编辑页面。Toadd()方法根据是否接收到主键id来判断管理员此时进行的是添加分类的操作,还是编辑分类的操作。如果id等于null则表示要进行添加,如果id不等于null,则根据id查询出该分类数据,并通过el表达式回显到编辑分类的页面。并且把id放进隐藏域,当管理员在添加或者编辑完数据后,会把数据提交到AdminTypeController.Save(type t)控制器进行保存,如果id为null,则最终生成的sql语句是insert into type (tname,cts,tsort) values(?,?,?) ;如果id不为null,则最终生成的sql语句是update type set tsort=?, tname=? where 1=1 and id=? ,这样就实现了使用同一个控制器同一个页面同时实现管理员的添加和修改的功能了。另外,管理员可设置分类的排序,排序字段越小,则给分类在前端首页出现的位置越靠前。

管理员也可以删除分类,把需要删除数据的id传给AdminTypeController.del()控制器,最终生成sql:delete from type where id=? ,从而实现了删除功能,并且通过redirect指直接跳转 AdminTypeController.list控制器,直接返回分类的管理页面。见图4.31。

(%1) 博文管理功能的实现


图4.32 博文管理图


点击左侧的博客管理,进入admin/article/list#page-content页面,触发事件后,后台将请求传送给AdminArticleController.list(),AdminArticleController调用ArticleServiceImpl层的相关逻辑代码进行处理,最终生成sql语句 :select a.* ,u.nickname,u.fimg,t.tname from article a left join userinfo u on u.id=a.uid left join type t on t.id=a.type_id where 1=1 limlt ?,? ,由于用户在发布博文时,需要选择分类,所以此时需要左链接type分类表,以及左链接userinfo注册用户表进行联合查询,这样前台才可以同时显示博文信息、发布者的信息(比如昵称和头像等),以及显示该博文的分类,见图4.32。

博客管理是后台的功能之一,管理员可根据标题、昵称、分类、审核状态快速的查找需要处理的博文。此时调用的控制器和上面的一样,均为AdminArticleController.list(),只是查询条件被动态拼接上去了,比如按标题模糊查询,则生成sql语句:select a.* ,u.nickname,u.fimg,t.tname from article a left join userinfo u on u.id=a.uid left join type t on t.id=a.type_id where 1=1 and a.title like concat('%',?,'%') order by a.cts desc limit ?,?。

管理员可对博文进行审核不通过拦截处理,并把不通过的原因返回给用户,这样前台页面则不会展示该博文信息,即使用户搜索该博文也会跳转404 页面。这里用putaway字段来表示博文的审核状态,当putaway等于0时,则表示待审核;当putaway等于1时,则表示审核通过,前台正常显示;当putaway等于-1时,则表示待审不通过。最终生成sql语句:update article set put_away=?, put_cts=?, msg=? where 1=1 and id=?

管理员也可以直接删除该博文。把需要删除的数据的主键id传入AdminArticleController.Del()控制器,最终生成sql语句:delete from article where id=? ,从而实现了删除的功能。

(5)评论管理功能的实现


图4.33 评论管理图


点击左侧的评论管理,进入admin/comment/list#page-content页面,触发事件后,后台将请求传送给AdminCommentController.list(Comment c),AdminCommentController调用CommentServiceImpl层的相关逻辑代码进行处理,最终生成sql语句:elect c.*,u.nickname,u.fimg,u.uname,a.title,uf.nickname as hf_nickname,uf.fimg as hf_fimg from comment c left join userinfo u on u.id=c.uid left join userinfo uf on uf.id=c.hf_uid left join article a on a.id=c.article_id where 1=1 order by c.cts desc limit ?,? ,因为不但要显示评论的内容,还有显示评论人的信息,评论的博文信息,以及恢复用户的信息,所以需要进行连接查询,该sql语句相对复杂,需要搞清楚评论人以及回复人的关系,见图4.33。

评论管理是后台的功能之一,为了规范网站管理,评论也需要被管理,管理可以根据标题、内容、用户昵称快速搜索,可以删除评论。待条件查询也是调用的AdminCommentController.list(Comment c)控制器。这里不多赘述了,主要是删除功能,如果管理员删除了某一个评论则需要把该评论下面的所有回复信息也删除,这里主要调用了AdminCommentController.Del()控制器实现的。不但需要条用commentService.deleteById(),还需要调用:commentService.deleteByObj( ),最终生成sql语句如下:delete from Comment where id=? (删除评论); delete from Comment where 1=1 and hf_id=? (删除该评论以下的所有回复信息)。

(6)照片管理功能的实现


图4.34 照片管理图


点击左侧的照片管理,进入admin/img/list页面,触发事件后,后台将请求传送给AdminImgController.List(id)控制器,AdminImgController调用ImgServiceImpl层的相关逻辑代码进行处理,最终生成sql语句: select i.*,u.nickname,u.uname,u.fimg from img i left join userinfo u on i.uid=u.id where 1=1 order by i.cts desc limit ?,? ,由于需要展示发布者的信息,所以需要做链接userinfo用户表查询。见图4.34。

照片管理是后台的功能之一,管理员可以根据照片描述和上传者昵称查看照片,若发现有不合适的照片可以直接删除,最终生成sql 语句:delete from img where id=? 。在删除之前,需要查询该数据的图片路径,并且删除图片文件,调用UploadFile.deleteFile(request, m.getSrc());工具类,即可删除磁盘上的图片文件。

好博客就要一起分享哦!分享海报

此处可发布评论

评论(0展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695