基于SSM的个人博客系统(三)

目录

第五章  系统实现

5.1 登录模块

5.1.1 博主登录

5.2 博客管理模块: 

5.2.1 博客查询

5.2.2 博客新建 

5.2.3 博客修改 

5.2.4 博客删除 

5.3 博客类别管理模块 


前面内容请移步

基于SSM的个人博客系统(二)

个人博客系统的设计与实现免费源码+论文

个人博客系统的设计与实现+毕业设计+论文+源码

第五章  系统实现

5.1 登录模块

5.1.1 博主登录

        登入系统后台管理登录页面,博主首先输入用户名和密码,它回去调用Controller层代码,然后进入业务层调用数据库的一些操作确认是否用户名密码正确,然后返回到前台就会登进去。

登录首页模块主要代码:

        JSP代码:

使用form表单提交到后台进行数据验证:

​
<form action="${pageContext.request.contextPath}/blogger/login.do" method="post" onsubmit="return checkForm()"><DIV style="width: 165px; height: 96px; position: absolute;"><DIV class="tou"></DIV><DIV class="initial_left_hand" id="left_hand"></DIV><DIV class="initial_right_hand" id="right_hand"></DIV></DIV><P style="padding: 30px 0px 10px; position: relative;"><SPAN class="u_logo"></SPAN><INPUT id="userName" name="userName" class="ipt" type="text" placeholder="请输入用户名" value="${blogger.userName }"> </P><P style="position: relative;"><SPAN class="p_logo"></SPAN>         <INPUT id="password" name="password" class="ipt"  type="password" placeholder="请输入密码" value="${blogger.password }">  
</P><DIV style="height: 50px; line-height: 50px; margin-top: 30px; border-top-color: rgb(231, 231, 231); border-top-width: 1px; border-top-style: solid;"><P style="margin: 0px 35px 20px 45px;"><SPAN style="float: left;"><a href="${pageContext.request.contextPath}/index.html">Java个人博客系统</a></SPAN> <span><font color="red" id="error">${errorInfo }</font></span><SPAN style="float: right;"> <input type="submit" value="登录"/> </SPAN>         </P></DIV></DIV>
</form>​

        使用javascrip对输入的博主用户密码进行校验,若用户名或密码为空,提示错误信息来提醒用户, 用户再去查找错误。 

function checkForm(){var userName=$("#userName").val();var password=$("#password").val();if(userName==null||userName==""){$("#error").html("用户名不能为空!");return false;}if(password==null||password==""){$("#error").html("密码不能为空!");return false;}return true;
}

        java代码:使用MVC框架,对后台数据和前台form表单提交的数据进行交互 

@Controller
@RequestMapping("/blogger")
public class BloggerController {@Resourceprivate BloggerService bloggerService;/*** 用户登录* @param blogger* @param request* @return*/@RequestMapping("/login")public String login(Blogger blogger,HttpServletRequest request){Subject subject=SecurityUtils.getSubject();UsernamePasswordToken token=new UsernamePasswordToken(blogger.getUserName(), CryptographyUtil.md5(blogger.getPassword(), "java1234"));try{subject.login(token); // 登录验证return "redirect:/admin/main.jsp";}catch(Exception e){e.printStackTrace();request.setAttribute("blogger", blogger);request.setAttribute("errorInfo", "用户名或密码错误!");return "login";}

5.2 博客管理模块: 

        博客管理管理模块为个人博客系统的用户(即博主)提供写博客和博客信息管理功能。在个人博客系统的首页上的博客就是从这里进行发布的博客管理包含

        新建:博客的新建,博客可以含有图片,视频,音频附件。新建博客必须要有博客标题,博客类别自己选择所需要的博客类别,然后填入博客内容,最后发表文章。

        搜索:在博客信息管理中,可以输入自己想要搜索的博客信息,系统会自动筛选出适合的博客展现给用户。

        修改: 点击你想要修改的博客,系统会弹出修改博客页面,之后博客的标题,所属的博客类型,博客内容等都可以修改。

        删除: 该系统支持单个删除和批量删除。

5.2.1 博客查询

图4-1查询博客时序图

步骤

系统行为描述

1

博客信息管理页面点查询按钮

2

页面表单提交调用控制层控制层的list方法

3

控制层list方法中调用服务层的list方法

4

服务层调用持久层list方法返回博客集合

        按条件查询博客,调用控制层的list方法,在其中调用服务层list方法,返回  blog集合:List<Blog> list。获得集合后使用方法把查询到符要求的数据传到前台,在前台对数据进行处理。中心代码如下:   

@RequestMapping("/list")public String list(@RequestParam(value="page",required=false)String page,@RequestParam(value="rows",required=false)String rows,Blog s_blog,HttpServletResponse response)throws Exception{PageBean pageBean=new PageBean(Integer.parseInt(page),Integer.parseInt(rows));Map<String,Object> map=new HashMap<String,Object>();map.put("title", StringUtil.formatLike(s_blog.getTitle()));map.put("start", pageBean.getStart());map.put("size", pageBean.getPageSize());List<Blog> blogList=blogService.list(map);Long total=blogService.getTotal(map);JSONObject result=new JSONObject();JsonConfig jsonConfig=new JsonConfig();jsonConfig.registerJsonValueProcessor(java.util.Date.class, new DateJsonValueProcessor("yyyy-MM-dd"));JSONArray jsonArray=JSONArray.fromObject(blogList,jsonConfig);result.put("rows", jsonArray);result.put("total", total);ResponseUtil.write(response, result);return null;}

5.2.2 博客新建 

图4-2 新建博客时序

步骤

系统行为描述

1

博主在后台页面填写博客信息点击发布博客按钮

2

Jsp表单提交调用控制层controller的save方法

3

控制层save方法中调用service层的add方法

4

调用blogMapper持久层保存博客信息

5

添加索引

         点击写博客进入博客发布界面填写博客内容信息,点击发布博客,提交到控制层的save方法,传入参数:Blog,该参数包含博客所有信息内容,提交的时候使用javascript对博客的内容进行校验。校验成功后便会调用控制方法,在控制层的save()方法中调用服务层的add()方法该博客进行保存,持久到数据中。部分代码如下

@RequestMapping("/save")public String save(Blog blog,HttpServletResponse response)throws Exception{int resultTotal=0; // 操作的记录条数if(blog.getId()==null){resultTotal=blogService.add(blog);blogIndex.addIndex(blog); // 添加博客索引}else{resultTotal=blogService.update(blog);blogIndex.updateIndex(blog); // 更新博客索引}JSONObject result=new JSONObject();if(resultTotal>0){result.put("success", true);}else{result.put("success", false);}ResponseUtil.write(response, result);return null;}

5.2.3 博客修改 

图4-3 修改博客时序

步骤

系统行为描述

1

博主在博客信息管理页面选择需要修改的博客打开博客修改页面

2

Jsp表单提交调用控制层controller的save方法

3

控制层save方法中调用service层的update方法

4

调用blogMapper持久层保存修改后的博客信息

5

更新索引

         进入博客修改页面,修改博客内容信息,点击发布博客,提交到控制层的save方法,传入参数:Blog,该参数包含了修改后的博客所有信息内容,提交的时候使用javascript对博客的内容进行校验。校验成功后便会调用控制方法,在控制层的save()方法中调用服务层的update()方法该博客进行保存,持久到数据中。部分代码如下

@RequestMapping("/save")public String save(Blog blog,HttpServletResponse response)throws Exception{int resultTotal=0; // 操作的记录条数if(blog.getId()==null){resultTotal=blogService.add(blog);blogIndex.addIndex(blog); // 添加博客索引}else{resultTotal=blogService.update(blog);blogIndex.updateIndex(blog); // 更新博客索引}JSONObject result=new JSONObject();if(resultTotal>0){result.put("success", true);}else{result.put("success", false);}ResponseUtil.write(response, result);return null;}

5.2.4 博客删除 

图4-4 删除博客时序

步骤

系统行为描述

1

博主在博客信息管理页面选择需要删除的博客(可以选择多条)

2

调用控制层controller的delete方法

3

控制层delete方法中调用service层的delete方法

4

调用blogMapper持久层将对应的博客信息删除

5

删除对应博客的索引

         在博客管理页面选择需要删除的博客,点击删除按钮,提交到控制层的delete方法,传入参数:需要删除博客的id,调用控制方法,在控制层的delete()方法中调用服务层的delete()方法该博客或多个博客进行删除,持久到数据中。部分代码如下:        

@RequestMapping("/delete")
public String delete(@RequestParam(value="ids")String ids,HttpServletResponse response)throws Exception{String []idsStr=ids.split(",");for(int i=0;i<idsStr.length;i++){blogService.delete(Integer.parseInt(idsStr[i]));blogIndex.deleteIndex(idsStr[i]); // 删除对应博客的索引}JSONObject result=new JSONObject();result.put("success", true);ResponseUtil.write(response, result);return null;}

5.3 博客类别管理模块 

持续更新中......

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/661450.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决“未能正确加载QtVsToolPackage包“问题

今天&#xff0c;在使用VS2019Qt插件时&#xff0c;弹出"未能正确加载QtVsToolPackage包"错误&#xff0c;如图(1.1)所示&#xff1a; 图(1.1) 报"未能正确加载QtVsToolsPackage包"错误 出现这种现象的原因是: qt-vsaddin升级失败或者版本不兼容&#xff0…

Bert基础(二十一)--Bert实战:文本摘要

一、介绍 1.1 文本摘要简介 文本摘要&#xff08;Text Summarization&#xff09;&#xff0c;作为自然语言处理&#xff08;NLP&#xff09;领域的一个分支&#xff0c;其核心目标是从长篇文档中提取关键信息&#xff0c;并生成简短的摘要&#xff0c;以提供对原始内容的高度…

QT - 创建Qt Widgets Application项目

在Qt中结合OpenGL使用&#xff0c;可以创建一个Qt Widgets应用程序项目。在创建项目时&#xff0c;您可以选择使用OpenGL模板来生成一个已经集成了OpenGL的项目。这个模板会自动帮助您集成OpenGL和Qt&#xff0c;并生成一个基本的OpenGL窗口。您可以在这个窗口中进行OpenGL的开…

【算法基础实验】图论-最小生成树Prim的延迟实现

最小生成树-Prim的延迟实现 理论基础 树的基本性质 用一条边连接树中的任意两个顶点都会产生一个新的环&#xff1b; 从树中删去一条边将会得到两棵独立的树。 切分定理的定义 定义。图的一种切分是将图的所有顶点分为两个非空且不重叠的两个集合。横切边 是一条连接两个属…

STM32进入睡眠模式的方法

#STM32进入睡眠模式的方法 今天学习了如何控制STM32进入睡眠模式&#xff0c;进入睡眠模式的好处就是省电&#xff0c;今天学习的只是浅度睡眠&#xff0c;通过中断就能唤醒。比如单片机在那一放&#xff0c;也许好几天好几个月都不用一次&#xff0c;整天的在那空跑while循环…

Stable Diffusion教程:额外功能/后期处理/高清化

"额外功能"对应的英文单词是Extras&#xff0c;算是直译。但是部分版本中的翻译是“后期处理”或者“高清化”&#xff0c;这都是意译&#xff0c;因为它的主要功能是放大图片、去噪、修脸等对图片的后期处理。注意这里边对图片的处理不是 Stable Diffusion 本身的能…

2023年蓝桥杯C++A组第三题:更小的数(双指针解法)

题目描述 小蓝有一个长度均为 n 且仅由数字字符 0 ∼ 9 组成的字符串&#xff0c;下标从 0 到 n − 1&#xff0c;你可以将其视作是一个具有 n 位的十进制数字 num&#xff0c;小蓝可以从 num 中选出一段连续的子串并将子串进行反转&#xff0c;最多反转一次。小蓝想要将选出的…

Linux修改文件权限命令 chmod

【例子引入】 以下面命令为例&#xff1a; chmod 777 Random.py 当写入下面名为Random.py的代码后&#xff1a; 如果直接运行&#xff0c;会显示权限不够 当输入 chmod 777 Random.py 更改权限后&#xff0c;才能够正常运行 在终端中输入 这条命令是关于Linux或Unix-like系…

RS0102YH8功能和参数介绍及如何计算热耗散

RS0102YH8功能和参数介绍-公司新闻-配芯易-深圳市亚泰盈科电子有限公司 RS0102YH8 是一款电平转换芯片&#xff0c;由润石&#xff08;RUNIC&#xff09;公司生产。以下是关于RS0102YH8的一些功能和参数的介绍&#xff1a; 电平转换功能&#xff1a; RS0102YH8旨在提供电平转换…

Python 中的花卉矩阵组合

使用场景描述 (rib) 协议编写脚本的基础知识。通过创建在 3D 空间中转换的基本几何图形,解决了 xyz 坐标系的基础知识。初步渲染是使用基本着色完成的,因此可以更容易地看到几何体。RenderMan 图1 图 1 是我作为作业参考的示例图片,并尝试匹配 中的图片。为了完成这项任务…

SCI一区 | MFO-CNN-LSTM-Mutilhead-Attention多变量时间序列预测(Matlab)

SCI一区 | MFO-CNN-LSTM-Mutilhead-Attention多变量时间序列预测&#xff08;Matlab&#xff09; 目录 SCI一区 | MFO-CNN-LSTM-Mutilhead-Attention多变量时间序列预测&#xff08;Matlab&#xff09;预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现MFO-CNN…

Python 机器学习 基础 之 学习 基础环境搭建

Python 机器学习 基础 之 学习 基础环境搭建 目录 Python 机器学习 基础 之 学习 基础环境搭建 一、简单介绍 二、什么是机器学习 三、python 环境的搭建 1、Python 安装包下载 2、这里以 下载 Python 3.10.9 为例 3、安装 Python 3.10.9 4、检验 python 是否安装成功&…