JavaWeb博客管理系统03

首页 index.jsp

<%--
  Created by IntelliJ IDEA.
  User: 17140
  Date: 2021/6/11
  Time: 21:10
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>博客</title>
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <script src="js/jquery.js"></script>
    <script src="js/bootstrap.bundle.min.js"></script>
    <link href="/css/font_1446720_ftf15in5gss.css" rel="stylesheet">
  </head>

  <body>
    <jsp:include page="heard.jsp"></jsp:include>
  <div style="margin: 80px 0px;">
    <jsp:include page="content.jsp"></jsp:include>
<%--    <%@include file="content.jsp"%>--%>
  </div>
  <div class="fixed-bottom">
    <jsp:include page="footer.jsp"></jsp:include>
  </div>
  </body>
</html>

头部 heard.jsp

image-20210619112824886

<%--
  Created by IntelliJ IDEA.
  User: 17140
  Date: 2021/6/11
  Time: 21:10
  To change this template use File | Settings | File Templates.
--%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>

<head>
    <title>博客</title>
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <script src="js/jquery.js"></script>
    <script src="js/bootstrap.bundle.min.js"></script>
    <link href="/css/font_1446720_ftf15in5gss.css" rel="stylesheet">
</head>
<div class="container-fluid fixed-top" style="padding: 0px">
    <div class="row no-gutters">
        <div style="height: 56px" class="col-2 bg-dark text-light">
            <h4 style="line-height: 56px;text-align: center;"><a style="color: white;text-decoration:none;" href="/index.jsp">博客</a></h4>
        </div>
        <div class="col-8 container-fluid row no-gutters">
            <div class="col-2 bg-dark"></div>
            <nav class="navbar navbar-expand-lg bg-dark navbar-dark col-10">
                <ul class="navbar-nav">
                    <li style="margin-left: 20px" class="nav-item active">
                        <a class="nav-link" href="index.jsp">首页</a>
                    </li>
                    <li class="nav-item " style="margin-left: 20px">
                        <a class="nav-link" href="category.jsp">分类</a>
                    </li>
                    <li style="margin-left: 20px" class="nav-item">
                        <a class="nav-link" href="timeline.jsp">归档</a>
                    </li>
                    <li style="margin-left: 20px" class="nav-item">
                        <a class="nav-link" href="tags.jsp">标签</a>
                    </li>
<%--                    <li style="margin-left: 20px" class="nav-item">--%>
<%--                        <a class="nav-link" href="index.jsp">关于</a>--%>
<%--                    </li>--%>
                </ul>
                <form style="margin-left: 60px" class="form-inline my-2 my-lg-0">
                    <input class="form-control mr-sm-2 search_inp"  type="search" placeholder="Search" aria-label="Search">
                    <button class="btn btn-outline-success search_btn my-2 my-sm-0" type="button">Search</button>
                </form>
            </nav>
        </div>
        <div style="height: 56px" class="col-2 bg-dark text-light">
<%--            TODO --%>
            <c:if test="${username== null}">
                    <button type="button" class="btn btn-dark text-light btn_login" style="margin-top: 10px">登录/注册</button>
            </c:if>
            <c:if test="${username != null}">
                <i id="userico" role="button" data-toggle="dropdown" aria-expanded="false" class="iconfont icon-touxiang" style="font-size: 24px;position: absolute;top: 10px;left: 70px"></i>
                <div class="dropdown-menu" aria-labelledby="userico">
                    <a class="dropdown-item" href="/userinfo.jsp">个人资料</a>
                    <a class="dropdown-item" href="article.jsp">文章编辑</a>
                    <a class="dropdown-item" href="/userArcicalList.jsp">文章管理</a>
                    <a class="dropdown-item login_out" href="/Login">退出</a>
                </div>
            </c:if>
        </div>
    </div>
</div>
<script>
    $(".btn_login").click(function () {
        window.location.href = "login.jsp";
    })
    $(".search_btn").click(function () {
        window.location.href = "searchList.jsp?keyword="+$(".search_inp").val();
    })
</script>
</html>


内容区 content.jsp

<%--
  Created by IntelliJ IDEA.
  User: 17140
  Date: 2021/6/12
  Time: 18:20
  To change this template use File | Settings | File Templates.
--%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>博客</title>
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <script src="js/jquery.js"></script>
    <script src="js/bootstrap.bundle.min.js"></script>
    <link href="/css/font_1446720_ftf15in5gss.css" rel="stylesheet">
</head>
<body>

<div class="container-fluid row no-gutters" style="padding: 0px">
    <div class="col-1"></div>
    <div class="col-10 container-fluid row">
        <div class="col-9">
            <%--            轮播图--%>
            <div id="demo" class="carousel slide" data-ride="carousel">

                <!-- 指示符 -->
                <ul class="carousel-indicators">
                    <li data-target="#demo" data-slide-to="0" class="active"></li>
                    <li data-target="#demo" data-slide-to="1"></li>
                    <li data-target="#demo" data-slide-to="2"></li>
                </ul>

                <!-- 轮播图片 -->
                <div class="carousel-inner">
                    <div class="carousel-item active">
                        <img src="/img/img_fjords_wide.jpg">
                    </div>
                    <div class="carousel-item">
                        <img src="img/2.jpg">
                    </div>
                    <div class="carousel-item">
                        <img src="/img/3.jpg">
                    </div>
                </div>

                <!-- 左右切换按钮 -->
                <a class="carousel-control-prev" href="#demo" data-slide="prev">
                    <span class="carousel-control-prev-icon"></span>
                </a>
                <a class="carousel-control-next" href="#demo" data-slide="next">
                    <span class="carousel-control-next-icon"></span>
                </a>

            </div>

            <%--    大银幕--%>
            <%--TODO--%>
            <div class="cotence_middle">

            </div>
        </div>
        <div class="col-3">

            <c:if test="${username!=null}">
                <div class="card" style="width: 18rem;" style="margin-top: 50px">
                    <img style="width: 150px;height: 150px;margin: 0 auto;border-radius: 50%"
                         src="https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3101694723,748884042&fm=26&gp=0.jpg"
                         class="card-img-top" alt="...">
                    <div class="card-body text-center">
                        <h5 class="card-title">${username}</h5>
                        <p></p>
                        <button type="button" class="btn btn-dark rizhi">
                            文章
                            <span class="badge badge-light">0</span>
                        </button>
                        <button type="button" class="btn btn-success fenlei" style="margin-left: 20px">
                            分类
                            <span class="badge badge-light">0</span>
                        </button>
                        <button type="button" class="btn btn-warning biaoqian" style="margin-top: 10px">
                            标签
                            <span class="badge badge-light">0</span>
                        </button>
                    </div>
                </div>
            </c:if>

            <c:if test="${username==null}">
                <div class="card" style="width: 18rem;" style="margin-top: 50px">
                    <img style="width: 150px;height: 150px;margin: 0 auto;border-radius: 50%"
                         src="https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3101694723,748884042&fm=26&gp=0.jpg"
                         class="card-img-top" alt="...">
                    <div class="card-body text-center">
                        <h5 class="card-title">欢迎使用博客</h5>
                        <p></p>
                        <button type="button" class="btn btn-dark rizhiAll">
                            文章
                            <span class="badge badge-light">0</span>
                        </button>
                        <button type="button" class="btn btn-success fenleiAll" style="margin-left: 20px">
                            分类
                            <span class="badge badge-light">0</span>
                        </button>
                        <button type="button" class="btn btn-warning biaoqianAll" style="margin-top: 10px">
                            标签
                            <span class="badge badge-light">0</span>
                        </button>
                    </div>
                </div>
            </c:if>

            <ul class="list-group col remen" style="margin-top: 50px">
                <li class="list-group-item active bg-dark text-center">热门文章</li>
            </ul>

            <ul class="list-group col tuijian" style="margin-top: 50px">
                <li class="list-group-item active bg-dark text-center ">文章推荐</li>
            </ul>

            <ul class="list-group col" style="margin-top: 50px">
                <li class="list-group-item active bg-dark text-center">标签</li>
                <div class="list-group-item tagsli">
                </div>
            </ul>


            <ul class="list-group col" style="margin-top: 50px">
                <li class="list-group-item active bg-dark text-center">技术博客</li>
                <li class="list-group-item">
                    <a class="btn-link text-dark" href="#" style="width: 50%">前端博客</a>
                </li>
                <li class="list-group-item">
                    <a class="btn-link text-dark" href="#" style="width: 50%">前端技术</a>
                </li>
                <li class="list-group-item">
                    <a class="btn-link text-dark" href="#" style="width: 50%">web前端开发</a>
                </li>
            </ul>

            <ul class="list-group col" style="margin-top: 50px">
                <li class="list-group-item active bg-dark text-center">站点消息</li>
                <li class="list-group-item">
                    站点运行时间:<span id="show_time"></span>
                </li>
                <li class="list-group-item count">
                    访问量:
                </li>
                <a href="pre-html.jsp?id=46"></a>
            </ul>

        </div>
    </div>
    <div class="col-1"></div>
</div>

<script>
    <%--    生成标签  --%>
    $.ajax({
        url: "/TagsServlet",
        type: "GET",
        success: function (data) {
            const json = JSON.parse(data);
            json.forEach((elem, index) => {
                $(".tagsli").append(`<span value=` + elem.id + ` class="badge badge-primary"style="min-width: 50px;padding: 5px;margin: 10px 10px 0 0">` + elem.tagName + `</span>`)
            });
            $(".tagsli span").each(function () {
                $(this).css("background-color", Color());
            });
            $(".tagsli span").click(function () {
                // 标签id  $(this).attr("value")
                // console.log("/taglist.jsp?id="+$(this).attr("value")+"&&tag="+$(this).text())
                window.location.href = "/taglist.jsp?id=" + $(this).attr("value") + "&&tag=" + $(this).text()
            });
        }
    })
    $.ajax({
        url: "/CountServlet",
        type: "GET",
        success: function (data) {
            $(".count").text("访问量:" + data)
            // console.log(data)
        }
    })

    $.ajax({
        url: "/ArtTagServlet",
        type: "GET",
        data:{username:"123"},
        success: function (data) {
            console.log(data)
            let json = JSON.parse(data)
            $(".rizhi span").text(json.articleSize)
            $(".fenlei span").text(json.categorySize)
            $(".biaoqian span").text(json.tagSize)

        }
    })

    $.ajax({
        url: "/BlogCount",
        type: "GET",
        data:{username:"123"},
        success: function (data) {
            console.log(data)
            let json = JSON.parse(data)
            $(".rizhiAll span").text(json.articleSize)
            $(".fenleiAll span").text(json.categorySize)
            $(".biaoqianAll span").text(json.tagSize)

        }
    })

    $.ajax({
        url: "/HotCount",
        type: 'GET',
        success: function (data) {
            //对于获取的数据执行相关的操作,如:绑定、显示等
            const json = JSON.parse(data);
            json.forEach((elem, index) => {
                let a = "<a style='color: black' href=\"pre-html.jsp?id=" + elem.id + "\">"
                $(".remen").append("<li class=\"list-group-item\">" +a + elem.title+"</a></li>")
            })

        }
    })

    //获取文章
    $.ajax({
        url: "/articlelist",
        type: 'GET',
        success: function (data) {
            //对于获取的数据执行相关的操作,如:绑定、显示等
            const json = JSON.parse(data);
            json.forEach((elem, index) => {
                let a = "<a style='color: black' href=\"pre-html.jsp?id=" + elem.id + "\">"
                if (index > 4) {
                    return
                }
                $(".tuijian").append("<li class=\"list-group-item\">" + a +elem.title+
                    "</a></li>")
                // $(".cotence_middle").append('<div class="jumbotron" style="margin-top: 35px">' + a + '<h1 class="display-4">' + elem.title + '</h1><p class="lead">' + elem.id + '</p> </a></div>');
                $(".cotence_middle").append("<div class=\"jumbotron\" style=\"margin-top: 30px\">\n" + a +
                    "                        <h1 class=\"text-center title\" style=\"font-weight: bold;color: #0a001f\">" +elem.title+
                    "</h1></a>\n" +
                    "                    <ol class=\"list-unstyled\">\n" +
                    "                        <li class=\"author\">\n" +
                    "                            <i class=\"iconfont icon-zuozhe\"></i>作者:<span>" +elem.author+
                    "</span>\n" +
                    "                        </li>\n" +
                    "                        <li class=\"score\">\n" +
                    "                            <i class=\"iconfont icon-zuozheicon-defen\"></i>文章得分:<span>" +elem.score+
                    "</span>\n" +
                    "                        </li>\n" +
                    "                        <li class=\"createtime\">\n" +
                    "                            <i class=\"iconfont icon-fabushijian\"></i>发布时间 <span>" +dateFormat("YYYY-mm-dd", new Date(elem.createtime))+
                    "</span>\n" +
                    "                        </li>\n" +
                    "                        <li class=\"updatatime\">\n" +
                    "                            <i class=\"iconfont icon-gengxinshijian\"></i>更新时间 <span>" +dateFormat("YYYY-mm-dd", new Date(elem.updatatime))+
                    "</span>\n" +
                    "                        </li>\n" +
                    "                    </ol>\n" +
                    "                    <div style=\"width: 100%\">"+ a+
                    "                        <button type=\"button\" class=\"btn btn-outline-dark\" style=\"margin-left: 350px;margin-top: 30px\">阅读全文</button>\n" +
                    "                    </a></div>\n" +
                    "                </div>")
            });

        }
    })

    function Color() {
        var r = Math.floor(Math.random() * 255);
        var g = Math.floor(Math.random() * 255);
        var b = Math.floor(Math.random() * 255);
        var color = 'rgba(' + r + ',' + g + ',' + b + ',0.8)';
        return color;
    }

    function dateFormat(fmt, date) {
        let ret;
        const opt = {
            "Y+": date.getFullYear().toString(),        // 年
            "m+": (date.getMonth() + 1).toString(),     // 月
            "d+": date.getDate().toString(),            // 日
            "H+": date.getHours().toString(),           // 时
            "M+": date.getMinutes().toString(),         // 分
            "S+": date.getSeconds().toString()          // 秒
            // 有其他格式化字符需求可以继续添加,必须转化成字符串
        };
        for (let k in opt) {
            ret = new RegExp("(" + k + ")").exec(fmt);
            if (ret) {
                fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
            }
            ;
        }
        ;
        return fmt;
    }

</script>
<script type="text/javascript" language="javascript">

    function secondToDate(second) {
        if (!second) {
            return 0;
        }
        var time = new Array(0, 0, 0, 0, 0);
        if (second >= 365 * 24 * 3600) {//计算年
            time[0] = parseInt(second / (365 * 24 * 3600));
            second %= 365 * 24 * 3600;
        }
        if (second >= 24 * 3600) {//计算天
            time[1] = parseInt(second / (24 * 3600));
            second %= 24 * 3600;
        }
        if (second >= 3600) {//计算时
            time[2] = parseInt(second / 3600);
            second %= 3600;
        }
        if (second >= 60) {//计算分
            time[3] = parseInt(second / 60);
            second %= 60;
        }
        if (second > 0) {//计算秒
            time[4] = second;
        }
        return time;
    }

    function setTime() {
        var create_time = Math.round(new Date(Date.UTC(2021, 5, 12, 0, 0, 0)).getTime() / 1000);//设置起始时间为2017年1月1日0点整,注意月份取值是0-11。
        var timestamp = Math.round((new Date().getTime() + 8 * 60 * 60 * 1000) / 1000);
        currentTime = secondToDate((timestamp - create_time));
        currentTimeHtml = currentTime[0] + '年' + currentTime[1] + '天' + currentTime[2] + '时' + currentTime[3] + '分' + currentTime[4] + '秒';
        document.getElementById("show_time").innerHTML = currentTimeHtml;
    }

    setInterval(setTime, 1000);

</script>
</body>
<style>
    /*包含以下四种的链接*/
    .cotence_middle a {
        text-decoration: none;
    }

    /*正常的未被访问过的链接*/
    .cotence_middle a:link {
        text-decoration: none;
    }

    /*已经访问过的链接*/
    .cotence_middle a:visited {
        text-decoration: none;
    }

    /*鼠标划过(停留)的链接*/
    .cotence_middle a:hover {
        text-decoration: none;
    }

    /* 正在点击的链接*/
    .cotence_middle a:active {
        text-decoration: none;
    }
</style>
<style>
    body {
        padding: 40px;
    }

    #layout > header, .btns {
        width: auto;
    }

    #sidebar {
        width: 300px;
        height: 100%;
        position: fixed;
        top: 0;
        right: 0;
        overflow: hidden;
        background: #fff;
        z-index: 100;
        padding: 18px;
        border: 1px solid #ddd;
        border-top: none;
        border-bottom: none;
    }

    #sidebar:hover {
        overflow: auto;
    }

    #sidebar h1 {
        font-size: 16px;
    }

    #custom-toc-container {
        padding-left: 0;
    }

    #test-editormd-view, #test-editormd-view2 {
        padding-left: 0;
        padding-right: 430px;
        margin: 0;
    }

    .list-unstyled {
        width: 85%;
        margin: 20px auto;
    }

    .list-unstyled li {
        margin-left: 20px;
        display: inline-block;
    }
</style>
</html>

底部 footer.jsp

<%--
  Created by IntelliJ IDEA.
  User: 17140
  Date: 2021/6/12
  Time: 20:58
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>前端</title>
</head>
<body>
<div class="bg-dark" style="width: 100%;">
    <div class="bg-dark text-light" style="margin: 0px auto;width: 50%;height: 40px;padding-top: 10px;font-size: 12px;">

    </div>
</div>
</body>
</html>

分类页 category.jsp

<%--
  Created by IntelliJ IDEA.
  User: 17140
  Date: 2021/6/14
  Time: 17:44
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>博客</title>
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <script src="js/jquery.js"></script>
</head>
<body style="background-color: #EEEEEE">
<jsp:include page="heard.jsp"></jsp:include>
<div style="position:relative;">
    <img src="https://tva1.sinaimg.cn/large/7a6a15d5gy1g742fwlko4j21hc08cab6.jpg" class="img-fluid" alt="...">
    <div style="position: absolute;top: 50%;left: 48%;font-size: 33px" class="text-light">文章</div>
</div>
<div class="container-fluid row no-gutters" style="padding: 0px;margin-top: 20px">
    <div class="col-2"></div>
    <div class="col-8 border text-center align-middle" style="background-color: white">
        <div>
            <ul class="cater">
                <li>分类</li>
                <li class="bg-info rounded-pill all">全部</li>
                <%--                <li class="rounded-pill">随笔</li>--%>
                <%--                <li class="rounded-pill qianduan">前端</li>--%>
                <%--                <li class="rounded-pill music">音乐</li>--%>
                <%--                <li class="rounded-pill shenghuo">生活</li>--%>
            </ul>
        </div>
        <%--        <hr>--%>
        <div style="margin-top: 40px">
            <div class="row cat_list">

<%--                <div class="col-sm-6" >--%>
<%--                    <div class="card">--%>
<%--                        <div class="card-body">--%>
<%--                            <h5 class="card-title">Special title treatment</h5>--%>
<%--                            <p class="card-text">With supporting text below as a natural lead-in to additional--%>
<%--                                content.</p>--%>
<%--                            <a href="#" class="btn btn-primary">Go somewhere</a>--%>
<%--                        </div>--%>
<%--                    </div>--%>
<%--                </div>--%>
            </div>
        </div>
    </div>
    <div class="col-2"></div>
</div>

</body>
<style>
    .cater li {
        list-style: none;
        display: inline-block;
        width: 130px;
        text-align: center;
        line-height: 36px;
        padding: 0px;
        margin: 10px 10px 0 0;
        font-weight: bold;
    }
</style>
<script>
    $(function () {
        //获取分类标签
        $.ajax({
            url: "/CategoryServlet",
            type: 'GET',
            success: function (data) {
                const json = JSON.parse(data);
                json.forEach((elem, index) => {
                    $(".cater").append('<li class="rounded-pill" value="'+elem.id+'">' + elem.categoryName + '</li>')
                });
                $(".cater li").click(function () {
                    $(this).toggleClass("bg-info")
                    $(this).siblings().removeClass("bg-info")
                    $(".cater li:first-child").removeClass('bg-info')

                    if (!$(".cater li").hasClass("bg-info")) {
                        $(".cater li:nth-child(2)").addClass("bg-info")
                        all();
                    }
                    if($(this).val()>0){
                        getData($(this).val())
                    }
                })
                $(".cater li:nth-child(2)").click(function () {
                    all();
                })
            }
        })
        all();
        //获取全部按钮获取全部文章
        function all(){
            $.ajax({
                url: "/articlelist",
                type: 'GET',
                success: function (data) {
                    const json = JSON.parse(data);
                    $(".cat_list div").remove()
                    json.forEach((elem, index) => {
                        let a = "<a style='color: black' href=\"pre-html.jsp?id="+elem.id+"\">"
                        $(".cat_list").append('<div class="col-sm-6" style="margin-top: 20px" >\n' +
                            '                    <div style="background-color: #afc1c7;margin: 0 10px" class="card">\n' +
                            '                        <div class="card-body">\n' +
                            '                            <h5 class="card-title" style="font-weight: bold">'+elem.title+'</h5>\n' +
                            '                            <div class="card-text overflow-hidden" style="height: 70px;margin-top: 10px">' +
                            '</div>\n' + a+ '<button type="button" class="btn btn-outline-dark">阅读全文</button></a>\n' +
                            '                        </div>\n' +
                            '                    </div>\n' +
                            '                </div>')
                    });
                }
            })
        }

        function getData(id) {
            $.ajax({
                url: "/articlelist",
                type: 'POST',
                data:{id:id},
                success: function (data) {
                    const json = JSON.parse(data);
                    $(".cat_list div").remove()
                    json.forEach((elem, index) => {
                        if (elem.status ==1){
                            let a = "<a style='color: black' href=\"pre-html.jsp?id="+elem.id+"\">"
                            $(".cat_list").append('<div class="col-sm-6" style="margin-top: 20px" >\n' +
                                '                    <div style="background-color: #afc1c7;margin: 0 10px" class="card">\n' +
                                '                        <div class="card-body">\n' +
                                '                            <h5 class="card-title" style="font-weight: bold">'+elem.title+'</h5>\n' +
                                '                            <div class="card-text overflow-hidden" style="height: 70px;margin-top: 10px">' +
                                '</div>\n' + a+ '<button type="button" class="btn btn-outline-dark">阅读全文</button></a>\n' +
                                '                        </div>\n' +
                                '                    </div>\n' +
                                '                </div>')
                        }
                    });
                }
            })
        }
    })
</script>
</html>

归档页 timeline.jsp

<%--
  Created by IntelliJ IDEA.
  User: 17140
  Date: 2021/6/12
  Time: 23:04
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <meta charset="utf-8"/>
    <link rel="stylesheet" type="text/css" href="layui/css/layui.css"/>
    <script src="layui/layui.js"></script>
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <script src="js/jquery.js"></script>
</head>

<body>
<jsp:include page="heard.jsp" flush="true"></jsp:include>

<div class="container-fluid row no-gutters">
    <div class="col-4">
    </div>
    <div class="timeline-small col-4" style="padding-top: 80px;">
        <div class="timeline-small-body">
            <ul class="layui-timeline time_li" name="12">

            </ul>
        </div>
    </div>
    <div class="col-4">

    </div>
</div>

</body>
<script>
    $(function () {
        function dateFormat(fmt, date) {
            let ret;
            const opt = {
                "Y+": date.getFullYear().toString(),        // 年
                "m+": (date.getMonth() + 1).toString(),     // 月
                "d+": date.getDate().toString(),            // 日
                "H+": date.getHours().toString(),           // 时
                "M+": date.getMinutes().toString(),         // 分
                "S+": date.getSeconds().toString()          // 秒
                // 有其他格式化字符需求可以继续添加,必须转化成字符串
            };
            for (let k in opt) {
                ret = new RegExp("(" + k + ")").exec(fmt);
                if (ret) {
                    fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
                };
            };
            return fmt;
        }
        $.ajax({
            url: "/articlelist",
            type: 'GET',
            success: function (data) {
                //对于获取的数据执行相关的操作,如:绑定、显示等
                const json = JSON.parse(data);
                json.forEach((elem, index) => {
                    let time = dateFormat("YYYY-mm-dd", new Date(elem.createtime))
                    // $(".time_li").append(`<li> <div class="bullet blak"></div> <div class="date">`+time+`</div> <div class="desc"> <h3>`+elem.title+`</h3> </div></li>`);
                    $(".time_li").append("<li class=\"layui-timeline-item \"" +
                        "\">\n" +
                        "                    <i class=\"layui-icon layui-timeline-axis\">&#xe63f;</i>\n" +
                        "                    <div class=\"layui-timeline-content layui-text\">\n" +
                        "                        <h3 class=\"layui-timeline-title\">" +time+
                        "</h3>\n<fieldset class=\"layui-elem-field time_l layui-field-title\" name='" +elem.id+
                        "' style=\"margin-top: 30px;\">\n" +
                        "  <legend>" +elem.title+
                        "</legend>\n" +
                        "</fieldset><div id=\"" +elem.id+
                        "\"></div>"+
                        "                    </div>\n" +
                        "                </li>")

                    layui.use('rate', function(){
                        var rate = layui.rate;

                        //渲染
                        var ins1 =rate.render({
                            elem: '#'+elem.id,
                            readonly:true
                            ,value: elem.score
                            ,half: true
                            ,theme: '#FE0000'
                        })
                    });
                });
                $(".time_l").click(function () {
                    window.location.href= "/pre-html.jsp?id="+$(this).attr("name")
                })

            }
        })
    })
</script>
</html>

标签页 tags.jsp

<%--
  Created by IntelliJ IDEA.
  User: 17140
  Date: 2021/6/14
  Time: 17:44
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>博客</title>
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <script src="js/jquery.js"></script>
</head>
<body style="background-color: #EEEEEE">
<jsp:include page="heard.jsp"></jsp:include>
<div style="position:relative;">
    <img src="https://tva1.sinaimg.cn/large/7a6a15d5gy1g742fwlko4j21hc08cab6.jpg" class="img-fluid" alt="...">
    <div style="position: absolute;top: 50%;left: 48%;font-size: 33px" class="text-light">文章</div>
</div>
<div class="container-fluid row no-gutters" style="padding: 0px;margin-top: 20px">
    <div class="col-2"></div>
    <div class="col-8 border text-center align-middle" style="background-color: white">
        <div>
            <ul class="cater">
                <li>标签</li>
                <li class="bg-info rounded-pill all">全部</li>
            </ul>
        </div>
        <div>
            <div class="row cat_list">
            </div>
        </div>
    </div>
    <div class="col-2"></div>
</div>

</body>
<style>
    .cater li {
        list-style: none;
        display: inline-block;
        width: 130px;
        text-align: center;
        line-height: 36px;
        padding: 0px;
        margin: 10px 10px 0 0;
        font-weight: bold;
    }
</style>
<script>
    $(function () {
        //获取标签
        $.ajax({
            url: "/TagsServlet",
            type: 'GET',
            success: function (data) {
                const json = JSON.parse(data);
                json.forEach((elem, index) => {
                    $(".cater").append('<li class="rounded-pill" value="' + elem.id + '">' + elem.tagName + '</li>')
                });
                $(".cater li").click(function () {
                    $(this).toggleClass("bg-info")
                    $(this).siblings().removeClass("bg-info")
                    $(".cater li:first-child").removeClass('bg-info')
                    if (!$(".cater li").hasClass("bg-info")) {
                        $(".cater li:nth-child(2)").addClass("bg-info")
                    }
                    if ($(this).val() > 0) {
                        getData($(this).val())
                    }
                })
                $(".cater li:nth-child(2)").click(function () {
                    all();
                })
            }
        })
        all();

        //获取全部按钮获取全部文章
        function all() {
            $.ajax({
                url: "/articlelist",
                type: 'GET',
                success: function (data) {
                    const json = JSON.parse(data);
                    $(".cat_list div").remove()
                    json.forEach((elem, index) => {
                        let a = "<a style='color: black' href=\"pre-html.jsp?id=" + elem.id + "\">"
                        $(".cat_list").append('<div class="col-sm-6" style="margin-top: 20px" >\n' +
                            '                    <div style="background-color: #afc1c7;margin: 0 10px" class="card">\n' +
                            '                        <div class="card-body">\n' +
                            '                            <h5 class="card-title" style="font-weight: bold">' + elem.title + '</h5>\n' +
                            '                            <div class="card-text overflow-hidden" style="height: 70px;margin-top: 10px">' +
                            '</div>\n' + a + '<button type="button" class="btn btn-outline-dark">阅读全文</button></a>\n' +
                            '                        </div>\n' +
                            '                    </div>\n' +
                            '                </div>')
                    });
                }
            })
        }

        function getData(id) {
            $.ajax({
                url: "/TagsServlet",
                type: 'POST',
                data: {id: id},
                success: function (data) {
                    const json = JSON.parse(data);
                    $(".cat_list div").remove()
                    json.forEach((elem, index) => {
                        if (elem.status==1){
                            let a = "<a style='color: black' href=\"pre-html.jsp?id=" + elem.id + "\">"
                            $(".cat_list").append('<div class="col-sm-6" style="margin-top: 20px" >\n' +
                                '                    <div style="background-color: #afc1c7;margin: 0 10px" class="card">\n' +
                                '                        <div class="card-body">\n' +
                                '                            <h5 class="card-title" style="font-weight: bold">' + elem.title + '</h5>\n' +
                                '                            <div class="card-text overflow-hidden" style="height: 70px;margin-top: 10px">' +
                                '</div>\n' + a + '<button type="button" class="btn btn-outline-dark">阅读全文</button></a>\n' +
                                '                        </div>\n' +
                                '                    </div>\n' +
                                '                </div>')
                        }
                    });
                }
            })
        }
    })
</script>
</html>

搜索页 searchList.jsp

<%--
  Created by IntelliJ IDEA.
  User: 17140
  Date: 2021/6/15
  Time: 9:10
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>博客</title>
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <script src="js/jquery.js"></script>
</head>
<body style="background-color: #EEEEEE">
<jsp:include page="heard.jsp"></jsp:include>
<%
    String keyword =request.getParameter("keyword");
%>
<input id="message" type="hidden" value="<%= keyword %>"/>

<div style="position:relative;">
    <img src="https://tva1.sinaimg.cn/large/7a6a15d5gy1g742fwlko4j21hc08cab6.jpg" class="img-fluid" alt="...">
    <div style="position: absolute;top: 50%;left: 48%;font-size: 33px" class="text-light">搜索结果</div>
</div>
<div class="container-fluid row no-gutters" style="padding: 0px;margin-top: 20px">
    <div class="col-2"></div>
    <div class="col-8 border text-center align-middle" style="background-color: white">
        <div >
            <div class="row cat_list">
            </div>
        </div>
    </div>
    <div class="col-2"></div>
</div>

</body>
<style>
    .cater li {
        list-style: none;
        display: inline-block;
        width: 130px;
        text-align: center;
        line-height: 36px;
        padding: 0px;
        margin: 10px 10px 0 0;
        font-weight: bold;
    }
</style>
<script>
    $(function () {
        let keyword = $('#message').val()
        getData(keyword)

        function getData(keyword) {
            $.ajax({
                url: "/SearchServlet",
                type: 'GET',
                data:{keyword:keyword},
                success: function (data) {
                    const json = JSON.parse(data);
                    $(".cat_list div").remove()
                    json.forEach((elem, index) => {
                        let a = "<a style='color: black' href=\"pre-html.jsp?id="+elem.id+"\">"
                        $(".cat_list").append('<div class="col-sm-6" style="margin-top: 20px" >\n' +
                            '                    <div style="background-color: #afc1c7;margin: 0 10px" class="card">\n' +
                            '                        <div class="card-body">\n' +
                            '                            <h5 class="card-title" style="font-weight: bold">'+elem.title+'</h5>\n' +
                            '                            <div class="card-text overflow-hidden" style="height: 70px;margin-top: 10px">' +
                            '</div>\n' + a+ '<button type="button" class="btn btn-outline-dark">阅读全文</button></a>\n' +
                            '                        </div>\n' +
                            '                    </div>\n' +
                            '                </div>')
                    });
                }
            })
        }
    })
</script>
</html>

标签列表页 taglist.jsp

<%--
  Created by IntelliJ IDEA.
  User: 17140
  Date: 2021/6/15
  Time: 9:10
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>博客</title>
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <script src="js/jquery.js"></script>
</head>
<body style="background-color: #EEEEEE">
<jsp:include page="heard.jsp"></jsp:include>
<%
    String id =request.getParameter("id");
    String tag =request.getParameter("tag");
%>
<input id="message" type="hidden" value="<%= id %>"/>

<div style="position:relative;">
    <img src="https://tva1.sinaimg.cn/large/7a6a15d5gy1g742fwlko4j21hc08cab6.jpg" class="img-fluid" alt="...">
    <div style="position: absolute;top: 50%;left: 48%;font-size: 33px" class="text-light"><%= tag %></div>
</div>
<div class="container-fluid row no-gutters" style="padding: 0px;margin-top: 20px">
    <div class="col-2"></div>
    <div class="col-8 border text-center align-middle" style="background-color: white">
<%--        <div>--%>
<%--            <ul class="cater">--%>
<%--                <li>标签</li>--%>
<%--                <li class="bg-info rounded-pill all">全部</li>--%>
<%--                &lt;%&ndash;                <li class="rounded-pill">随笔</li>&ndash;%&gt;--%>
<%--                &lt;%&ndash;                <li class="rounded-pill qianduan">前端</li>&ndash;%&gt;--%>
<%--                &lt;%&ndash;                <li class="rounded-pill music">音乐</li>&ndash;%&gt;--%>
<%--                &lt;%&ndash;                <li class="rounded-pill shenghuo">生活</li>&ndash;%&gt;--%>
<%--            </ul>--%>
<%--        </div>--%>
        <%--        <hr>--%>
        <div >
            <div class="row cat_list">
                <%--                <div class="col-sm-6" >--%>
                <%--                    <div class="card">--%>
                <%--                        <div class="card-body">--%>
                <%--                            <h5 class="card-title">Special title treatment</h5>--%>
                <%--                            <p class="card-text">With supporting text below as a natural lead-in to additional--%>
                <%--                                content.</p>--%>
                <%--                            <a href="#" class="btn btn-primary">Go somewhere</a>--%>
                <%--                        </div>--%>
                <%--                    </div>--%>
                <%--                </div>--%>
            </div>
        </div>
    </div>
    <div class="col-2"></div>
</div>

</body>
<style>
    .cater li {
        list-style: none;
        display: inline-block;
        width: 130px;
        text-align: center;
        line-height: 36px;
        padding: 0px;
        margin: 10px 10px 0 0;
        font-weight: bold;
    }
</style>
<script>
    $(function () {
        let id = $('#message').val()
        getData(id)
        function getData(id) {
            $.ajax({
                url: "/TagsServlet",
                type: 'POST',
                data:{id:id},
                success: function (data) {
                    const json = JSON.parse(data);
                    $(".cat_list div").remove()
                    json.forEach((elem, index) => {
                        let a = "<a style='color: black' href=\"pre-html.jsp?id="+elem.id+"\">"
                        $(".cat_list").append('<div class="col-sm-6" style="margin-top: 20px" >\n' +
                            '                    <div style="background-color: #afc1c7;margin: 0 10px" class="card">\n' +
                            '                        <div class="card-body">\n' +
                            '                            <h5 class="card-title" style="font-weight: bold">'+elem.title+'</h5>\n' +
                            '                            <div class="card-text overflow-hidden" style="height: 70px;margin-top: 10px">' +
                            '</div>\n' + a+ '<button type="button" class="btn btn-outline-dark">阅读全文</button></a>\n' +
                            '                        </div>\n' +
                            '                    </div>\n' +
                            '                </div>')
                    });
                }
            })
        }
    })
</script>
</html>

文章预览页 pre-html.jsp

<%--
  Created by IntelliJ IDEA.
  User: 17140
  Date: 2021/6/12
  Time: 13:51
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--<!DOCTYPE html>--%>
<html lang="zh">
<head>
    <meta charset="utf-8"/>
    <link href="css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href="editormd/examples/css/style.css"/>
    <link rel="stylesheet" href="editormd/css/editormd.preview.css"/>
    <link href="/css/font_1446720_ftf15in5gss.css" rel="stylesheet">
    <style>
        body {
            padding: 40px;
        }

        #layout > header, .btns {
            width: auto;
        }

        #sidebar {
            width: 300px;
            height: 100%;
            position: fixed;
            top: 0;
            right: 0;
            overflow: hidden;
            background: #fff;
            z-index: 100;
            padding: 18px;
            border: 1px solid #ddd;
            border-top: none;
            border-bottom: none;
        }

        #sidebar:hover {
            overflow: auto;
        }

        #sidebar h1 {
            font-size: 16px;
        }

        #custom-toc-container {
            padding-left: 0;
        }

        #test-editormd-view, #test-editormd-view2 {
            padding-left: 0;
            padding-right: 430px;
            margin: 0;
        }

        .list-unstyled {
            width: 60%;
            margin: 0 auto;
        }

        .list-unstyled li {
            margin-left: 20px;
            display: inline-block;
        }
    </style>
</head>
<body>
<%
    String id = request.getParameter("id");
%>
<input id="message" type="hidden" value="<%= id %>"/>
<jsp:include page="heard.jsp"></jsp:include>

<div id="layout" style="margin-top: 60px">
    <div class="container">
        <div class="row clearfix">
            <div class="col-md-12 column">
                <h1 class="text-center title" style="font-weight: bold"></h1>
                <ol class="list-unstyled">
                    <li class="author">
                        <i class="iconfont icon-zuozhe"></i>作者:<span></span>
                    </li>
                    <li class="score">
                        <i class="iconfont icon-zuozheicon-defen"></i>文章得分:<span></span>
                    </li>
                    <li class="createtime">
                        <i class="iconfont icon-fabushijian"></i>发布时间 <span></span>
                    </li>
                    <li class="updatatime">
                        <i class="iconfont icon-gengxinshijian"></i>更新时间 <span></span>
                    </li>
                </ol>
            </div>
        </div>
    </div>
    <div id="sidebar">
        <h1>Table of Contents</h1>
        <div class="markdown-body editormd-preview-container" id="custom-toc-container">#custom-toc-container</div>
    </div>
    <div id="test-editormd-view">
        <textarea style="display:none;" name="test-editormd-markdown-doc">###Hello world!</textarea>
    </div>
</div>
<script src="editormd/examples/js/jquery.min.js"></script>
<script src="editormd/lib/marked.min.js"></script>
<script src="editormd/lib/prettify.min.js"></script>

<script src="editormd/lib/raphael.min.js"></script>
<script src="editormd/lib/underscore.min.js"></script>
<script src="editormd/lib/sequence-diagram.min.js"></script>
<script src="editormd/lib/flowchart.min.js"></script>
<script src="editormd/lib/jquery.flowchart.min.js"></script>

<script src="editormd/editormd.js"></script>
<script type="text/javascript">
    $(function () {
        var testEditormdView;

        $.get("/article", {id: $('#message').val()}, function (markdown) {
            let json = JSON.parse(markdown);
            $(".title").text(json.title)
            $(".author span").text(json.author)
            $(".score span").text(json.score)
            let time = dateFormat("YYYY-mm-dd", new Date(json.createtime))
            $(".createtime span").text(time)

            let updatatime = dateFormat("YYYY-mm-dd", new Date(json.updatatime))
            $(".updatatime span").text(updatatime)
            testEditormdView = editormd.markdownToHTML("test-editormd-view", {
                markdown: json.doc,//+ "\r\n" + $("#append-test").text(),
                //htmlDecode      : true,       // 开启 HTML 标签解析,为了安全性,默认不开启
                htmlDecode: "style,script,iframe",  // you can filter tags decode
                //toc             : false,
                tocm: true,    // Using [TOCM]
                tocContainer: "#custom-toc-container", // 自定义 ToC 容器层
                //gfm             : false,
                //tocDropdown     : true,
                // markdownSourceCode : true, // 是否保留 Markdown 源码,即是否删除保存源码的 Textarea 标签
                emoji: true,
                taskList: true,
                tex: true,  // 默认不解析
                flowChart: true,  // 默认不解析
                sequenceDiagram: true,  // 默认不解析
            });
        });

        function dateFormat(fmt, date) {
            let ret;
            const opt = {
                "Y+": date.getFullYear().toString(),        // 年
                "m+": (date.getMonth() + 1).toString(),     // 月
                "d+": date.getDate().toString(),            // 日
                "H+": date.getHours().toString(),           // 时
                "M+": date.getMinutes().toString(),         // 分
                "S+": date.getSeconds().toString()          // 秒
                // 有其他格式化字符需求可以继续添加,必须转化成字符串
            };
            for (let k in opt) {
                ret = new RegExp("(" + k + ")").exec(fmt);
                if (ret) {
                    fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
                }
                ;
            }
            ;
            return fmt;
        }
    });
</script>
</body>
</html>
</html>
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值