从简到繁——SSM个人博客搭建完全记录【1】开发环境搭建和数据库表设计

前言

  今天是2018年3月16日,SSM框架学了有一段时间了,但一直没有自己独立完成一个项目,自己对SSM的理解也仅仅停留在会简单使用的层次上。很多概念只有在实际操作中才会清晰,所以想从个人网站的搭建开始,慢慢从使用SSM走向了解到最后深入底层实现。在SSM框架、SpringBoot等Java框架之外,后端开发还有一众优良的实践:缓存、分布式、集群等,囿于现在水平的限制,也为了体现从简到繁这个主题,我会在以后代码重构的过程中,一步步学习使用这些工具,使用上这些技术。每次大版本的迭代,我都会把代码上传到Github,项目搭建的全过程也会记录在此。

项目概述

  本项目是一个基于Java SSM框架开发的单用户个人博客系统,具有博客发表、修改、评论、后台管理等功能。项目分为前台和后台,前台负责展示业务,前后端适当分离;后台需要登录,负责文章、评论增删查改业务。

开发环境搭建

1、开发工具

  • CentOS 7.4
  • JDK 1.8.0_162
  • Intellij Idea 2017.3 (Idea确实是个好东西,的确比Eclipse好用一些)
  • Apache - Tomcat 8.5.29
  • MySQL 5.7

2、新建项目

  •   选择Maven(一个项目构建、依赖管理工具,我下载的Idea里自带Maven插件。不了解的可参考这篇文章:Maven使用入门。另外为了加快jar包下载速度可以去.m2文件夹下面的setting.xml配置下载源,改为国内镜像),勾选Create from archetype,选择maven-archetype-webapp这个模版,点击Next。

从简到繁——SSM个人博客搭建完全记录【1】开发环境搭建和数据库表设计_第1张图片

  • 填写GroupId、ArtifactId,点击Next。

从简到繁——SSM个人博客搭建完全记录【1】开发环境搭建和数据库表设计_第2张图片

  • 选择本地Maven仓库位置,点击右侧的+号,然后添加一个属性archetypeCatalog=internal。至于为什么要添加可以看这篇文章:解决IDEA 创建Maven项目速度慢问题。

从简到繁——SSM个人博客搭建完全记录【1】开发环境搭建和数据库表设计_第3张图片

  • 继续点击Netxt、Fininsh、Import Changes,如果Idea的控制台里出现BUILD SUCCESS的字样,那么说明项目初步创建成功了。但此时目录结构还不适合SSM项目,我们把目录修改成如下所示,右键选择Mark Directory as标记文件夹的作用:从简到繁——SSM个人博客搭建完全记录【1】开发环境搭建和数据库表设计_第4张图片
  • 配置pom.xml:

  4.0.0
  com.vansl
  myblog
  war
  1.0-SNAPSHOT
  myblog
  http://maven.apache.org

  
  
    4.12
    1.7.21
    5.1.35
    3.1.0
    2.2
    1.2
    4.3.3.RELEASE
    1.5.4
    3.4.0
    1.3.0
    1.4
    4.0.0
    UTF-8
  

  
  

    
    
      junit
      junit
      ${junit.version}
      test
    

    
    
      org.slf4j
      slf4j-log4j12
      ${slf4j.version}
    

    
    
      mysql
      mysql-connector-java
      ${mysql.driver.version}
    

    
    
      javax.servlet
      javax.servlet-api
      ${servlet.version}
    
    
      javax.servlet.jsp
      jsp-api
      ${jsp.version}
    
    
      jstl
      jstl
      ${jstl.version}
    

    
    
      org.springframework
      spring-core
      ${spring.version}
    
    
      org.springframework
      spring-web
      ${spring.version}
    
    
      org.springframework
      spring-oxm
      ${spring.version}
    
    
      org.springframework
      spring-tx
      ${spring.version}
    
    
      org.springframework
      spring-jdbc
      ${spring.version}
    
    
      org.springframework
      spring-webmvc
      ${spring.version}
    
    
      org.springframework
      spring-aop
      ${spring.version}
    
    
      org.springframework
      spring-context-support
      ${spring.version}
    
    
      org.springframework
      spring-test
      ${spring.version}
    
    
      aspectj
      aspectjweaver
      ${aspect.version}
    

    
    
      org.mybatis
      mybatis
      ${mybatis.version}
    
    
      org.mybatis
      mybatis-spring
      ${mybatis.spring.version}
    

    
    
      commons-dbcp
      commons-dbcp
      ${commons-dbcp.version}
    

    
    
      com.github.pagehelper
      pagehelper
      ${pagehelper.version}
    

    
    
      commons-fileupload
      commons-fileupload
      1.3.3
    

    
    
      com.fasterxml.jackson.core
      jackson-databind
      2.9.4
    

    
      com.fasterxml.jackson.core
      jackson-core
      2.9.4
    

    
      com.fasterxml.jackson.core
      jackson-annotations
      2.9.4
    

    
      com.alibaba
      fastjson
      1.2.47
    

    
    
      org.apache.commons
      commons-lang3
      3.4
    

    
    
      commons-io
      commons-io
      2.4
    

    
      commons-codec
      commons-codec
      1.10
    

    
      org.json
      json
      20160212
    

  

  

    
      
      
        org.apache.tomcat.maven
        tomcat8-maven-plugin
        
          80
          /
        
      
    

    
        
          src/main/java
          
            **/*.xml
          
        
    

  

  • 配置web.xml:



  
    index.html
  

  
  
    org.springframework.web.context.ContextLoaderListener
  

  
  
    contextConfigLocation
    classpath:spring/applicationContext-*.xml
  

  
  
    CharacterEncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    
      encoding
      utf-8
    
    
      forceEncoding
      true
    
  
  
    CharacterEncodingFilter
    /*
  

  
  
    org.springframework.web.util.Log4jConfigListener
  
  
    log4jConfigLocation
    classpath:config/log4j.properties
  

  
  
    SpringMVC
    org.springframework.web.servlet.DispatcherServlet
    
    
      contextConfigLocation
      classpath:spring/spring-mvc.xml
    
    1
    true
  

  
  
    SpringMVC
    /
  

  • 在resources文件夹下新建spring文件夹,配置spring-mvc.xml:



  
  

  
  

  
  
    
    
  

  
  
  
  

  
  
    
    
    
    
  

  • 配置Spring容器,在spring文件夹下面新建applicationContext-service.xml、applicationContext-trans.xml、applicationContext-dao.xml,首先配置applicationContext-service.xml:



  
  
  
  • 然后配置用于事务管理的applicationContext-trans.xml:



  
  
    
    
  

  
  
    
      
      
      
      
      
      
      
      
      
      
    
  

  
  
    
  

  • 最后配置applicationContext-dao.xml,并新建mybatis和config文件夹分别用于存放sqlSessionFactory配置文件、数据库和日志及其他配置文件:

applicationContext-dao.xml:




  
  

  
  
    
    
    
    
    
    
    
    
    
  

  
  
    
    
    
    
    
  

  
  
    
  

SqlMapConfig.xml:






  
    
    
      
      
    
  

数据库和日志配置文件这里不再给出。

  接着配置tomcat服务器,点击运行,项目成功运行,此时浏览器显示404。接下来在controller包下新建HomeController.java,并在views下新建index.jsp:

package com.vansl.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;

/**
 * @author: vansl
 * @create: 18-3-17 下午11:58
 */
@Controller
public class HomeController {
    //添加日志器
    private static final Logger logger = LoggerFactory.getLogger(HomeController.class);

    //action映射
    @RequestMapping("/index")
    public  String index(HttpServletRequest request){
        //输出日志文件
        logger.info("Build Success");
        //返回index.jsp
        return "index";
    }

}

  重启tomcat,访问http://localhost:8080/index,如果出现index.jsp,那么说明开发环境搭建成功了(另外在有欢迎页的时候输入http://localhost:8080也能访问index.jsp,原因不明,有待解释:点击打开链接)。

数据库设计

  初步设计了四张表以实现基本的登录、发表博客、评论以及管理功能。如下所示:

从简到繁——SSM个人博客搭建完全记录【1】开发环境搭建和数据库表设计_第5张图片

虽然是单用户的个人博客系统,但我还是设计了user这张表,并添加了用户角色字段进行用户权限管理。一是为了增加开发的完整度、复杂度,其次也可以方便拓展成多用户的系统。由此建表:

/**
 * @DATE 20:47 2018/3/21
 */

--
-- 数据库: `myblog`
--

--
-- 用户表
--
CREATE TABLE `user` (
  `id` INT NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `username` VARCHAR(30) NOT NULL COMMENT '用户名',
  `password` VARCHAR(30) NOT NULL COMMENT '用户密码',
  `role` VARCHAR(20) DEFAULT 'user' COMMENT '用户权限',
  UNIQUE (`username`),
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;

--
-- 博客表
--
CREATE TABLE `blog` (
  `id` INT NOT NULL AUTO_INCREMENT COMMENT '博客ID',
  `title` VARCHAR(90) NOT NULL COMMENT '博客标题',
  `time` DATE NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '发表时间',
  `content` TEXT NOT NULL COMMENT '博客正文(包含html格式)',
  `text` TEXT NOT NULL COMMENT '博客正文(纯文本)',
  `pv` int NOT NULL COMMENT '博客点击量',
  `publish` INT(1) NOT NULL COMMENT '是否已发表,0已发表,1未发表(在草稿箱)',
  `user_id` INT NOT NULL COMMENT '用户ID',
  `type_id` INT NOT NULL COMMENT '分类ID',
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;

--
-- 博客分类表
--
CREATE TABLE `blog_type` (
  `id` INT NOT NULL AUTO_INCREMENT COMMENT '分类ID',
  `type_name` VARCHAR(30) NOT NULL COMMENT '分类名称',
  `parent_id` INT NOT NULL COMMENT '父分类id',
  `user_id` INT NOT NULL COMMENT '用户ID',
  UNIQUE (`type_name`,`parent_id`),
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;

--
-- 评论表
--
CREATE TABLE `blog_comment` (
  `id` INT NOT NULL AUTO_INCREMENT COMMENT '评论ID',
  `time` DATETIME NOT NULL  DEFAULT CURRENT_TIMESTAMP COMMENT '发表时间',
  `name` VARCHAR(30) NOT NULL COMMENT '评论者',
  `contact` VARCHAR(90) NOT NULL COMMENT '联系方式',
  `ip` VARCHAR(15) NOT NULL COMMENT '评论者ip',
  `address` TINYTEXT NOT NULL COMMENT '评论者地址',
  `content` TEXT NOT NULL COMMENT '评论内容',
  `blog_id` INT NOT NULL COMMENT '博客ID',
  PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;

把sql文件导入数据库:

从简到繁——SSM个人博客搭建完全记录【1】开发环境搭建和数据库表设计_第6张图片

执行成功。至此开发环境搭建和数据库表设计部分的工作就完成了。

参考

https://www.cnblogs.com/Sinte-Beuve/p/5730553.html


你可能感兴趣的:(SSM)