文章目录
博客管理系统介绍
基于SSM框架,实现博客管理系统,可以进行新增文章、文章浏览等功能。本文重点讲解后端部分,前端内容暂不介绍。
系统实现的功能点
1、用户权限管理:普通用户只能浏览文章,管理员用户可以编写文章
2、博客列表展示:文章按发布时间展示,展示内容包括:博客类别、标签、博客名称、作者名、发布时间、浏览量、博客内容概括
3、博客详情页面展示:包括博客名称、作者、时间、标签、类别
4、博客后台列表:博客检索、博客列表、博客操作
5、新增博客功能:支持富文本编辑
博客设计技术
前端技术
前端技术使用:jsp、Ajax、前端框架bootstrap、富文本编辑器:百度UEditor
后端技术
后端技术使用:SSM框架、Java、MySQL数据库、JSON数据处理
数据库设计
用户表(t_manager):账号id、账号名称、账号密码
文章表(t_article):文章id、分类id、标题、内容、文章简介、状态、作者、发表时间、浏览量。
博客/标签对应表(t_article_tag):文章id、标签id
标签表(t_tag):标签id、标签名称
类别表(t_category):类别id、类别名称、图片样式、别名、排序
文章表:
t_article | CREATE TABLE `t_article` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`categoryId` int(11) NOT NULL COMMENT '分类id',
`title` varchar(40) NOT NULL COMMENT '标题',
`content` blob NOT NULL COMMENT '内容',
`decription` varchar(500) NOT NULL COMMENT '文章简介 用于列表显示',
`statue` int(11) NOT NULL DEFAULT '0' COMMENT '状态 0:正常 1:不执行',
`author` varchar(15) DEFAULT '张宇轩' COMMENT '作者',
`createTime` datetime NOT NULL COMMENT '发表时间',
`showCount` int(11) NOT NULL DEFAULT '0' COMMENT '浏览量',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8 COMMENT='文章表'
文章标签对应表:
t_article_tag | CREATE TABLE `t_article_tag` (
`articleId` int(11) NOT NULL COMMENT '文章Id',
`tagId` int(11) NOT NULL COMMENT '标签Id',
PRIMARY KEY (`articleId`,`tagId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章标签中间表'
标签表:
| t_tag | CREATE TABLE `t_tag` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`tagName` varchar(25) NOT NULL COMMENT '标签名称 唯一',
PRIMARY KEY (`id`),
UNIQUE KEY `tagName_UNIQUE` (`tagName`)
) ENGINE=InnoDB AUTO_INCREMENT=49 DEFAULT CHARSET=utf8 COMMENT='标签表'
类别表:
t_category | CREATE TABLE `t_category` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`categoryName` varchar(20) NOT NULL COMMENT '分类名称 唯一',
`iconClass` varchar(45) NOT NULL COMMENT '图片样式',
`aliasName` varchar(20) NOT NULL COMMENT '别名 唯一 比如新闻 就用News代替 栏目Id不显示在url中',
`sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序 (0-10)',
PRIMARY KEY (`id`),
UNIQUE KEY `aliasName_UNIQUE` (`aliasName`),
UNIQUE KEY `categoryName_UNIQUE` (`categoryName`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='分类表 只支持一级分类 如果需要分多个层次 用标签来协助实现'
用户表:
| t_manager | CREATE TABLE `t_manager` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`userName` varchar(25) NOT NULL COMMENT '用户名',
`password` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 |
详解博客
搭建博客整体目录结构
配置SSM框架所需的依赖等
我们使用SSM框架,就必须导入响应的依赖,以下是我们需要的依赖:
<!-- 字符编码 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<org.springframework.version>4.1.0.RELEASE</org.springframework.version>
<druid.version>0.2.6</druid.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- Spring Start -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework.version}</version>
</dependency>
<!-- Spring End -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.5</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.4</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.3</version>
</dependency>
</dependencies>
<!-- 部署服务器所需依赖 -->
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>9.0.0.v20130308</version>
<configuration>
<httpConnector>
<port>8080</port>
</httpConnector>
</configuration>
</plugin>
我们看到,上面有的依赖中,我们使用了${…},这表示,我们引用了自己所配置的iml文件,所以我们还需要自己配置以下iml文件如下:
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.11" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aop:4.1.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: aopalliance:aopalliance:1.0" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-aspects:4.1.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.8.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-beans:4.1.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context:4.1.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-expression:4.1.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-core:4.1.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.1.3" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-context-support:4.1.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-tx:4.1.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-jdbc:4.1.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-web:4.1.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-webmvc:4.1.0.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.alibaba:druid:0.2.6" level="project" />
<orderEntry type="library" name="Maven: mysql:mysql-connector-java:5.0.5" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis:3.2.4" level="project" />
<orderEntry type="library" name="Maven: org.mybatis:mybatis-spring:1.2.1" level="project" />
<orderEntry type="library" name="Maven: javax.servlet:jstl:1.2