SpringBoot整合Themleaf+Markdown

pom文件坐標(biāo):

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>net.sourceforge.nekohtml</groupId>
            <artifactId>nekohtml</artifactId>
            <version>1.9.22</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

application.properties文件配置:

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/basedb?characterEncoding=utf-8
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update

spring.thymleaf.cache = false
spring.thymeleaf.mode=HTML
spring.thymeleaf.suffix=.html


cbs.imagesPath=file:/E:/images/

實(shí)體類就不說(shuō)了兴想,主要是上傳圖片文件部分幢哨,上傳之前,因?yàn)樯蟼鞯膱D片不是放在項(xiàng)目下嫂便,而是其他路徑捞镰,這里是E:/images/路徑下,為了能在瀏覽器中能訪問(wèn)到E:/images/下的圖片,需要構(gòu)建一個(gè)虛擬地址:

@Configuration
public class MyWebAppConfigurer extends WebMvcConfigurerAdapter {
    // 獲取配置文件中圖片的路徑
    @Value("${cbs.imagesPath}")
    private String mImagesPath;


    // 訪問(wèn)圖片方法
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        if (mImagesPath.equals("") || mImagesPath.equals("${cbs.imagesPath}")) {
            String imagesPath = MyWebAppConfigurer.class.getClassLoader().getResource("").getPath();
            if (imagesPath.indexOf(".jar") > 0) {
                imagesPath = imagesPath.substring(0, imagesPath.indexOf(".jar"));
            } else if (imagesPath.indexOf("classes") > 0) {
                imagesPath = "file:" + imagesPath.substring(0, imagesPath.indexOf("classes"));
            }
            imagesPath = imagesPath.substring(0, imagesPath.lastIndexOf("/")) + "/images/";
            mImagesPath = imagesPath;
            System.out.println(mImagesPath);
        }
        LoggerFactory.getLogger(MyWebAppConfigurer.class).info("imagesPath=" + mImagesPath);
        registry.addResourceHandler("/images/**").addResourceLocations(mImagesPath);
        super.addResourceHandlers(registry);
    }
}

接下來(lái)就是上傳文件的處理:

//處理文件上傳
    @RequestMapping(value="/uploadimg")
    public @ResponseBody Map<String,Object> demo(@RequestParam(value = "editormd-image-file", required = false) MultipartFile file, HttpServletRequest request) {
        Map<String,Object> resultMap = new HashMap<String,Object>();
        String fileName = file.getOriginalFilename();
        //保存
        try {
            byte[] bytes = file.getBytes();
            Path path = Paths.get(UPLOADED_FOLDER + file.getOriginalFilename());
            Files.write(path, bytes);
            resultMap.put("success", 1);
            resultMap.put("message", "上傳成功岸售!");
            resultMap.put("url","../images/"+fileName);
        } catch (Exception e) {
            resultMap.put("success", 0);
            resultMap.put("message", "上傳失敿!!");
            e.printStackTrace();
        }
        System.out.println(resultMap.get("success"));
        return resultMap;


    }

后端部分已經(jīng)寫(xiě)好凸丸,現(xiàn)在來(lái)處理前端部分

網(wǎng)上有很多Markdown編輯器拷邢,可以自行百度,這是用的是editormd這款富文本編輯器屎慢,把下載好的editormd文件夾加到static文件夾中:

這里寫(xiě)圖片描述

edit.html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="utf-8"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <meta name="viewport" content="width=device-width, initial-scale=1"/>
    <title>Edit</title>
    <link rel="stylesheet" th:href="@{/editormd/css/editormd.min.css}"
          href="/editormd/css/editormd.min.css"/>
</head>
<body>
<div>
    <input type="text" name="title" style="width: 500px" id="title"/>
    <input type="submit" title="發(fā)布" id="submitBtn" />
</div>
<!--class="editormd"-->
<div  id="test-editormd">
    <textarea  style="display:none;" name="test-editormd-markdown-doc" id="content"></textarea>
    <!-- 第二個(gè)隱藏文本域瞭稼,用來(lái)構(gòu)造生成的HTML代碼,方便表單POST提交腻惠,這里的name可以任意取环肘,后臺(tái)接受時(shí)以這個(gè)name鍵為準(zhǔn) -->
    <textarea class="editormd-html-textarea" name="text" id="htmlContent"></textarea>
</div>
<script th:src="@{/js/jquery.min.js}" src="/js/jquery.min.js"></script>
<script th:src="@{/editormd/js/editormd.min.js}" src="/editormd/js/editormd.min.js"></script>
<script type="text/javascript">
    $(function() {
        editormd("test-editormd", {
            width: "1000px",
            height: 640,
            syncScrolling : "single",
            //你的lib目錄的路徑,我這邊用JSP做測(cè)試的
            tocm : true, // Using [TOCM]
            tex : true, // 開(kāi)啟科學(xué)公式TeX語(yǔ)言支持妖枚,默認(rèn)關(guān)閉
            flowChart : true, // 開(kāi)啟流程圖支持廷臼,默認(rèn)關(guān)閉
            path    : "/editormd/lib/",
            //這個(gè)配置在simple.html中并沒(méi)有,但是為了能夠提交表單绝页,使用這個(gè)配置可以讓構(gòu)造出來(lái)的HTML代碼直接在第二個(gè)隱藏的textarea域中荠商,方便post提交表單。
            saveHTMLToTextarea : true,
            imageUpload : true,
            imageFormats : [ "jpg", "jpeg", "gif", "png", "bmp", "webp" ],
            imageUploadURL : "/uploadimg",
            onload: function () {
                this.width("100%");
                this.height(480);
            }
        });
        $("#submitBtn").click(
            function () {
                submitblog();
            }
        )
        function submitblog() {
            var  title = $("#title").val();
            var content = $("#content").val();
            var htmlContent = $("#htmlContent").val();
            $.ajax({
                url: "submit",
                data: {title: title, content:content,htmlContent:htmlContent},
                success:function () {
                    alert("發(fā)布成功");
                },
                error:function () {
                    alert("發(fā)布失敗");
                }
            })
        }
    });
</script>

</body>
</html>

啟動(dòng)項(xiàng)目:

  1. 編輯文章
這里寫(xiě)圖片描述
  1. 查看文章
這里寫(xiě)圖片描述
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末续誉,一起剝皮案震驚了整個(gè)濱河市莱没,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌酷鸦,老刑警劉巖饰躲,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異臼隔,居然都是意外死亡嘹裂,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)摔握,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)寄狼,“玉大人,你說(shuō)我怎么就攤上這事氨淌〔蠢ⅲ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵盛正,是天一觀的道長(zhǎng)删咱。 經(jīng)常有香客問(wèn)我,道長(zhǎng)豪筝,這世上最難降的妖魔是什么痰滋? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任摘能,我火速辦了婚禮,結(jié)果婚禮上即寡,老公的妹妹穿的比我還像新娘徊哑。我一直安慰自己,他們只是感情好聪富,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布莺丑。 她就那樣靜靜地躺著,像睡著了一般墩蔓。 火紅的嫁衣襯著肌膚如雪梢莽。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,821評(píng)論 1 290
  • 那天奸披,我揣著相機(jī)與錄音昏名,去河邊找鬼。 笑死阵面,一個(gè)胖子當(dāng)著我的面吹牛轻局,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播样刷,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼仑扑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了置鼻?” 一聲冷哼從身側(cè)響起镇饮,我...
    開(kāi)封第一講書(shū)人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎箕母,沒(méi)想到半個(gè)月后储藐,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嘶是,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年钙勃,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聂喇。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辖源,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出授帕,到底是詐尸還是另有隱情同木,我是刑警寧澤浮梢,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布跛十,位于F島的核電站,受9級(jí)特大地震影響秕硝,放射性物質(zhì)發(fā)生泄漏芥映。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望奈偏。 院中可真熱鬧坞嘀,春花似錦、人聲如沸惊来。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)裁蚁。三九已至矢渊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間枉证,已是汗流浹背矮男。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留室谚,地道東北人毡鉴。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像秒赤,于是被迫代替她去往敵國(guó)和親猪瞬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349