基于javaweb+mysql的个人博客管理系统

基于javaweb+mysql的个人博客管理系统

运行环境

Java≥8、MySQL≥5.7

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

文章的发表,分类,评论,收搜索,后台管理的的文章新 增,分类新增,评论审核,标签管理,评论管理,分类管 理,博客管理,系统管理等等功能

技术框架

Springboot SpringMVC MyBatis ThymeLeaf HTML JavaScript JQuery Ajax maven



        </li>

        <li class="chapter " data-level="1.6.1.2" data-path="../axes/cartesian/linear.html">

                <a href="../axes/cartesian/linear.html">


                    Linear

                </a>



        </li>


        <li class="chapter " data-level="1.6.2.1" data-path="../axes/radial/linear.html">

                <a href="../axes/radial/linear.html">


                    Linear

                </a>



        </li>


            </ul>

        </li>

        <li class="chapter " data-level="1.6.3" data-path="../axes/labelling.html">

                <a href="../axes/labelling.html">


                    Labelling
     * @param blogStatus     草稿,发布
     * @param enableComment  可否评论
     * @return Result
     */
    @PostMapping("/blogs/update")
    @ResponseBody
    public Result update(@RequestParam("blogId") Long blogId,
                         @RequestParam("blogTitle") String blogTitle,
                         @RequestParam(name = "blogSummary", required = false) String blogSummary,
                         @RequestParam("blogCategoryId") Integer blogCategoryId,
                         @RequestParam("blogTags") String blogTags,
                         @RequestParam("blogContent") String blogContent,
                         @RequestParam("blogStatus") Byte blogStatus,
                         @RequestParam("enableComment") Byte enableComment) {
        if (StringUtils.isEmpty(blogTitle)) {
                          @RequestParam String websiteUrl, @RequestParam String commentBody) {
        if (StringUtils.isEmpty(verifyCode)) {
            return ResultGenerator.genFailResult("验证码不能为空");
        }
        String kaptchaCode = session.getAttribute("verifyCode") + "";
        if (StringUtils.isEmpty(kaptchaCode)) {
            return ResultGenerator.genFailResult("非法请求");
        }
        if (!verifyCode.equals(kaptchaCode)) {
            return ResultGenerator.genFailResult("验证码错误");
        }
        String ref = request.getHeader("Referer");
        if (StringUtils.isEmpty(ref)) {
            return ResultGenerator.genFailResult("非法请求");
        }
        if (null == blogId || blogId < 0) {
            return ResultGenerator.genFailResult("非法请求");
        }
        if (StringUtils.isEmpty(commentator)) {
            return ResultGenerator.genFailResult("请输入称呼");
        }
        if (StringUtils.isEmpty(email)) {
            return ResultGenerator.genFailResult("请输入邮箱地址");
            });
            
            this.bindScrollEvent().bindChangeEvent();
            
            if (!recreate)
            {
                $.proxy(settings.onload, this)();
            }
            
            this.state.loaded = true;

            return this;
        },
        
        /**
         * 设置编辑器的宽度
         * Set editor width
         * 
         * @param   {Number|String} width  编辑器宽度值
         * @returns {editormd}             返回editormd的实例对象
         */
        
        width : function(width) {
                
                config.setValue(yourName);
            }
            if ("footerAbout".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
                config.setValue(footerAbout);
            }
            if ("footerICP".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
                config.setValue(footerICP);
            }
            if ("footerCopyRight".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
                config.setValue(footerCopyRight);
            }
            if ("footerPoweredBy".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
                config.setValue(footerPoweredBy);
            }
            if ("footerPoweredByURL".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
                config.setValue(footerPoweredByURL);
            }
        }
        return configMap;
    }
}

            {  
                alert("Error: The line number must be an integer.");
                return this;
            }
            
            line  = parseInt(line) - 1;
            
            if (line > count)
            {
                alert("Error: The line number range 1-" + count);
                
                return this;
            }
            
            cm.setCursor( {line : line, ch : 0} );
            
            var scrollInfo   = cm.getScrollInfo();
            var clientHeight = scrollInfo.clientHeight; 
            var coords       = cm.charCoords({line : line, ch : 0}, "local");
            

                </a>



        </li>

        <li class="chapter " data-level="1.5.3" data-path="radar.html">

                <a href="radar.html">


                    Radar

                </a>



        </li>

            {
                if (typeof CodeMirror !== "undefined") {
                    editormd.$CodeMirror = CodeMirror;
                }
                
                if (typeof marked     !== "undefined") {
                    editormd.$marked     = marked;
                }
                
                this.setCodeMirror().setToolbar().loadedDisplay();
            } 
            else 
            {
                this.loadQueues();
            }

            return this;
            var cm         = this.cm;
            var selection  = cm.getSelection();
            var selections = cm.listSelections();

            cm.replaceSelection(editormd.wordsFirstUpperCase(selection));
            cm.setSelections(selections);
        },
        
        uppercase : function() {
            var cm         = this.cm;
            var selection  = cm.getSelection();
            var selections = cm.listSelections();

            if ("footerICP".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
                config.setValue(footerICP);
            }
            if ("footerCopyRight".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
                config.setValue(footerCopyRight);
            }
            if ("footerPoweredBy".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
                config.setValue(footerPoweredBy);
            }
            if ("footerPoweredByURL".equals(config.getKey()) && StringUtils.isEmpty(config.getValue())) {
                config.setValue(footerPoweredByURL);
            }
        }
        return configMap;
    }
}

<td>Footer font size</td>
</tr>
<tr>
<td><code>footerFontStyle</code></td>
<td><code>String</code></td>
<td><code>&apos;bold&apos;</code></td>
<td>Footer font style</td>
</tr>
<tr>
<td><code>footerFontColor</code></td>
<td><code>Color</code></td>
<td><code>&apos;#fff&apos;</code></td>
<td>Footer font color</td>
</tr>
<tr>
<td><code>footerSpacing</code></td>
                #{createTime,jdbcType=TIMESTAMP},
            </if>
        </trim>
    </insert>
    <insert id="batchInsert" parameterType="java.util.List">
        INSERT into tb_blog_tag_relation(blog_id,tag_id)
        VALUES
        <foreach collection="relationList" item="item" separator=",">
            (#{item.blogId,jdbcType=BIGINT},#{item.tagId,jdbcType=INTEGER})
        </foreach>
    </insert>
    <update id="updateByPrimaryKeySelective" parameterType="com.demo.entity.BlogTagRelation">
        update tb_blog_tag_relation
        <set>
            <if test="blogId != null">
</tbody>
</table>
<h3 id="position-modes">Position Modes</h3>
<p> Possible modes are:</p>
<ul>
<li>&apos;average&apos;</li>
<li>&apos;nearest&apos;</li>
</ul>
<p>&apos;average&apos; mode will place the tooltip at the average position of the items displayed in the tooltip. &apos;nearest&apos; will place the tooltip at the position of the element closest to the event position.</p>
<p>New modes can be defined by adding functions to the Chart.Tooltip.positioners map.</p>
<p>Example:</p>
<pre><code class="lang-javascript"><span class="hljs-comment">/**
 * Custom positioner
 * @function Chart.Tooltip.positioners.custom
                blog_id,
            </if>
            <if test="blogTitle != null">
                blog_title,
            </if>
            <if test="blogSummary != null">
                blog_summary,
            </if>
            <if test="blogCategoryId != null">
                blog_category_id,
            </if>
            <if test="blogCategoryName != null">
                blog_category_name,
            </if>
            <if test="blogTags != null">
                blog_tags,
            </if>
            <if test="blogStatus != null">
            
            return this;
        },
        
        /**
         * 编辑器全屏显示
         * Fullscreen show
         * 
         * @returns {editormd}         返回editormd的实例对象
         */
        
        fullscreen : function() {
            
            var _this            = this;
            var state            = this.state;
            var editor           = this.editor;
            var preview          = this.preview;
            var toolbar          = this.toolbar;
            var settings         = this.settings;
            var fullscreenClass  = this.classPrefix + "fullscreen";
    }

    /** Creates a non-strict view of a slice of this $coll.
     *
     *  Note: the difference between `view` and `slice` is that `view` produces
     *        a view of the current $coll, whereas `slice` produces a new $coll.
     * 
     *  Note: `view(from, to)` is equivalent to `view.slice(from, to)`
     *  $orderDependent
     * 
     *  @param from   the index of the first element of the view
     *  @param until  the index of the element following the view
     *  @return a non-strict view of a slice of this $coll, starting at index `from`
     *  and extending up to (but not including) index `until`.
     */
    def view(from: Int, until: Int): TraversableView[A, Repr] = view.slice(from, until)

    /** Creates a non-strict filter of this $coll.
     *
     *  Note: the difference between `c filter p` and `c withFilter p` is that
     *        the former creates a new collection, whereas the latter only
     *        restricts the domain of subsequent `map`, `flatMap`, `foreach`,
     *        and `withFilter` operations.

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值