第一篇:基于mvc架构的校内论坛系统
摘要:随着信息技术的飞速发展,人们之间的交流也越发便捷。而针对不同的客户群,急需一个公用平台进行相互交流。论坛(BBS)就是在这样的背景下应运而生。针对大学生这个特殊客户群的特殊需求,对广西工学院鹿山学院的在校大学生进行了具体的调研与分析。在此基础上开发了一个实用于本校大学生一个论坛(BBS)系统。该系统基于B/S模式,采用JAVA语言结合SQL Server2005数据库技术进行开发。系统采用三层构架,使用Ajax技术,实现不同应用程序以及异构之间的数据共享,提高了系统的运行速度。具有很好的实际意义和技术支持。
关键词:BBS;S.S.H(Struts;Hibernate;Spring);JAVA;JSP
中图分类号:TP393文献标识码:A文章编号:1009-3044(2011)17-4081-02
Investigation and Realization of Campus BBS System Based on MVC Pattern
FENG Xue-wen
(Department of Computor Engineering, Lushan College, Guangxi University of Technology, Liuzhou 545006, China)
Abstract: With the rapid development of information technology, the communication between people become increasingly convenient.In light of different client groups, it is imperative to set a plattform for communicating.Internet Bulletin Board System(BBS)came into being against this background.In line with university students’ special requirements, survey and investigation against the students in Lushan College of Guangxi University of Technology was conducted.Thus, an applicable BBS system based on B/S pattern was developed.The mentioned system was developed by integrating JAVA program language and SQL Server 2005 database.By applying Ajax technology and three-tier framework, data between different application programs and heterogeneous structures could be shared effeciently, resulting in rapid running speed.Thus, more practical performances and better technical support were achieved.Key words: Internet Bulletin Board System(BBS);S.S.H(Struts,Hibernate,Spring);JAVA;JSP
论坛的主要目的是提供给某种特殊客户群一个资源共享平台,人们可以在这个平台上进行交流与互动。目前国内自己开发的论坛(BBS)基本上都是处于最原始的JSP MODEL1模式, 这种模式是控制层与表示层合二为一,虽然开发简单,但是扩展性和可维护性很差,这样极大的限制了BBS网站的扩展,而本论坛 基于MVC模式的S.S.H框架[3](Sturts+Spring+hibernate)的论坛(BBS),这种三层构架能具有强大的可扩展性和可维护性,非常适合网民创建自己的中小型BBS论坛。本论坛是针对在校大学生的具体需求进行开发,在这里,学生可以通过论坛进行信息查询、信息搜索、信息交流、信息共享,因此具有很好的现实意义。
1MVC架构
MVC(Model--View--Controller)的框架架构,是一种在框架架构设计上分层思想的体现,也是目前绝大部分框架所采用的架构设计。这个架构主要是把一个应用系统分为模型层(Model),表示层(View)和控制层(Controller)。
1)视图(View):代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集以及用户的请求,不包括在视图上业务流程的处理。业务流程的处理交给模型(Model)处理。
2)模型(Model):就是业务流程的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果[2]。业务模型的设计可以说是MVC最主要的核心。对一个开发者来说,主要是专注于业务模型的设计。
3)控制器(Controller)可以理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。
划分控制层的作用也很明显,MVC是一个分发器,选择不同的模型,选择不同的视图,可以完成不同的用户请求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型如何去操作,并且选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化一传播机制。系统设计与实现
2.1 功能模块设计
本系统分为三个大的模块,他们分别是会员资料模块,帖子资料模块和后台管理模块,它的功能层次图如图1所示。
2.1.1 会员模块
此模块用来实现会员的登陆注册和会员资料的修改和查找。
1)会员登陆模块:会员可以通过此模块对论坛进行登陆,登陆后便可以使用所有的会员功能,比如发帖回复等等。
2)会员注册模块:没有会员帐号的用户,可以通过此模块添加会员信息,添加成功后便可登陆论坛,使用会员功能。
3)资料修改模块:已注册的会员在登陆后,可以通过此模块,对会员的基本资料,联系方式,密码,头像等资料进行修改。
4)会员查找模块:已注册的会员在登陆后,可以通过此模块,对会员进行查找,并可以查看对方的资料,联系方式等等,从而方便会员之间的联系。
2.1.2 帖子模块
1)帖子发表模块:已注册的会员在登陆后,可以在相应的论坛中,发表或转载自己的大作,发表成功后,其他会员便可以在相应的论坛中看到这篇帖子,并可以对其进行回复等操作。
2)帖子回复模块:会员在发表完帖子后,用户便可查看相关文章,并可以在文章中对已发表的帖子进行回复。
3)帖子查找模块
会员可以通过此模块,根据帖子的标题和作者,对相关的帖子进行查找。
2.1.3 后台管理
1)帖子查找模块:此模块和帖子模块中的帖子查找类似,只是管理员的搜索条件比普通用户更加的广泛,使搜索变的便捷。
2)帖子管理模块:帖子管理模块是管理员对帖子管理的平台,如果管理员查看到帖子有不适宜发表的内容时,可以对帖子选择删除或者进行锁定等操作,如果看到优秀的帖子,还可以将帖子进行置顶或加精。
3)会员管理模块:管理员可以通过此模块,对会员进行管理,对一些不法的用户可以修改或者删除其资料。
4)论坛模块管理模块:管理员可以通过此模块,对论坛模块的添加,创建,删除等功能。
5)图片管理模块:管理员可以管理用户上传的头像,和在文章里发表的图片,从而加强对图片的控制。
2.2 数据库的E-R模型
数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求[1](信息要求和处理要求)。
数据模型是是数据特征的抽象,从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表与操作提供一个抽象的框架。描述了数据结构、数据操作及数据约束。
E-R图概念化地构建实体间关系的模型,这使得它们区别于数据库模型图。ER图的理念是:项目所有参与者能理解ER图。ER图由不同实体类型、关系、特性和类型构成。实体是诸如用户的实际对象,有时更抽象,但必须有业务意义。特性用于描述实体,关系用于实体之间。1)实体:现实世界中的事物;2)属性:事物的特性;3)联系:现实世界中事物间的关系。实体集的关系有一对一、一对多、多对多的联系。
本系统的E-R图如图2所示。
2.3 系统的实现
通过对在校大学生的具体需求分析,设计出系统的模型,在此基础上对系统进行详细设计、对个功能模块的完善、修改系统中存在的BUG,最终完成了该校园论坛的设计。该系统通过测试成功实现需求分析中的各项功能。结论
通过对系统的设计、调试、测试,最终完成了该校园论坛的设计。本系统在基于B/S模式下结合三层架构的原理[4],把Ajax局部刷新技术成功运用在系统中。实现了校园BBS论坛系统各项功能。很好地解决了广西工学院鹿山学院长期以来学生缺乏一个信息共享平台,具有很好的现实意义。
参考文献:
[1] [2] [3] [4] 邓子云.JSP网络编程从基础到实践[M].电子工业出版社,2009.李容.基于MVC模式的Web应用研究[J].软件导刊,2010,9(1):19-21.惠燕,潘煜.基于SSH的毕业设计管理平台的研究[J].电子设计工程.2011,19(1):23-24.郭燕.MVC模式在B/S体系结构的应用研究[J].软件导刊,2009(33):66-67.本论文转载于易起论文网:http://www.17net.net/Article/805/25624_2.html
第二篇:mvc架构基础知识
现在许许多多的初学者和程序员,都在趋之若鹜地学习Web开发的宝典级框架:Struts2,Spring,Hibernate。似乎这些框架成为了一个人是否精通Java,是否会写J2EE程序的唯一事实标准和找工作的必备基础。
然而,如果在面试的时候问这些程序员,你们为什么要学习这些框架?这些框架的本质到底是什么?似乎很少很少有人能够给我非常满意的答复。因为他们都在为了学习而学习,为了工作而学习,而不是在真正去深入了解一个框架。其实所有的人都应该思考这样的问题:为什么要学习框架?框架到底给我带来了什么?接下来,我们以登录作为一个最简单的例子,来看看不同的年代,我们是怎么写Web程序的。目 录 [-]
1.后来,我们放弃了在页面上写逻辑 2.在很多年前,我们这么写程序的 3.再后来,出现框架 4.我们到底要什么
后来,我们放弃了在页面上写逻辑
后来,程序写得越来越多,我们发现,这种在HTML代码中编写Java代码来完成逻辑的方式存在着不少问题:
1.Java代码由于混杂在一个HTML环境中而显得混乱不堪,可读性非常差。一个JSP文件有时候会变成几十K,甚至上百K。要找一段逻辑,经常无法定位。
2.编写代码时非常困惑,不知道代码到底应该写在哪里,也不知道别人是不是已经曾经实现过类似的功能,到哪里去引用。
3.突然之间,某个需求发生了变化。于是,每个人蒙头开始全程替换,还要小心翼翼的,生怕把别人的逻辑改了。
4.逻辑处理程序需要自己来维护生命周期,对于类似数据库事务、日志等众多模块无法统一支持。
在这个时候,如果有一个产品,它能够将页面上的那些Java代码抽取出来,让页面上尽量少出现Java代码,该有多好。于是许多人开始使用servlet来处理那些业务逻辑。Java代码
1.public class LoginServlet extends HttpServlet { 2.3./*(non-Javadoc)4.* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)5.*/ 6.@Override
7.protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException { 8.String message = null;9.RequestDispatcher dispatcher = req.getRequestDispatcher(“/result.jsp”);10.String name = req.getParameter(“name”);11.String password = req.getParameter(“password”);12.13.UserHandler userHandler = new UserHandler();14.if(userHandler.authenticate(name, password)){ 15.message = “恭喜你,登录成功”;16.} else { 17.message = “对不起,登录失败”;18.} 19.20.req.setAttribute(“message”, message);21.dispatcher.forward(req, resp);22.} 23.}
在这里,我们需要在web.xml中为这个servlet配置url的请求关系。Xml代码
1.
2.
4.com.demo2do.servlet.LoginServlet 5. 6.
7.
8.
代码重构到这里,我们发现,其实我们的工作量本身并没有减少,只是代码从JSP移动到了Servlet,使得整个流程看上去稍微清楚了一些。然而,为了这么点干净,我们付出的代价是什么?为每个servlet都在web.xml里面去做一个url的请求配置!
在很多年前,我们这么写程序的
很多年前,那是一个贫苦的年代,如果我们要使用Java在网页上做一些动态的交互功能。很多人会告诉你一个技术,叫做JSP。在我还对Java非常困惑的时候,就有人告诉我,JSP是个好东西,它可以在HTML代码里面写Java代码来完成逻辑。Html代码
1.<% 2.String name = request.getParameter(“name”);3.String password = request.getParameter(“password”);4.5.UserHandler userHandler = new UserHandler();6.if(userHandler.authenticate(name, password)){ 7.%>
8.
恭喜你,登录成功
9.<% 10.} else { 11.%>12.
对不起,登录失败
13.<% 14.} 15.%>作为一张JSP,它可以接收从别的JSP发送过来的登录请求,并进行处理。这样,我们不需要任何额外的配置文件,也不需要任何框架的帮忙,就能完成逻辑。
再后来,出现框架
时代进一步发展,人们发现简单的JSP和Servlet已经很难满足人们懒惰的要求了。于是,人们开始试图总结一些公用的Java类,来解决Web开发过程中碰到的问题。这时,横空出世了一个框架,叫做struts。它非常先进地实现了MVC模式,成为了广大程序员的福音。
struts的代码示例我就不贴了,网上随便搜搜你可以发现一堆一堆的。在一定程度上,struts能够解决web开发中的职责分配问题,使得显示与逻辑分开。不过在很长一段时间内,使用struts的程序员往往无法分别我们到底需要web框架帮我们做什么,我们到底需要它完成点什么功能?
我们到底要什么
在回顾了我们写代码的历史之后,我们回过头来看看,我们到底要什么?
无论是使用JSP,还是使用Struts1,或是Struts2,我们至少都需要一些必须的元素(如果没有这些元素,或许我还真不知道这个程序会写成什么样子):
1.数据
在这个例子中,就是name和password。他们共同构成了程序的核心载体。事实上,我们往往会有一个User类来封装name和password,这样会使得我们的程序更加OO。无论怎么说,数据会穿插在这个程序的各处,成为程序运行的核心。
2.页面展示
在这个例子中,就是login.jsp。没有这个页面,一切的请求、验证和错误展示也无从谈起。在页面上,我们需要利用HTML,把我们需要展现的数据都呈现出来。同时我们也需要完成一定的页面逻辑,例如,错误展示,分支判断等等。
3.处理具体业务的场所
在这里,不同阶段,处理具体业务的场所就不太一样。原来用JSP和Servlet,后来用Struts1或者Struts2的Action。
上面的这些必须出现的元素,在不同的年代,被赋予了不同的表现形式,有的受到时代的束缚,其表现形式非常落后,有的已经不再使用。但是拨开这些外在的表现形式,我们就可以发现,这不就是我们已经熟门熟路的MVC嘛?
数据 ———— Model 页面展示 ———— View
处理具体业务的场所 ———— Control
所以,框架不重要,概念是王道。只要能够深刻理解MVC的概念,框架对你来说,只是一个jar包而已。
MVC的概念其实就那么简单,这些概念其实早已深入我们的内心,而我们所缺乏的是将其本质挖掘出来。我们来看看下面这幅图,这是一副流行了很多年的讲述MVC模型的图:
在这幅图中,MVC三个框框各司其职,结构清晰明朗。不过我觉得这幅图忽略了一个问题,就是数据是动的,数据在View和Control层一旦动起来,就会产生许多的问题:
1.数据从View层传递到Control层,如何使得一个个扁平的字符串,转化成一个个生龙活虎的Java对象
2.数据从View层传递到Control层,如何方便的进行数据格式和内容的校验?
3.数据从Control层传递到View层,一个个生龙活虎的Java对象,又如何在页面上以各种各样的形式展现出来
4.如果你试图将数据请求从View层发送到Control层,你如何才能知道你要调用的究竟是哪个类,哪个方法?一个Http的请求,又如何与Control层的Java代码建立起关系来?
除此之外,Control层似乎也没有想象中的那么简单,因为它作为一个控制器,至少还需要处理以下的问题:
1.作为调用逻辑处理程序的facade门面,如果逻辑处理程序发生了异常,我们该如何处理?
2.对于逻辑处理的结果,我们需要做怎么样的处理才能满足丰富的前台展示需要?
这一个又一个问题的提出,都基于对MVC的基本概念的挖掘。所以,这些问题都需要我们在写程序的时候去一一解决。说到这里,这篇文章开头所提的问题应该可以有答案了:框架是为了解决一个又一个在Web开发中所遇到的问题而诞生的。不同的框架,都是为了解决不同的问题,但是对于程序员而言,他们只是jar包而已。框架的优缺点的评论,也完全取决于其对问题解决程度和解决方式的优雅性的评论。所以,千万不要为了学习框架而学习框架,而是要为了解决问题而学习框架,这才是一个程序员的正确学习之道。
第三篇:MVC人事管理系统详细设计方案[范文]
人事管理系统详细设计方案
功能实现
在进行了总体设计之后,将进入到软件功能实现阶段,功能实现就是在概要设计的基础上结合用户需求分析对系统的各个模块、各个模块的功能进行实际开发。
5.1 系统首页介绍
如图5.1是系统的登录页面:
图 5.1 登录页面
如图5.2是系统正确登录后的主页面,主页面包括菜单列表、快捷管理、公示板等功能。菜单列表包含了系统的五大功能,快捷管理则有退出系统、快捷审批假条、快捷读邮件等功能;其中系统会根据用户的不同权限,显示不同的功能。
图 5.2 主页面功能展示
5.2 人员管理模块 5.2.1模块简介
人员管理模块是系统的根本所在,如图5.3所示,包括添加员工、删除员工、查询
和修改信息四个功能;修改信息包括修改密码、修改个人信息和修改员工信息。
图 5.3 人员管理模块
5.2.2模块实现
添加员工相关页面:addUser.jsp
图 5.4 添加员工页面
删除员工相关页面:delUser.jsp、delUser1.jsp
图
图 5.5 删除员工页面
图 5.6 删除员工页面(2)
查询相关页面:select.jsp
图 5.7 查询页面
修改员工信息相关页面:updateUser.jsp
图 5.8 修改员工信息
修改密码相关页面:update_pass.jsp
图 5.9 修改密码
修改个人信息相关页面:updSelf.jsp
图 5.10 修改个人信息
5.3 分组管理模块 5.3.1模块简介
本系统对于人员进行分组管理,请假等功能也是建立在分组的基础上的,分组管理模块共有四个功能,分别是:创建分组、删除分组、查询分组和修改分组,其中修改分组又分为四个小功能:添加组员、移除组员、更换组长和修改组信息。如图5.3.1
图 5.11 分组管理模块
5.3.2模块实现
创建分组相关页面:update_groups.jsp
图 5.12 创建分组
删除分组相关页面:delGroup.jsp
图 5.13 删除分组
修改分组相关页面:addGroup.jsp、altManager.jsp、delGroupU.jsp、intUser_group.jsp
图 5.14 修改分组
图 5.15 修改组信息
图5.16 添加组员
图 5.17 移除组员
图 5.18 更换组长
查询分组相关页面:groupselectB.jsp、groupselectD.jsp
图 5.19 查询分组
5.4 备忘录模块 5.4.1模块简介
本模块包括创建备忘、修改备忘、删除备忘和查看备忘四部分;查看又分为查询全部和模糊查询两种方式。
图 5.20 备忘录模块
5.4.2模块实现
创建备忘相关页面:memocreate.jsp
图 5.21 创建备忘
删除备忘相关页面:memodelete.jsp
图 5.22 删除备忘
查看备忘相关页面:memoselect1.jsp、memoselect2.jsp
图 5.23 全部查询
图 5.24 关键字查询
5.5 请假流程模块 5.5.1模块简介
本模块包含创建假条、审批假条和历史查看三个功能,其中审批假条是管理员功能,而总管理员是不能创建假条的。
图 5.25 请假流程模块
5.5.2模块实现
创建假条相关页面:createLeave.jsp
图 5.26 创建假条
审批假条相关页面:leaveperson.jsp
图 5.27 审批假条
历史查看相关页面:selectLeaveSelf.jsp
图 5.28 历史查看
5.6 站内信模块 5.6.1模块简介
本模块包含创建站内信、收件箱、发件箱和草稿箱四个功能;其中包括可以群发邮件、可以添加附件、验证码验证等功能。
图 5.29 站内信模块
5.6.2模块实现
创建站内信相关页面:mailcheck.jsp
图 5.30 创建站内信
发件箱相关页面:MailoutDetail.jsp、MailoutSelect1.jsp
图 5.31 发件箱
收件箱相关页面:MailReceive.jsp.MailReceive2
图 5.32 收件箱
第四篇:系统架构设计师岗位职责
1.负责相关产品的架构设计工作,以及产品间的接口设计及管理。
2.负责指导产品的高层设计,参与重要或高风险模块的设计,控制高层设计的质量。
3.负责或参与公司外部和内部技术规范的制定。
4.负责向相关组织提供关键技术支持。
5.负责在公司内部进行组织领域内的技术知识传递。
6.负责或参与各项研发过程的技术评审工作。
7.与其他部门进行协调、沟通,保证开发与设计相符。
8.负责相关请求的技术分析;负责制订相关的技术解决方案。
9.组织实施技术可行性验证及技术选型工作。
第五篇:系统分析师、系统架构设计师岗位职责
1.负责软件产品的系统分析设计,核心模块实现。
2.负责对产品的整体系统架构,开发及相关管理文档编写。
3.有团队管理经验,并能按照相关研发规范过程进行研发。