论文部分内容阅读
摘 要:文章所设计的系统采用SSM模式和SpringBoot框架进行开发,使用Maven作为项目管理和构建的工具,在架构上采用分层设计,降低了系统的耦合度。这种设计便于系统的后期维护,增强了系统的可扩展性。SpringBoot和Maven技术的使用,使得项目的构建和管理更加方便。另外,前端使用Bootstrap框架和Thymeleaf技术。
关键词:校园文章发布平台;SpringBoot;Maven;分层设计
本文开发的校园文章发布平台中,用户在使用时可以实现注册登录,进入平台首页查看其他用户发布的文章,并进行评价,可以进入其他用户的主页查看,登录后台发布文章和设置自己的个人主页。系统在架构上采用分层设计,从而降低系统的耦合度,以便于后期维护,利用SSM(Spring+SpringMVC+MyBatis)框架集模式和SpringBoot框架进行整合开发[1-2]。
1 关键技术
1.1 MVC设计模式
模型—视图—控制器(Model-View-Controller,MVC)是一种软件设计的典型设计方法。它将系统的业务逻辑、数据、界面显示分离开来,采用分而治之的思想对待程序系统,当系统需求发生变更时,只需要针对性地改动其相对应的部分即可。
1.2 SSM框架技术
SSM框架是Spring MVC,Spring和Mybatis框架的整合,采用标准的MVC设计思想,将整个系统划分为表现层、Controller层、Service层、DAO层4层[3]。使用Spring MVC负责请求的转发和视图的管理;使用Spring实现业务对象的管理;使用Mybatis作为数据对象的持久化引擎。Spring是一个开源框架,主要优势是分层架构。Mybatis是对JDBC的封装,可以让数据库底层的操作变得透明。
1.3 SpringBoot框架技术
SpringBoot是一个快速开发框架,能够迅速地将一些常用的第三方依赖整合起来。Spring Boot简化了XML配置,采用注解的形式,内置了HTTP服务器(Jetty和Tomcat),最终以Java应用程序进行执行[4]。
2 系统实现
对于用户功能结构,将从平台首页、用户个人主页、用户管理3个模块进行设计。
用户在平台首页可以进行账户信息的注册、系统登录以及进入管理页面。用户进入平台首页看到的是平台内所有文章的列表,平台上会显示最新发布的用户文章。另外,用户如果有自己感兴趣或者想要了解的内容,可以根据关键字进行搜索。用户可以点击查看文章的详细页面,在文章的底部看其他用户提交的评论信息,也可以提交自己的评价。
用户个人主页主要是用户信息的展示,从个人的主页、文章信息的归档、分类和标签的划分以及用户本身的个人信息等方面来展示。这些模块中,个人首页、归档、分类、标签中的内容都是用户自己定制的,也就是说每个人都可以不一样,是根据用户在用户管理的操作来决定的。
用户管理是个人信息设置的模块,可以实现个人信息的维护和个人主页的定制。用户管理的功能主要包括修改用户个人基本信息和密码,查看个人通知,发布新的文章,对自己发布的文章进行管理,对其他用户针对自己文章的评论进行管理以及对发布文章时需要设置的分类标签信息进行管理。
2.1 系统的主要功能模块
系统主要分为3大模块:平台首页模块、个人主页模块和用户管理模块(见图1)。
图1 系统的主要功能模块
平台首页模块包括:(1)注册用户。用户进入注册页面,可以注册账户信息。注册用户和未注册用户的权限不同,未注册用户不能提交评论信息,不能进入用户管理模块。(2)登录系统。为满足一些功能的需求,系统会要求并提示用户登录。(3)浏览平台文章。进入首页后,可以看到一个平台所有文章的列表,列表的每一项有文章的主题和简略内容,点击可以进入详细页面进行查看,平台最新发布的文章会优先显示到平台列表的最前面。(4)搜索。用户可以根据关键字搜索自己感兴趣的内容,系统对用户输入的关键字进行筛选,重新渲染文章列表,显示筛选结果。(5)查看文章详细信息。(6)提交评论。用户读完文章后,可以提交自己的评价。
个人主页模块包括:(1)浏览个人主页。以一个缩略信息的列表显示该用户所发布的文章。左侧有导航栏,分别可以进入归档、分类等其他用户前台的模块。(2)查看归档信息。以时间轴的形式显示用户发布文章的历程。(3)查看分类信息。主要显示用户设置的分类信息,将用户发布的文章以用户设置的分类进行划分,用户可根据分类快速找到自己曾经发布的文章。(4)查看标签信息。主要显示用户设置的标签信息,将用户发布的文章以其设置的标签信息进行划分,用户可根据标签信息快速找到自己曾经发布的文章。(5)查看关于自己。是关于用户自己的一些介绍,包括基本信息和其他信息,如技能、喜好、事迹等。
用户管理模块包括:(1)修改个人信息。是对用户本身账户信息的修改,用户可以修改诸如邮箱之类的基本信息。(2)修改密码。(3)查看个人通知。展示发布的最新文章和其他用户的评论通知。(4)发布新文章。该部分是一个供用户在线编辑与发布新文章的模块,采用Markdown语法进行编辑,用户需要拟定主题,设置文章选用的模板以及文章的分类、标签信息,然后以Markdown的语法进行编辑,编辑结束后可以选择发布或拟定草稿。(5)管理文章信息。用户在该模块可以对自己已经发布的文章进行管理,包括编辑、修改和删除。(6)管理评论信息。进入该模块,以列表的形式显示其他用户对该用户文章所提交的评论,用户可以审核该评论的内容,审核通过则会在用户前台显示。对于不合理或不恰当的评论,用户可以审核不通过或删除評论。(7)管理分类标签。主要针对的是用户发布文章时,需要设置分类标签信息的管理。 2.2 數据存储设计
本系统主要的实体对象包括用户信息实体、系统日志信息实体、文章信息实体、评论信息实体以及项目信息实体(见图2)。(1)用户实体。作为一个供用户在线交流的平台,其用户是一个群体,是整个系统的核心。(2)日志实体。在系统的运行过程中,管理员需要时刻监测整个系统的运行,查看用户的操作信息,所以日志信息需要作为一个实体。(3)文章实体。本系统是一个文章发布平台,所以文章信息也是一个重要的元素。将文章抽象为一个实体,包括主题、分类、标签、作者等信息。(4)评论实体。在用户阅览文章后,肯定会有一定的看法或者评论,而这些评论需要一个实体对象来承载,主要包括评论人、评论内容等。(5)项目实体。正常来说,每篇文章都有自己的标志,就像图书馆里的书籍,每一本书都需要分类入库。在系统中的文章也应该有自己的分类和标签,在用户需要快速找到一篇文章时,就可以通过分类信息和标签信息去筛选[5]。
2.3 拦截器算法设计
在用户访问系统资源时,系统会对用户的访问进行拦截,检查当前用户信息与确认信息是否一致,若不一致,则拒绝用户对系统资源的访问;若一致,则放行。
对用户的拦截处理需要写入系统的配置,本系统基于SpringBoot框架,除了一些必要的配置写在application.yml文件中,其他需要添加的配置信息则通过继承WebMvcConfigurerAdapter来实现。
拦截器的核心代码如下:
// 请求拦截处理
UserDomain user = TaleUtils.getLoginUser(request);
if (null == user) {
Integer uid = TaleUtils.getCookieUid(request);
if (null != uid) {
user = userService.getUserInfoById(uid);
request.getSession().setAttribute(WebConst.LOGIN_SESSION_KEY, user);
}
}
// 设置GET请求的token
if (request.getMethod().equals("GET")) {
String csrf_token = UUID.UU64();
// 默认存储30分钟
cache.hset(Types.CSRF_TOKEN.getType(), csrf_token, uri, 30 * 60);
request.setAttribute("_csrf_token", csrf_token);
}
return true; // 返回true才会执行postHandle
对于用户的每一次访问,系统都会检查cookie信息,若cookie信息已经失效,系统会转向登录页面,提示用户重新登录,才能获取对应的权限。此外,用户登录的有效时间设置为30 min。当用户登录系统超出30 min后,用户登录系统的账户信息会失效,系统会提示用户重新登录,这样可以避免用户操作过程可能存在的一些安全性和保密性问题。
3 结语
本文提出的系统设计方案已经实现,经各方验证完全可行,运行稳定,安全性好,使用方便。整个系统的开发过程中,有学生的参与,因此,有很强的针对性、实用性,也大大激发了参与学生在开发系统过程中的开发兴趣和热情。
作者简介:张振球(1980— ),男,江苏徐州人,讲师,学士;研究方向:软件开发。
图2 系统实体对象
[参考文献]
[1]SCHOMAKER M,HEUMANN C.Bootstrap inference when using multiple imputation[J].Statistics in Medicine,2018(2):434.
[2]GUTIERREZ F.Security with Spring Boot[M].California:Apress,2018.
[3]赵璘,王红霞.基于Spring MVC+JDBCTemplate的Web系统的研究与应用[J].软件工程,2017(1):5-8.
[4]李枭,任维政.基于SpringMVC的多平台J2EE开发方式研究[J].吉林大学学报(信息科学版),2017(5):99-105.
[5]龙德应,唐嫦燕.运用Bootstrap优化响应式高校图书馆数字资源系统的研究[J].农业图书情报学刊,2018(4):43-47.
Design and implementation of campus article publishing system based on SpringBoot
Zhang Zhenqiu
(Xuzhou Economic and Trade Branch, Jiangsu Union Technical Institute, Xuzhou 221000, China)
Abstract:This paper analyzes the system is developed with the SSM mode and the SpringBoot framework, uses Maven as a tool for project management and construction. The system adopts a hierarchical design on the framework and reduces the coupling degree of the system. This design facilitates the post-maintenance of the system and enhances the scalability of the system. The use of SpringBoot and Maven technology makes the construction and management of the project more convenient. In addition, the front end uses the Bootstrap framework and the Thymelaef technology.
Key words:campus article publishing platform; SpringBoot; Maven; layered design
关键词:校园文章发布平台;SpringBoot;Maven;分层设计
本文开发的校园文章发布平台中,用户在使用时可以实现注册登录,进入平台首页查看其他用户发布的文章,并进行评价,可以进入其他用户的主页查看,登录后台发布文章和设置自己的个人主页。系统在架构上采用分层设计,从而降低系统的耦合度,以便于后期维护,利用SSM(Spring+SpringMVC+MyBatis)框架集模式和SpringBoot框架进行整合开发[1-2]。
1 关键技术
1.1 MVC设计模式
模型—视图—控制器(Model-View-Controller,MVC)是一种软件设计的典型设计方法。它将系统的业务逻辑、数据、界面显示分离开来,采用分而治之的思想对待程序系统,当系统需求发生变更时,只需要针对性地改动其相对应的部分即可。
1.2 SSM框架技术
SSM框架是Spring MVC,Spring和Mybatis框架的整合,采用标准的MVC设计思想,将整个系统划分为表现层、Controller层、Service层、DAO层4层[3]。使用Spring MVC负责请求的转发和视图的管理;使用Spring实现业务对象的管理;使用Mybatis作为数据对象的持久化引擎。Spring是一个开源框架,主要优势是分层架构。Mybatis是对JDBC的封装,可以让数据库底层的操作变得透明。
1.3 SpringBoot框架技术
SpringBoot是一个快速开发框架,能够迅速地将一些常用的第三方依赖整合起来。Spring Boot简化了XML配置,采用注解的形式,内置了HTTP服务器(Jetty和Tomcat),最终以Java应用程序进行执行[4]。
2 系统实现
对于用户功能结构,将从平台首页、用户个人主页、用户管理3个模块进行设计。
用户在平台首页可以进行账户信息的注册、系统登录以及进入管理页面。用户进入平台首页看到的是平台内所有文章的列表,平台上会显示最新发布的用户文章。另外,用户如果有自己感兴趣或者想要了解的内容,可以根据关键字进行搜索。用户可以点击查看文章的详细页面,在文章的底部看其他用户提交的评论信息,也可以提交自己的评价。
用户个人主页主要是用户信息的展示,从个人的主页、文章信息的归档、分类和标签的划分以及用户本身的个人信息等方面来展示。这些模块中,个人首页、归档、分类、标签中的内容都是用户自己定制的,也就是说每个人都可以不一样,是根据用户在用户管理的操作来决定的。
用户管理是个人信息设置的模块,可以实现个人信息的维护和个人主页的定制。用户管理的功能主要包括修改用户个人基本信息和密码,查看个人通知,发布新的文章,对自己发布的文章进行管理,对其他用户针对自己文章的评论进行管理以及对发布文章时需要设置的分类标签信息进行管理。
2.1 系统的主要功能模块
系统主要分为3大模块:平台首页模块、个人主页模块和用户管理模块(见图1)。
图1 系统的主要功能模块
平台首页模块包括:(1)注册用户。用户进入注册页面,可以注册账户信息。注册用户和未注册用户的权限不同,未注册用户不能提交评论信息,不能进入用户管理模块。(2)登录系统。为满足一些功能的需求,系统会要求并提示用户登录。(3)浏览平台文章。进入首页后,可以看到一个平台所有文章的列表,列表的每一项有文章的主题和简略内容,点击可以进入详细页面进行查看,平台最新发布的文章会优先显示到平台列表的最前面。(4)搜索。用户可以根据关键字搜索自己感兴趣的内容,系统对用户输入的关键字进行筛选,重新渲染文章列表,显示筛选结果。(5)查看文章详细信息。(6)提交评论。用户读完文章后,可以提交自己的评价。
个人主页模块包括:(1)浏览个人主页。以一个缩略信息的列表显示该用户所发布的文章。左侧有导航栏,分别可以进入归档、分类等其他用户前台的模块。(2)查看归档信息。以时间轴的形式显示用户发布文章的历程。(3)查看分类信息。主要显示用户设置的分类信息,将用户发布的文章以用户设置的分类进行划分,用户可根据分类快速找到自己曾经发布的文章。(4)查看标签信息。主要显示用户设置的标签信息,将用户发布的文章以其设置的标签信息进行划分,用户可根据标签信息快速找到自己曾经发布的文章。(5)查看关于自己。是关于用户自己的一些介绍,包括基本信息和其他信息,如技能、喜好、事迹等。
用户管理模块包括:(1)修改个人信息。是对用户本身账户信息的修改,用户可以修改诸如邮箱之类的基本信息。(2)修改密码。(3)查看个人通知。展示发布的最新文章和其他用户的评论通知。(4)发布新文章。该部分是一个供用户在线编辑与发布新文章的模块,采用Markdown语法进行编辑,用户需要拟定主题,设置文章选用的模板以及文章的分类、标签信息,然后以Markdown的语法进行编辑,编辑结束后可以选择发布或拟定草稿。(5)管理文章信息。用户在该模块可以对自己已经发布的文章进行管理,包括编辑、修改和删除。(6)管理评论信息。进入该模块,以列表的形式显示其他用户对该用户文章所提交的评论,用户可以审核该评论的内容,审核通过则会在用户前台显示。对于不合理或不恰当的评论,用户可以审核不通过或删除評论。(7)管理分类标签。主要针对的是用户发布文章时,需要设置分类标签信息的管理。 2.2 數据存储设计
本系统主要的实体对象包括用户信息实体、系统日志信息实体、文章信息实体、评论信息实体以及项目信息实体(见图2)。(1)用户实体。作为一个供用户在线交流的平台,其用户是一个群体,是整个系统的核心。(2)日志实体。在系统的运行过程中,管理员需要时刻监测整个系统的运行,查看用户的操作信息,所以日志信息需要作为一个实体。(3)文章实体。本系统是一个文章发布平台,所以文章信息也是一个重要的元素。将文章抽象为一个实体,包括主题、分类、标签、作者等信息。(4)评论实体。在用户阅览文章后,肯定会有一定的看法或者评论,而这些评论需要一个实体对象来承载,主要包括评论人、评论内容等。(5)项目实体。正常来说,每篇文章都有自己的标志,就像图书馆里的书籍,每一本书都需要分类入库。在系统中的文章也应该有自己的分类和标签,在用户需要快速找到一篇文章时,就可以通过分类信息和标签信息去筛选[5]。
2.3 拦截器算法设计
在用户访问系统资源时,系统会对用户的访问进行拦截,检查当前用户信息与确认信息是否一致,若不一致,则拒绝用户对系统资源的访问;若一致,则放行。
对用户的拦截处理需要写入系统的配置,本系统基于SpringBoot框架,除了一些必要的配置写在application.yml文件中,其他需要添加的配置信息则通过继承WebMvcConfigurerAdapter来实现。
拦截器的核心代码如下:
// 请求拦截处理
UserDomain user = TaleUtils.getLoginUser(request);
if (null == user) {
Integer uid = TaleUtils.getCookieUid(request);
if (null != uid) {
user = userService.getUserInfoById(uid);
request.getSession().setAttribute(WebConst.LOGIN_SESSION_KEY, user);
}
}
// 设置GET请求的token
if (request.getMethod().equals("GET")) {
String csrf_token = UUID.UU64();
// 默认存储30分钟
cache.hset(Types.CSRF_TOKEN.getType(), csrf_token, uri, 30 * 60);
request.setAttribute("_csrf_token", csrf_token);
}
return true; // 返回true才会执行postHandle
对于用户的每一次访问,系统都会检查cookie信息,若cookie信息已经失效,系统会转向登录页面,提示用户重新登录,才能获取对应的权限。此外,用户登录的有效时间设置为30 min。当用户登录系统超出30 min后,用户登录系统的账户信息会失效,系统会提示用户重新登录,这样可以避免用户操作过程可能存在的一些安全性和保密性问题。
3 结语
本文提出的系统设计方案已经实现,经各方验证完全可行,运行稳定,安全性好,使用方便。整个系统的开发过程中,有学生的参与,因此,有很强的针对性、实用性,也大大激发了参与学生在开发系统过程中的开发兴趣和热情。
作者简介:张振球(1980— ),男,江苏徐州人,讲师,学士;研究方向:软件开发。
图2 系统实体对象
[参考文献]
[1]SCHOMAKER M,HEUMANN C.Bootstrap inference when using multiple imputation[J].Statistics in Medicine,2018(2):434.
[2]GUTIERREZ F.Security with Spring Boot[M].California:Apress,2018.
[3]赵璘,王红霞.基于Spring MVC+JDBCTemplate的Web系统的研究与应用[J].软件工程,2017(1):5-8.
[4]李枭,任维政.基于SpringMVC的多平台J2EE开发方式研究[J].吉林大学学报(信息科学版),2017(5):99-105.
[5]龙德应,唐嫦燕.运用Bootstrap优化响应式高校图书馆数字资源系统的研究[J].农业图书情报学刊,2018(4):43-47.
Design and implementation of campus article publishing system based on SpringBoot
Zhang Zhenqiu
(Xuzhou Economic and Trade Branch, Jiangsu Union Technical Institute, Xuzhou 221000, China)
Abstract:This paper analyzes the system is developed with the SSM mode and the SpringBoot framework, uses Maven as a tool for project management and construction. The system adopts a hierarchical design on the framework and reduces the coupling degree of the system. This design facilitates the post-maintenance of the system and enhances the scalability of the system. The use of SpringBoot and Maven technology makes the construction and management of the project more convenient. In addition, the front end uses the Bootstrap framework and the Thymelaef technology.
Key words:campus article publishing platform; SpringBoot; Maven; layered design