效果:
發博客:javascript
顯示博客: php
後臺:使用hui-admin,文章編輯器是百度開源的ueditor
前臺:使用layui前端框架
1.寫控制器BlogController
controller包中css
package cn.pangpython.controller; import com.jfinal.core.Controller; import cn.pangpython.model.Blog; import cn.pangpython.utils.DateUtils; /** * @author pangPython * 博客模塊控制器 * */ public class BlogController extends Controller{ //訪問URL:/blog/ public void index(){ } //訪問URL:/blog/adminAddBlog //後臺添加博客文章 public void adminAddBlog(){ Blog blog = getModel(Blog.class); blog.setTitle(getPara("blog.title")); blog.setAuthor(getPara("blog.author")); blog.setContent(getPara("blog.content")); blog.setCreateDate(DateUtils.getNowTime()); blog.setUpdateDate(DateUtils.getNowTime()); if(blog.save()){ renderText("添加成功!"); }else{ renderText("添加失敗!"); } } // 訪問URL:/blog/article/1 //前臺根據傳入id顯示博客頁面 public void article(){ //獲取博客id int blog_id = getParaToInt(0); //查詢實例化blog對象 Blog blog = Blog.dao.findById(blog_id); //設置模板攜帶參數 setAttr("blog", blog); //渲染模板 render("../admin/article.html"); } }
2.寫後臺html模板
後臺發佈文章頁面
WebRoot/admin/article-add.htmlhtml
<!--_meta 做爲公共模版分離出去--> <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <meta name="renderer" content="webkit|ie-comp|ie-stand"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" /> <meta http-equiv="Cache-Control" content="no-siteapp" /> <LINK rel="Bookmark" href="/favicon.ico" > <LINK rel="Shortcut Icon" href="/favicon.ico" /> <!--[if lt IE 9]> <script type="text/javascript" src="lib/html5.js"></script> <script type="text/javascript" src="lib/respond.min.js"></script> <script type="text/javascript" src="lib/PIE_IE678.js"></script> <![endif]--> <link rel="stylesheet" type="text/css" href="static/h-ui/css/H-ui.min.css" /> <link rel="stylesheet" type="text/css" href="static/h-ui.admin/css/H-ui.admin.css" /> <link rel="stylesheet" type="text/css" href="lib/Hui-iconfont/1.0.7/iconfont.css" /> <link rel="stylesheet" type="text/css" href="lib/icheck/icheck.css" /> <link rel="stylesheet" type="text/css" href="static/h-ui.admin/skin/default/skin.css" id="skin" /> <link rel="stylesheet" type="text/css" href="static/h-ui.admin/css/style.css" /> <!--[if IE 6]> <script type="text/javascript" src="http://lib.h-ui.net/DD_belatedPNG_0.0.8a-min.js" ></script> <script>DD_belatedPNG.fix('*');</script> <![endif]--> <!--/meta 做爲公共模版分離出去--> <title>新增文章 - 資訊管理 - H-ui.admin v2.3</title> </head> <body> <article class="page-container"> <form class="form form-horizontal" id="form-article-add" action="/blog/adminAddBlog" method="POST"> <div class="row cl"> <label class="form-label col-xs-4 col-sm-2"><span class="c-red">*</span>文章標題:</label> <div class="formControls col-xs-8 col-sm-9"> <input type="text" class="input-text" value="" placeholder="" id="blog.title" name="blog.title"> </div> </div> <div class="row cl"> <label class="form-label col-xs-4 col-sm-2">做者:</label> <div class="formControls col-xs-8 col-sm-9"> <input type="text" class="input-text" value="" placeholder="" id="blog.author" name="blog.author"> </div> </div> <div class="row cl"> <label class="form-label col-xs-4 col-sm-2">文章內容:</label> <div class="formControls col-xs-8 col-sm-9"> <script id="editor" name="blog.content" type="text/plain" style="width:100%;height:400px;"></script> </div> </div> <div class="row cl"> <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-2"> <button onClick="article_save();" class="btn btn-secondary radius" type="submit"><i class="Hui-iconfont"></i> 發佈</button> <button onClick="removeIframe();" class="btn btn-default radius" type="button"> 取消 </button> </div> </div> </form> </article> <!--_footer 做爲公共模版分離出去--> <script type="text/javascript" src="lib/jquery/1.9.1/jquery.min.js"></script> <script type="text/javascript" src="lib/layer/2.1/layer.js"></script> <script type="text/javascript" src="lib/icheck/jquery.icheck.min.js"></script> <script type="text/javascript" src="lib/jquery.validation/1.14.0/jquery.validate.min.js"></script> <script type="text/javascript" src="lib/jquery.validation/1.14.0/validate-methods.js"></script> <script type="text/javascript" src="lib/jquery.validation/1.14.0/messages_zh.min.js"></script> <script type="text/javascript" src="static/h-ui/js/H-ui.js"></script> <script type="text/javascript" src="static/h-ui.admin/js/H-ui.admin.js"></script> <!--/_footer /做爲公共模版分離出去--> <!--請在下方寫此頁面業務相關的腳本--> <script type="text/javascript" src="lib/webuploader/0.1.5/webuploader.min.js"></script> <script type="text/javascript" src="lib/ueditor/1.4.3/ueditor.config.js"></script> <script type="text/javascript" src="lib/ueditor/1.4.3/ueditor.all.min.js"> </script> <script type="text/javascript" src="lib/ueditor/1.4.3/lang/zh-cn/zh-cn.js"></script> <script type="text/javascript"> $(function(){ $('.skin-minimal input').iCheck({ checkboxClass: 'icheckbox-blue', radioClass: 'iradio-blue', increaseArea: '20%' }); $list = $("#fileList"), $btn = $("#btn-star"), state = "pending", uploader; var uploader = WebUploader.create({ auto: true, swf: 'lib/webuploader/0.1.5/Uploader.swf', // 文件接收服務端。 server: 'fileupload.php', // 選擇文件的按鈕。可選。 // 內部根據當前運行是建立,多是input元素,也多是flash. pick: '#filePicker', // 不壓縮image, 默認若是是jpeg,文件上傳前會壓縮一把再上傳! resize: false, // 只容許選擇圖片文件。 accept: { title: 'Images', extensions: 'gif,jpg,jpeg,bmp,png', mimeTypes: 'image/*' } }); uploader.on( 'fileQueued', function( file ) { var $li = $( '<div id="' + file.id + '" class="item">' + '<div class="pic-box"><img></div>'+ '<div class="info">' + file.name + '</div>' + '<p class="state">等待上傳...</p>'+ '</div>' ), $img = $li.find('img'); $list.append( $li ); // 建立縮略圖 // 若是爲非圖片文件,能夠不用調用此方法。 // thumbnailWidth x thumbnailHeight 爲 100 x 100 uploader.makeThumb( file, function( error, src ) { if ( error ) { $img.replaceWith('<span>不能預覽</span>'); return; } $img.attr( 'src', src ); }, thumbnailWidth, thumbnailHeight ); }); // 文件上傳過程當中建立進度條實時顯示。 uploader.on( 'uploadProgress', function( file, percentage ) { var $li = $( '#'+file.id ), $percent = $li.find('.progress-box .sr-only'); // 避免重複建立 if ( !$percent.length ) { $percent = $('<div class="progress-box"><span class="progress-bar radius"><span class="sr-only" style="width:0%"></span></span></div>').appendTo( $li ).find('.sr-only'); } $li.find(".state").text("上傳中"); $percent.css( 'width', percentage * 100 + '%' ); }); // 文件上傳成功,給item添加成功class, 用樣式標記上傳成功。 uploader.on( 'uploadSuccess', function( file ) { $( '#'+file.id ).addClass('upload-state-success').find(".state").text("已上傳"); }); // 文件上傳失敗,顯示上傳出錯。 uploader.on( 'uploadError', function( file ) { $( '#'+file.id ).addClass('upload-state-error').find(".state").text("上傳出錯"); }); // 完成上傳完了,成功或者失敗,先刪除進度條。 uploader.on( 'uploadComplete', function( file ) { $( '#'+file.id ).find('.progress-box').fadeOut(); }); uploader.on('all', function (type) { if (type === 'startUpload') { state = 'uploading'; } else if (type === 'stopUpload') { state = 'paused'; } else if (type === 'uploadFinished') { state = 'done'; } if (state === 'uploading') { $btn.text('暫停上傳'); } else { $btn.text('開始上傳'); } }); $btn.on('click', function () { if (state === 'uploading') { uploader.stop(); } else { uploader.upload(); } }); var ue = UE.getEditor('editor'); }); </script> <!--/請在上方寫此頁面業務相關的腳本--> </body> </html>
前臺顯示博客頁面
WebRoot/blog/article.html前端
<!doctype html> <html> <head> <meta charset="utf-8"> <title>${blog.title?if_exists}</title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <link rel="stylesheet" href="/static/layui/css/layui.css" media="all"> </head> <body> <ul class="layui-nav"> <li class="layui-nav-item"><a href="">Logo</a></li> <li class="layui-nav-item "><a href="">首頁</a></li> <li class="layui-nav-item layui-this"><a href="">博客</a></li> <li class="layui-nav-item"><a href="">關於咱們</a></li> </ul> <fieldset class="layui-elem-field layui-field-title" style="margin-top: 50px;"> <legend>BLOG</legend> </fieldset> <br> <div class="layui-main"> <fieldset class="layui-elem-field"> <legend>${blog.title?if_exists}</legend> 做者: ${blog.author?if_exists} 建立時間:${blog.create_date?if_exists} 更新時間:${blog.update_date?if_exists} <hr> <blockquote class="layui-elem-quote">${blog.content?if_exists}</blockquote> </fieldset> </div> <script src="/static/layui/layui.js"></script> <script> //配置本身的js加載路徑 layui.config({ base:'/static/js/modules/' }).use('index'); </script> </body> </html>
3.配置路由
routers包中
FrontRouters.java
config方法中添加html5
add("/blog",BlogController.class);java
4.簡單測試 python
添加文章: jquery
localhost/admin/index web
博客管理->文章管理->添加資訊
注:此處添加文章的方法未作權限控制
查看文章:
localhost/blog/article/1
注:此處article後邊是博客id,根據本身添加的博客的id進行查看,此處未作異常處理,試圖訪問不存在的id後臺會報錯.
參考原文:https://blog.csdn.net/u012995856/article/details/53457428