基于 Spring Boot 博客系統開發(十)

基于 Spring Boot 博客系統開發(十)

本系統是簡易的個人博客系統開發,為了更加熟練地掌握 SprIng Boot 框架及相關技術的使用。🌿🌿🌿
基于 Spring Boot 博客系統開發(九)👈👈

文章管理實現

主要實現功能有文章發布、文章編輯、文章刪除

文章發布和編輯實現

AdminController 添加編輯頁面路由

    @RequestMapping("/edit")public String edit(Model model){model.addAttribute("article",new Article());return "admin/edit";}@RequestMapping("/edit/{id}")public String edit(@PathVariable("id") Long id,Model model){Article  article = articleService.getById(id);model.addAttribute("article",article);return "admin/edit";}

ArticleController 添加文章保存或修改方法

@Controller
@RequestMapping("/article")
public class ArticleController {@Autowiredprivate IArticleService articleService;@RequestMapping("/saveOrUpdate")@ResponseBodypublic AjaxResult saveOrUpdate(Article article){if(article.getId() == null){article.setCreated(LocalDate.now());}else{article.setModified(LocalDate.now());}articleService.saveOrUpdate(article);return AjaxResult.success();}

saveOrUpdate:根據id是否為空 判斷是否執行添加或者修改
當文章對象 id 不為null 說明本方法需要進行修改,否則執行添加操作

編輯頁面表單

<form id="articleForm"><input type="hidden" name="id" th:value="${article.id}" id="id"/><input type="hidden" name="allowComment" value="true" id="allow_comment"/><input type="hidden" name="content"  id="content-editor"/><div class="form-group col-md-6" style="padding: 0 10px 0 0;"><input type="text" class="form-control" placeholder="請輸入文章標題(必須)" th:value="${article.title}" name="title" required="required" aria-required="true"/></div><div class="form-group col-md-6" style="padding: 0 10px 0 0;"><input name="tags" id="tags" type="text" class="form-control" th:value="${article.tags}" placeholder="請輸入文章標簽" /></div><div class="clearfix"></div><div id="md-container" class="form-group"><textarea id="md-editor" th:text="${article.content}"></textarea></div><div class="clearfix"></div><div class="text-right"><a class="btn btn-default waves-effect waves-light" href="/admin/list">返回列表</a><button type="button" id="saveBtn" class="btn btn-primary waves-effect waves-light" >保存文章</button></div>
</form>

點擊保存文章按鈕事件

        $("#saveBtn").click(function(){$("#content-editor").val(mditor.value)$.ajax({type: 'post',url: '/article/saveOrUpdate',data: $("#articleForm").serialize(),async: true,dataType: 'json',success: function (result) {if(result.code == 0){alert("文章發布成功");window.location.href="/admin/list";}else{alert(result.msg)}console.log(result)}});});

點擊文章編輯按鈕代碼

 <a th:href="${'/admin/edit/'+article.id}" class="btn btn-primary btn-sm waves-effect waves-light m-b-5"><i class="fa fa-edit"></i> <span>編輯</span></a>

點擊發布文章菜單,編輯文章內容保存
在這里插入圖片描述
保存成功在文章列表可查詢到
在這里插入圖片描述

編輯文章的回顯效果
在這里插入圖片描述

文章刪除實現

首先,在ArticleController.java 中 添加 delete 方法

    @RequestMapping("/delete")@ResponseBodypublic AjaxResult delete(Long id){articleService.removeById(id);return AjaxResult.success();}

然后添加文章列表刪除按鈕代碼,當點擊刪除按鈕執行 delArticle 方法腳本

<td><a th:href="${'/admin/edit/'+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" th:href="${'/article/'+article.id}" ><i class="fa fa-rocket"></i> <span>預覽</span></a>
</td>

delArticle 方法腳本

        function delArticle(id) {if(confirm('確定刪除該文章嗎?')){$.ajax({type:'post',url : '/article/delete',data: {id:id},dataType: 'json',success: function (result) {if (result.code==0) {window.alert("文章刪除成功");window.location.reload();} else {window.alert(result.msg || '文章刪除失敗')}}});}}

點擊刪除,提示確認刪除?,確定刪除成功后重新加載當前頁面

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13107.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13107.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13107.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL 開源到商業(四):MySQL 成了燙手山芋

前文提到&#xff0c;Monty 得知 Oracle 收購 Sun 的提案得到了美國政府的支持后&#xff0c;發動社區用戶向歐盟委員會請愿&#xff0c;希望通過反壟斷的名義讓 Oracle 知難而退&#xff0c;進而實現剝離 MySQL 的目的。而 Oracle 為了得到歐盟委員會的許可&#xff0c;迅速提…

Golang | Leetcode Golang題解之第91題解碼方法

題目&#xff1a; 題解&#xff1a; func numDecodings(s string) int {n : len(s)// a f[i-2], b f[i-1], c f[i]a, b, c : 0, 1, 0for i : 1; i < n; i {c 0if s[i-1] ! 0 {c b}if i > 1 && s[i-2] ! 0 && ((s[i-2]-0)*10(s[i-1]-0) < 26) {c…

Navicat 干貨 | 探索 PostgreSQL 中不同類型的約束

PostgreSQL 的一個重要特性之一是能夠對數據實施各種約束&#xff0c;以確保數據完整性和可靠性。今天的文章中&#xff0c;我們將概述 PostgreSQL 的各種約束類型并結合免費的 "dvdrental" 示例數據庫 中的例子探索他們的使用方法。 1. 檢查約束&#xff1a; 檢查…

顏色的表示和還原(一)

這篇文章主要提煉于ICCV 2019 Tutorial: Understanding Color and the In-Camera Image Processing Pipeline for Computer Vision。里面深入淺出地講解了很多ISP中的基礎知識&#xff0c;這里主要對顏色相關的部分做一點總結。 假設不成立了 相機經常被簡單地看作是衡量光線…

STM32學習計劃

前言&#xff1a; 這里先記錄下STM32的學習計劃。 2024/05/08 今天我正在學習的是正點原子的I.MX6ULL APLHA/Mini 開發板的 Linux 之ARM裸機第二期開發的視頻教程&#xff0c;會用正點原子的I.MX6ULL開發板學習第二期ARM裸機開發的教程&#xff0c;然后是學習完正點原子的I.M…

Mybatis基礎操作-刪除

Mybatis基礎操作-刪除 刪除 package com.itheima.mapper;import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Mapper;Mapper //在運行時&#xff0c;會自動生成該接口的實現類對象&#xff08;代理對象&#xff09;&#xff0c;并且將該對象…

QT:QML與C++交互

目錄 一.介紹 二.pro文件添加模塊 三.h文件 四.cpp文件 五.注冊 六.調用 七.展示效果 八.代碼 1.qmlandc.h 2.qmlandc.cpp 3.main.cpp 4.qml 一.介紹 在 Qt 中&#xff0c;QML 與 C 交互是非常重要的&#xff0c;因為它允許開發人員充分利用 QML 和 C 各自的優勢&…

我21歲玩“擼貨”,被騙1000多萬

最近&#xff0c;擼貨業界內發生了一些頗受矚目的事件。 在鄭州&#xff0c;數碼檔口下面搶手團長跑路失聯&#xff0c;涉及金額幾百萬&#xff0c;在南京&#xff0c;一家知名的電商平臺下的收貨站點突然失聯&#xff0c;涉及金額高達一千多萬&#xff0c;令眾多交易者震驚不已…

用scp將文件夾從一個服務器備份到另一個服務器

用scp將文件夾從一個服務器備份到另一個服務器 問題描述解決辦法 問題描述 公式服務器要回收了&#xff0c;如何將數據備份到另一個服務器上。 解決辦法 代碼如下 scp -P 32660 -r /path/of/the/original/file username10.258.36.187:/path/of/the/target/filescp -P 目標…

YOLOv8改進 | 圖像修復 | 適用多種復雜場景的全能圖像修復網絡AirNet助力YOLOv8檢測(全網獨家首發)

一、本文介紹 本文給大家帶來的改進機制是一種適用多種復雜場景的全能圖像修復網絡AirNet&#xff0c;其由對比基降解編碼器&#xff08;CBDE&#xff09;和降解引導修復網絡&#xff08;DGRN&#xff09;兩個神經模塊組成&#xff0c;能夠在未知損壞類型和程度的情況下恢復受…

Java | Leetcode Java題解之第92題反轉鏈表II

題目&#xff1a; 題解&#xff1a; class Solution {public ListNode reverseBetween(ListNode head, int left, int right) {// 設置 dummyNode 是這一類問題的一般做法ListNode dummyNode new ListNode(-1);dummyNode.next head;ListNode pre dummyNode;for (int i 0; …

【SQL】SQL常見面試題總結(3)

目錄 1、聚合函數1.1、SQL 類別高難度試卷得分的截斷平均值&#xff08;較難&#xff09;1.2、統計作答次數1.3、得分不小于平均分的最低分 2、分組查詢2.1、平均活躍天數和月活人數2.2、月總刷題數和日均刷題數2.3、未完成試卷數大于 1 的有效用戶&#xff08;較難&#xff09…

藍橋杯 EDA 組 歷屆國賽真題解析

一、2021年國賽真題 1.1 CN3767 太陽能充電電路 CN3767 是具有太陽能電池最大功率點跟蹤功能的 4A&#xff0c;12V 鉛酸電池充電管理集成電路。 最大功率點應指的是電池板的輸出電壓&#xff0c;跟蹤電壓其做保護。當然 CN3767 也可以直接使用直流充電&#xff0c;具體可以閱讀…

ROS 2邊學邊練(49)-- 生成URDF文件

前言 大多數機器人學家都在團隊中工作&#xff0c;這些團隊中往往包括機械工程師&#xff0c;他們負責開發機器人的CAD模型。與手動創建URDF&#xff08;統一機器人描述格式&#xff09;文件不同&#xff0c;可以從許多不同的CAD和建模程序中導出URDF模型。這些導出工具通常…

[POJ-1321]棋盤問題

題源:POJ-1321 深搜板子題&#xff0c;非常基礎&#xff0c;難度不大 思路1&#xff1a;廣搜行 深搜列 #include<iostream> #include<cstring> using namespace std; const int MAX9; int a,b,ans; char m[MAX][MAX]; //深搜列&#xff0c;廣搜行 bool h[MAX]; v…

DS高階:跳表

一、skiplist 1.1 skiplist的概念 skiplist本質上也是一種查找結構&#xff0c;用于解決算法中的查找問題&#xff0c;跟平衡搜索樹和哈希表的價值是一樣的&#xff0c;可以作為key或者key/value的查找模型。skiplist是由William Pugh發明的&#xff0c;最早出現于他在1990年發…

Python學習之路 | Python基礎語法(一)

數據類型 Python3 中常見的數據類型有&#xff1a; Number&#xff08;數字&#xff09;String&#xff08;字符串&#xff09;bool&#xff08;布爾類型&#xff09;List&#xff08;列表&#xff09;Tuple&#xff08;元組&#xff09;Set&#xff08;集合&#xff09;Dict…

鴻蒙HDC命令行工具:模擬操作

模擬操作 uinput用于輸入模擬操作&#xff0c;其命令幫助手冊為&#xff1a; > hdc shell uinput --help Usage: uinput <option> <command> <arg>... The option are: -M --mouse //模擬鼠標操作 commands for mouse: -m <dx> <d…

【Image captioning】基于檢測模型網格特征提取——以Sydeny為例

【Image captioning】基于檢測模型網格特征提取——以Sydeny為例 今天,我們將重點探討如何利用Faster R-CNN檢測模型來提取Sydeny數據集的網格特征。具體而言,這一過程涉及通過Faster R-CNN模型對圖像進行分析,進而抽取出關鍵區域的特征信息,這些特征在網格結構中被系統地…

1金融風控相關業務介紹

金融風控相關業務介紹 學習目標 知道常見信貸風險知道機器學習風控模型的優勢知道信貸領域常用術語含義1 信貸&風控介紹 信貸業務,就是貸款業務,是商業銀行和互聯網金融公司最重要的資產業務和主要贏利手段 通過放款收回本金和利息,扣除成本后獲得利潤。貸款平臺預測有…