基于JavaEE的个人博客系统的设计与实现

2016-12-21 11:32储雷张健
电脑知识与技术 2016年28期
关键词:配置文件开发人员博客

储雷+张健

摘要:随着近年来以Internet为核心的计算机网络技术的飞速发展,网络交流工具和互动平台也得到快速发展,论坛、博客、社区、空间等成为人们日常生活的一部分。其中,博客以其内容丰富、操作简单、开放互动、展示个性和持续更新的特点备受广大网民的喜爱。该博客系统的设计,基于SpringMVC框架技术和Hibernate数据库访问技术,后台数据库采用企业级大型关系数据库Oracle进行数据存储,网络应用服务器采用免费开源的Tomcat服务器,前端页面采用JSP(Java Server Page)动态网页技术进行开发。系统主要功能有:用户的登录注册,文章的添加、查询、修改、分享和删除,相册的创建、删除以及图片的上传,管理员对文章进行管理。主要模块分为用户模块 、博文模块和相册模块。

关键词:地球村;博客;Spring MVC;Hibernate;JSP

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)28-0117-04

Abstract: With the rapid development in recent years, with Internet as the core of computer network technology, network communication and interaction platform is developing rapidly. Forum, blog, community, space has become part of our daily life. The characteristics of blog to the rich, simple, open and interactive, the display of personality and updating by majority of Internet users. The design of the blog system, based on SpringMVC framework technology and Hibernate database access technology, The backstage database uses Oracle large enterprise relational database for data storage, The network application server using the Apache Software Foundation free open source Tomcat server, The front page using JSP dynamic web technology development. The main functions of the system are: user login registration, the query, modify, delete and share, create albums, upload pictures, delete, administrators to manage. The main module is divided into user module, blog module and photo album module.

Key words: global village; blog; Spring MVC; Hibernate; JSP

在互联网高速发展和网民规模不断扩大的今天,人们对网络交流工具和互动平台的要求也迅速提高,因此出现了如论坛、微博、博客、社区、空间等形式多样的网络互动工具[1]。博客技术的出现进一步拉近了网络和人们生活之间的距离,人们可以轻松、自由、随时随地地创建、维护自己的网络空间,博客也逐渐成为网民进行在线沟通交流的开放平台。博客,仅音译,英文名为Blogger,为Web Log的混成词。它的正式名称为网络日志;又音译为部落格或部落阁等,是一种通常由个人管理、不定期张贴新的文章的网站[2]。Blog站点所形成的网状结构促成了不同于以往社区的Blog文化,Blog技术缔造了“博客”文化。个人博客是当今网络的热点,越来越多的网民开始将自己的想法、感受、心情等以文字、图片或多媒体的形式发布到网络中,以便于与朋友或其他浏览者分享,方便快捷。

在过去开发的一些网络交流工具和互动平台中,大部分是使用的是ASP.NET + SQL Server + IIS,这种方式存在一个最大的缺点就是无法移植到其他平台上运行,即无跨平台性。而当前流行博客开发技术采用的是JSP + Oracle + Tomcat的模式,其最大的特点就是跨平台。

1 开发技术介绍

1.1 JSP动态网页技术

JSP(Java Server Page)即Java服务器页面,是由sun公司负责开发的一种动态网页开发技术[3]。JSP动态网页开发技术是相对于传统的HTML静态页面而言,在JSP出现之前,软件开发人员如果需要对静态的HTML页面进行数据更新,必须通过Java Servlet,将要修改的数据通过out.write("tag")这种输出流动态打印到前端页面。这是一项非常费时费力的工作,增加了程序员编程的复杂程度和枯燥程度。而且,传统的Servlet开发会使Servlet文件中存在大量的html标签和多余的静态文本,使得此文件结构变得非常复杂混乱,进而导致开发效率大大降低。JSP动态网页技术继承了JAVA语言的优点[4]。JSP出现之后,大大降低了软件开发人员的开发难度。JSP在传统的html页面中添加java程序段和jsp标签,降低了Servlet的开发难度[5]。

JSP页面大致由五大部分组成:静态的html标签、内容注释、指令元素、脚本元素以及动作元素[6]。其页面的组成如图1所示:

1.2 Spring MVC框架技术

Spring Framework是一个轻量级的、为了降低企业级应用程序开发的复杂度的Java/Java EE全功能栈(full-stack)开源框架[7]。

Spring的最大特点,方便解耦合,简化开发[8]。Spring提供的IoC控制反转容器(Inversion of Control)将各个实例之间的依赖关系交给Spring进行控制,有效地规避了硬编码(Hard-Coding)所带来的程序过度耦合。通过Spring,开发人员只需要关注上层的业务逻辑,而不需要对如单例模式类和配置文件解析等底层需求编写多余的代码。Spring还提供了对面向方面编程(AOP)编程的支持,AOP编程解决了用传统的面向对象(OOP)编程所无法解决的问题。除此特性之外,Spring更容易集成各种优秀的开发框架,如Hibernate、Struts、Mybatis和Hessian,Spring都提供了对这些ORM框架的支持[9]。同时,Spring也提供了对Java EE API的进一步封装,大大降低了开发人员对Java EE API的使用难度[10]。传统的软件测试是开发人员比较头疼的一个问题,在Spring里,可以通过Junit4,使用注解对程序进行更方便的单元测试。

1.3 Hibernate数据库访问技术

Hibernate是一个开源的ORM(Object Relational Mapping)数据持久层框架,它实现了Java对象和数据库中数据表的一一映射,对传统的JDBC操作数据库的方法进行简单封装,使得操作数据库变得简单。Hibernate不仅实现Java类和数据库中的数据表的映射,还提供了非常容易使用的CRUD方法,大幅度减少开发时人工使用JDBC和SQL语句处理数据的时间,极大地提高了软件开发效率。

由图5所示,Hibernate通过xml或properties配置文件可以实现java类和数据表的映射,这种方式如今依然有人在使用。但是随着Hibernate更高版本的发布,传统的这种通过引入外部配置文件的配置方式显得复杂。在Hibernate4之后,可以直接通过注解的方式直接java类中来声明持久性映射。

2 系统的分析与设计

2.1系统需求分析

该博客系统的设计,主要完成用户登录注册模块、博客文章的分类、展示、搜索模块以及个人用户对博文的发表、修改、删除、关注和收藏、个人相册和消息处理等模块。匿名用户(未注册)可以选择注册、浏览博客。匿名用户注册之后成为注册用户,注册用户可以对个人信息进行管理、评论管理、文章管理和相册管理。系统管理员可以进行用户管理和文章管理。

2.2系统流程分析

当用户登录系统之后,首先进入的是博客首页,用户可以浏览首页精选博客文章,此时,用户只有浏览的权限。用户可以通过单击导航栏的登录\注册按钮进行登陆或者注册。如果是已经注册的用户可以直接登陆,否则只能先进行注册。当用户注册之后,可以进入自己的博客空间,对自己的个人信息进行管理,可以发布文章和创建相册,进而上传照片。

如果是管理员账户,登录之后可以对所有注册用户和文章进行检索和删除操作。

系统流程图如图7所示:

2.3数据库设计

根据需求分析,数据库的数据表以及E-R关系模型设计如下:

1)用户表:用户ID、姓名、密码、性别、出生日期、现居住地、故乡、电子邮件、头像、兴趣爱好、注册时间。

2)文章表:文章ID、标题、创建者ID、内容、创建时间、最后一次修改时间、是否暂存到草稿箱、类别、阅读次数、收藏次数、转发次数、是否被删除。

3)评论表:评论ID、评论人ID、评论内容、评论时间、评论是否被删除、评论文章ID、评论人姓名。

4)相册表:相册ID、相册名称、相册描述、创建时间、创建人、是否加密、是否被删除。

5)照片表:照片ID、照片名称、照片描述、上传时间、所属相册、是否加密、保存路径、是否删除。

6)转发表:转发ID、转发人、转发时间、是否取消转发、文章ID。

7)收藏表:收藏ID、收藏人、收藏文章标题、收藏时间、收藏是否被删除。

8)粉丝表:当前用户ID、粉丝ID、粉丝姓名、成为粉丝的时间、是否删除。

9)管理员表:管理员ID、姓名、密码、邮箱。

核心E-R关系图如图8所示:

3 功能核心代码实现

3.1 系统框架的搭建

一个系统框架搭建的是否合理,直接影响着该系统的效率。次博客系统采用的是Spring MVC和Hibernate相结合的方式进行开发。首先搭建SpringMVC环境:新建applicationContext.xml文件,作为Spring的核心配置文件。在此配置文件中首要的是定义受环境影响易变的变量,通过org.springframework.beans.factory.config.PropertyPlaceholderConfigurer的locations属性来加载变量。具体配置如下:

classpath:config/blog/blog.xml

加载变量之后,要进行数据源的配置,为操作数据持久层提供基础。在此数据源的配置中,使用的是阿里巴巴的DruidDataSource数据源,Druid适用于大数据高并发的数据操作,此系统使用其作为数据源,有利于使其性能达到最优状态。

3.2系统核心功能实现

由于使用了SpringMVC并开启了Spring的注解配置,所以该系统从视图层到业务逻辑层再到最后的数据持久层,使用几乎完全相同的调用方式。现已对博客文章的操作为例说明系统流程:

(1)Controller控制层:

@RequestMapping(value = "addEssay")

public void createBlog(HttpServletResponse response, BlogEssayblogEssay, String option, String essayid) throws IOException {

blogEssayService.addEssay(blogEssay);

response.getWriter().write("博文创建成功");}

(2)Service业务逻辑层:

public void addEssay(BlogEssayblogEssay) {

blogEssayDao.insert(blogEssay); }

(3)Persistence数据持久化层:

public void insert(BlogEssayblogEssay) {

Session session = sessionFactory.getCurrentSession();

session.save(blogEssay); }

4 总结

本文以JAVA EE为基础,采用SpringMVC + Hibernate + Oracle等技术来实现最终的系统开发与设计。在该设计中,充分体现了Spring MVC三层架构技术的应用,以及Hibernate对数据库操作的方便快捷,采用Oracle数据库可以应对未来大数据量处理的考验。在大数据时代,此系统可做进一步的升级开发,例如,站内搜索使用Solr作为搜索引擎,采用MongoDB用作索引存储,加入网页缓存、后台数据缓存,网站采用Ngix用作负载均衡。

参考文献:

[1] CNNIC.第37次中国互联网络发展状况统计报告[EB/OL]. (2016-01-22)/[2016-03-12].http://www.cnnic.cn/hlwfzyj/hlwxzbg/201601/P020160122469130059846.pdf.

[2] 百度百科[EB/OL]. (2016-07-14). http://baike.baidu.com/view/1509.htm.

[3] 林龙.JSP+Servlet+Tomcat应用开发[M]. 北京:清华大学出版社,2015.

[4] 牛德雄.基于MVC的JSP软件开发案例教程[M]. 北京:清华大学出版社,2014.

[5] 李明欣,林琳.基于BootStrap3的JSP项目实例教程[M]. 北京:北京航空航天大学出版社,2015.

[6] 杨谊,喻德旷.JSP网络程序设计与案例开发教程[M]. 北京:人民邮电出版社,2014.

[7] Dragos-Paul Pop, Adam Altar. Designing an MVC Model for Rapid Web Application Development[J]. Procedia Engineering,2014(2):4-5.

[8]戴克. Spring MVC学习指南[M]. 林仪明,崔毅,译. 北京:人民邮电出版社,2015.

[9] Xuan Yin, Wei Zheng, Ming Zhang, et al. A modularized operator interface framework for Tokamak based on MVC design pattern[J]. Fusion Engineering and Design,2014(1):3-4.

[10] 舒礼莲. 基于Spring MVC的Web应用开发[J].计算机与现代化,2013(11):2-3.

猜你喜欢
配置文件开发人员博客
Semtech发布LoRa Basics 以加速物联网应用
忘记ESXi主机root密码怎么办
打印机设置
三星SMI扩展Java论坛 开发人员可用母语