文章删除功能的实现【spring boot】

根据文章删除的需求,实现博客文章的删除功能。

1.业务处理层的实现

(1)编写Service层接口方法

在文章业务接口IArticleService添加文章删除方法deleteArticleWithId(),具体代码如下:

//根据主键删除文章

public void deleteArticleWithId(int id);

(2)编写Service层接口实现类方法

在文章业务层接口实现类ArticleServiceImpl中实现deleteArticleWithId()方法,具体代码如下;

    // 删除文章
    @Override
    public void deleteArticleWithId(int id) {
        // 删除文章的同时,删除对应的缓存
        articleMapper.deleteArticleWithId(id);
        redisTemplate.delete("article_" + id);
        // 同时删除对应文章的统计数据
        statisticMapper.deleteStatisticWithId(id);
        // 同时删除对应文章的评论数据
        commentMapper.deleteCommentWithId(id);

上述代码中,文章的删除操作包括删除Redis缓存中的数据、删除文章的统计数据以及删除文章的评论数据。

2.请求处理层实现

在后台管理控制类AdminController中添加处理文章删除的方法,具体代码如下:

    // 文章删除
    @PostMapping(value = "/article/delete")
    @ResponseBody
    public ArticleResponseData delete(@RequestParam int id) {
        try {
            articleServiceImpl.deleteArticleWithId(id);
            logger.info("文章删除成功");
            return ArticleResponseData.ok();
        } catch (Exception e) {
            logger.error("文章删除失败,错误信息: "+e.getMessage());
            return ArticleResponseData.fail();
        }
    }

3.实现前端页面功能

在article_list.html文件中处理展示文章列表和删除文章请求的前端页面功能,具体如文件10-26所示。

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org" th:with="title='文章管理',active='article'">
<header th:replace="back/header::headerFragment(${title},${active})"></header>
<head>
    <meta th:name="_csrf" th:content="${_csrf.token}"/>
    <!-- 默认的header name是X-CSRF-TOKEN -->
    <meta th:name="_csrf_header" th:content="${_csrf.headerName}"/>
</head>
<body class="fixed-left">
<div id="wrapper">
    <div th:replace="back/header::header-body"></div>
    <div class="content-page">
        <div class="content">
            <div class="container">
                <div class="row">
                    <div class="col-sm-12">
                        <h4 class="page-title">文章管理</h4>
                    </div>
                    <div class="col-md-12">
                        <table class="table table-striped table-bordered">
                            <thead>
                            <tr>
                                <th width="35%">文章标题</th>
                                <th width="15%">发布时间</th>
                                <th>浏览量</th>
                                <th>所属分类</th>
                                <th>操作</th>
                            </tr>
                            </thead>
                            <tbody>
                            <th:block th:each="article : ${articles.list}">
                                <tr th:id="${article.id}">
                                    <td>
                                        <a th:href="@{'/article/'+${article.id}}" th:text="${article.title}" target="_blank"></a>
                                    </td>
                                    <td><th:block th:text="${commons.dateFormat(article.created)}"/></td>
                                    <td><th:block th:text="${article.hits}"/></td>
                                    <td><th:block th:text="${article.categories}"/></td>
                                    <td>
                                        <a th:href="@{'/admin/article/'+${article.id}}"
                                           class="btn btn-primary btn-sm waves-effect waves-light m-b-5">
                                           <i class="fa fa-edit"></i> <span>编辑</span></a>
                                        <a href="javascript:void(0)" th:onclick="'delArticle('+${article.id}+');'"
                                           class="btn btn-danger btn-sm waves-effect waves-light m-b-5">
                                            <i class="fa fa-trash-o"></i> <span>删除</span></a>
                                        <a class="btn btn-warning btn-sm waves-effect waves-light m-b-5" href="javascript:void(0)">
                                            <i class="fa fa-rocket"></i> <span>预览</span></a>
                                    </td>
                                </tr>
                            </th:block>

                            </tbody>
                        </table>
                        <div th:replace="comm/paging :: pageAdminNav(${articles})"></div>
                    </div>
                </div>
                <div th:replace="back/footer :: footer-content"></div>
            </div>
        </div>
    </div>
</div>
<div th:replace="back/footer :: footer"></div>
<script type="text/javascript">
    function delArticle(id) {
        // 获取<meta>标签中封装的_csrf信息
        var token = $("meta[name='_csrf']").attr("content");
        var header = $("meta[name='_csrf_header']").attr("content");
        if(confirm('确定删除该文章吗?')){
            $.ajax({
                type:'post',
                url : '/admin/article/delete',
                data: {id:id},
                dataType: 'json',
                beforeSend : function(xhr) {
                    xhr.setRequestHeader(header, token);
                },
                success: function (result) {
                    if (result && result.success) {
                        window.alert("文章删除成功");
                        window.location.reload();
                    } else {
                        window.alert(result.msg || '文章删除失败')
                    }
                }
            });
        }
    }
</script>
</body>
</html>

 文件10-26中,前端页面显示的数据主要通过Ajax请求获取的,并且在Ajax请求中通过携带CSRF Token信息验证请求。

注意

需要说明的是,文章成功删除后,之前储存在Redis中的文章数据也会被删除。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个基于Java的开发框架,用于快速创建、配置和运行独立的、基于生产环境的应用程序。它提供了一种简单和便捷的方式来构建可扩展、可靠和高效的应用程序。在Spring Boot框架中,我们可以使用CMS(内容管理系统)来管理网站的内容。 Layui是一个流行的前端框架,它提供了一系列简洁、易用而又美观的界面组件,包括表单、表格、弹出层等。我们可以利用Layui框架的各种组件来构建用户友好的界面,给用户提供良好的交互体验。 结合Spring Boot和Layui,我们可以开发一个功能强大、易于管理的CMS系统。基于Spring Boot的特性,我们可以很容易地搭建一个稳定、高效的后端系统,实现数据的增删改查和用户管理等功能。同时,利用Layui的界面组件,我们可以为用户提供直观、美观的操作界面,使他们能够轻松管理网站的内容。 在这个基于Spring Boot和Layui的CMS系统中,我们可以实现以下功能: 1. 文章管理:用户可以创建、编辑和删除文章,包括标题、内容、标签等信息。这些文章可以被分类、标记,便于用户进行检索和管理。 2. 用户管理:系统管理员可以管理用户账户,包括新增、修改和删除用户信息。不同的用户角色可以有不同的权限,确保系统的安全性。 3. 页面管理:用户可以创建和管理网站的页面,包括导航栏、侧边栏等页面元素。页面可以通过拖拽、布局等方式进行设计和定制。 4. 图片管理:用户可以上传、存储和管理网站所需的图片资源。图片可以被应用于文章、页面和其他网站元素。 5. 配置管理:用户可以配置网站的基本信息,如网站名称、LOGO、公司信息等,以及系统的参数和模板等。 总之,使用Spring Boot和Layui可以快速搭建一个功能强大、易于管理的CMS系统,帮助网站管理员轻松管理网站的内容,提升用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值