mvc框架范文
时间:2023-03-31 09:23:08
导语:如何才能写好一篇mvc框架,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。
篇1
在基于.NET MVC框架的Web出现以前,Web中的主要技术是ASP、JSP等技术,这些技术的应用很容易将业务逻辑与页面显示混合起来,并不利于分工与协作。同时由于在业务逻辑层中含有SQL语句,如果出现数据库变化等,将直接影响到系统修改,其不利于系统维护。因此,基于.NET MVC框架的Web设计成为计算机领域研究重点。
1 MVC优点
MVC的优点主要体现在以下几点:
1.1 共享性
它主要是利用模型完成数据返回的,且可以利用视图实现数据传达,并实现格式化,然后再将这些信息传递到用户手中,在数据分离形式的作用下,也可以有效提升系统代码的移植性与重用性。
1.2 控制性
这一点主要表现在控制器对业务的控制上,它能够结合用户实际情况完成控制,然后从模型层中获得必要的信息,再将这些信息传递到视图层中,并让这些数据显现出来,这样也可以有效提升应用程序的可配置性与灵活性。
2 MVC设计思想
MVC主要由三部分构成,分别为模型层、视图层以及控制器层。为做好NVC设计,就需要充分了解这三个层次:
2.1 视图层
它所代表的是同网页用户的应用界面,也就是Web中的HTML页面。一般来讲,视图层主要是将系统中的数据呈现出来,且为用户提供有利于交互的界面,这样一来也就减少了地其他业务的处理。在实际利用的过程中,视图通常需要提交数据用户以后再接受其他数据,然后再将这些数据以用户需求的方式体现出来,同时,用户也会利用视图层将自己的请求传送到模型中。
2.2 模型层
它是MVC框架中最重要的组成部分,是实现系统逻辑处理的重要组成部分。在模型接收来自视图层的请求以后,就会自动处理,然后再将处理结果在控制器的作用下回馈给视图层。在这一过程中,控制器与视图层均是通过操作的方式进行工作的。
2.3 控制层
对于控制器来说,其功能是将用户发出的请求反映给模型,然后再将模型所给出的结果反映给用户,可以说控制层是视图层与模型之间的中转环节,是反馈用户请求的重要力量,但它并不参与数据处理工作。
3 基于.NET MVC框架的Web设计
对于常规Web应用系统来说,主要分为表示层、业务层以及数据库层几个部分,在表示层中,只有视图与控制器两部分;在业务层中有业务逻辑层、实体层、数据访问及其接口层;在数据层中仅有数据库。要做好基于.NET MVC框架的Web设计,应从以下几方面入手:
3.1 表示层
对于.NET MVC框架来说,在的作用下能够获得良好且有利于MVC设计实现的环境。开发人员只要利用.aspx页面中的开发用户接口就可以将视图展示出来,同时也可以将控制器中的功能体现出来。模型主要对应的则是业务应用部分。为做好基于.NET MVC框架的Web设计,可以在页面控制器的作用下优化MVC,然后在应用程序各个页面的公用方法中编入基类,这样一来,所有页面中都存在基类,它们不仅可以将自己原有的内容体现出来,还具有其他作用。
3.2 业务层
对于业务层来说,它是MVC设计中十分重要的一部分,也是基于.NET MVC框架的Web设计基础,在这一部分的设计中应从以下几方面入手:
(1)保证业务逻辑与数据实体相分离,两者属于不同的组成部分,对于业务逻辑类来说,主要是利用实体对象完成业务规则与逻辑实现的,而实体层则有自己的实体对象,一般来讲只有属性,不存在方法,所以主要用于数据实体展现。
(2)分x数据访问与业务。在这一部分中主要涵盖了数据访问层及其接口层,它的主要作用是让业务逻辑层可以全面的描述业务规则,这样一来就可以用数据访问层完成实体对象与数据库交互。为做好基于.NET MVC框架的Web设计,应将数据访问接口层加入到访问层与业务逻辑层之间,这样不仅可以起到工厂模式的作用还能让数据访问方法构成抽象接口,这样就可以将业务逻辑层与数据访问层分离开来,同时也便于配置文件的修改。
(3)为做好基于.NET MVC框架的Web设计,还要在访问层中应用NHibernate工具,它是以.NET为基础建立起来的关系型数据库,属于对象持久化类库的一种。在NHibernate中不必编写SQL语句,它可以将相关的映射信息保留下来,并存储到原数据中,这样就可以让代码与对象之间存在一定的关联性,并自动生成SQL语句,这样也可以让对象存储到表与字段中。
3.3 模型层
由于模型是应用程序的中心,其中涵盖了很多与应用程序相关的内容,所以,在实际设计中,应进一步强化应用程序的持久化。对于基于.NET MVC框架的Web设计来说,可以将LINQ-TO-SQL应用其中,原因在于这种设计方式不仅有利于,还可以将.NET平台与LINQ机制结合在一起,这也是有效提升数据库处理能力的有效方式。在设计中,可以先为应用程序创建DAL,但不需要编写代码,然后再做进一步细分,并用LINQ完成语句查询,且从数据库中找出所需的实体对象。在设计完成以后,LINQ-TO-SQL就可以将不必要的细节忽略,这样既能有效提升数据库操作的便利性,也能进一步强化业务逻辑开发,更可以加快数据应用程序开发速度。
3.4 控制层
由于控制层主要用于用户请求与输入处理,然后再将结果反馈给客户端,同时完成数据集合与处理,并为其呈现合适的视图,这样就可以将隐藏其中的视图代码消除。为做好设计首先应创建合适的模型,并全面检查数据访问与执行状态,且提供一定的面向对象数据,这样就可以让数据与方法结合在一起,且构成一定的视图。在.NET MVC框架完成以后,也可以更好的完成各个元素之间的协调与组织,这也是有效强化程序元素交互的有效方式。为进一步做好应用程序测试,还要做好类显示输出,以便为用户输入奠定基础,尽管编写程序相对复杂,但且会因.NET MVC框架的不同,将业务逻辑分离开,这样也可以有效提升单元测试效率。
3.5 视图层
在基于.NET MVC框架的Web设计中,视图层主要用于模型展示,在视图层的作用下可以将浏览器中的HTML页面展示出来,所以,在实际时可以利用微软控件实现控制,这样也可以让HTML更加洁与高效。然后通过.NET MVC提供的相关说明了解各个控件的作用,这样就可以顺利完成视图层设计与开发,相关开发也可以有效提升工作效率。在视图层设计完成以后,还可以顺利完成视图检查等,尤其是在编译阶段,可以随时发现隐藏在其中的错误与缺陷,视图模板也将变得更加清晰。
3.6 框架特点
之所以要重视基于.NET MVC框架的Web设计,主要是由于在基于.NET MVC框架的Web设计中,Web中的三层框架带有一定的细分性,不仅可以让结构更加清晰,还能进一步完备相关功能,进而让系统变得更具有条理性与便捷性。其次,做好.NET MVC框架设计,可以让显示层与应用层相互分离,也可以进一步做好页面修改,这也是实现单元测试,强化系统灵活性的有效方式。再者,在基于.NET MVC框架的Web设计实现以后,还可以最大程度的减少依懒性,由于前端页面过于复杂,需要共享的代码也很多,这就需要利用MVC模式完成分离等,这也是有效强化管理,做好修改的有效措施。最后,在基于.NET MVC框架的Web设计中,不仅可以让数据访问与业务逻辑区分开来,还可以强化系统的可移植性与持久性,尤其是在工厂模式的作用下,也可以进一步突出依赖倒置原则,且最大程度的减少数据访问层给系统带来的变化。
4 结束语
之所以要做好Web设计,主要是为了更好弥补原有设计中的不足,为实现这一目标,基于.NET MVC框架的Web设计成为重点,在这样的Web设计完成以后,不仅有效提升了系统灵活性,还进一步提升了可维护性,同时也有效降低了代码编写量与复杂性,促进了开发效率早日完成,因此,应重视基于.NET MVC框架的Web设计。
参考文献
[1]周文红.基于 MVC框架的Web应用开发[J].计算机与现代化,2013(10):197-199.
[2]黄胜根,陈蜀宇.基于 MVC框架的干教系统的设计与实现[J].计算机技术与发展,2010(02):190-193.
[3]刘亚鹏,张征,俞婷.基于MVC多层架构的Web应用框架设计[J].微计算机信息,2011(07):169-171.
[4]许辉.基于 MVC框架的Web设计[J].计算机光盘软件与应用,2014(16):266-267.
[5]黄东连.基于 MVC框架的Web开发研究[J].河南科技,2015(13):26-27.
[6]肖洋.基于的MVC框架的应用开发模式研究[J].电子技术与软件工程,2016(02):63.
[7]满高媛.MVC设计模式在框架中的应用研究[J].软件导刊,2016(04):149-151.
篇2
关键词:PHP;MVC;网页设计
PHP是目前比较流行的网页程序设计脚本语言。MVC(Model View Controller)是模型、视图、控制器的缩写,是一种程序设计规范,主要目的是分离模型和视图,通过控制器管理所有的查询和显示过程,而且MVC框架编写的程序更易于扩展,方便日后的功能扩展和维护工作。
1 数据模型设计
MVC基本框架需要3个文件,分别是test_model.php、test_controller.php、test_view.php,分别对应模型、控制器、视图。
首先编写test_model.php,创建test_model类,包含数据库连接和查询过程,本实例因篇幅原因简单用变量代替复杂的数据查询。内容如下:
//建立数据模型
class test_model{
protected $text1;
protected $text2;
public function __construct(){
$this->my_mvc();}
/*构建赋值过程,如果需要数据库,那么可以在此连接数据库*/
public function my_mvc(){
$this->text1 = "PHP";
$this->text2 = "MVC";}
//在此生成需要显示在视图中的一些数据内容
public function view_data(){
$view_text = "基于" . $this->text1;
$view_text.= "的" . $this->text2 . "框架";
return $view_text;}
}?>
2 控制器设计
其次编写的是控制器test_controller.php部分,控制器部分包含通过实例化test_model并用其中的view_data方法得到的数据,并发送到视图中。
//建立控制器
class test_controller{
function __construct(){
//加载数据模型
require_once "test_model.php";
$this->view_data();}
//显示控制部分,通过数据模型获取数据并显示到视图中
public function view_data(){
$data_model = new test_model();
/*通过数据模型类的view_data方法制作出来的数据放到变量中*/
$view_data = $data_model->view_data();
//通过加载视图文件,将数据显示到视图中
require_once "test_view.php";}
}?>
3 视图和首页设计
视图是显示数据的部分,只需要使用html编写规范设计网页就可以了。而首页index.php里加载并调用控制器就可以了。
test_view.php部分:
var _userid = '';var _siteid =2230;var _istoken = 1;var _model = 'Model03'; WebPageSpeed =453; UrchinTrack();
index.php部分:
//加载控制器
require_once “test_controller.php";
//实例化控制器类
$test = new test_controller();
?>
至此,所有的代码部分全部编写完成,并通过了测试。本文中使用了变量形式的数据,如果需要连接到数据库,那么须在数据模型文件中添加连接数据库的代码,如果建立更多的功能,可以先建立父类,再去建立具体功能子类继承父类,这样就可以更好的减少代码冗余,提高编写和维护效率。
参考文献:
[1]斯克拉(美).PHP经典实例[M].中国电力出版社,2009.
篇3
关键词:Struts,MVC,OA
为了提高应用系统中组件的重用能力和事务控制的灵活性,越来越多的开发人员采用MVC设计模式来分离系统的用户界面、业务逻辑及业务控制[1~3]。Struts框架结构是MVC设计模式的一种具体实现,它为Web应用提供了一个通用的框架,使得开发人员可以把精力集中在如何解决实际业务问题上。此外,Struts框架提供了许多可供扩展和定制的技术,使得应用程序可以方便地扩展框架,更好地适应用户的实际需求。本文首先介绍了MVC模式的基本思想及Struts的工作原理,并以网上办公系统为例,详细地说明了基于Struts框架进行信息管理系统开发的方法与思路。
1 Struts框架
Struts是Apache软件基金的一个开源项目,是基于MVC设计模式构建Java Web应用程序的框架[4]。Struts框架在构建复杂的Web应用时,允许把应用程序的业务逻辑、控制逻辑和表现逻辑进行分离MVC,从而提高系统灵活性、重用性和可维护性,进而简化Web应用程序的开发。
1.1 MVC模式
MVC是80年代Smalltalk中使用的一种软件模式,目前已经被广泛使用,是J2EE平台上推荐使用的设计模式[5]。该模式将应用系统的输入、处理和输出按照Model、View和Controller的方式进行彻底的分离,因此应用系统就被分为了三个核心部分:模型、视图和控制器,它们各自处理各自的事务。
(1)模型(Model):它代表的是应用的业务逻辑,可以对业务流程、状态处理和业务规则的进行制定。业务流程的处理过程对其它部分来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。
(2)视图(View):它代表的是应用的表示,是与用户交互的部分。它一般进行数据的采集,并把数据交给其它部分处理。
(3)控制器(Controller): 它位于模型与视图之间,控制着它们之间的交互处理过程。控制器把客户端来的请求转换成模型能够理解和执行的请求,并且根据请求选择处理的模型,接着根据执行结果决定下一次显示的视图。
图1描述了模型、视图和控制器三者之间的关系。在应用系统开发过程中,通过该设计模式可以将业务逻辑、控制逻辑和表现逻辑分别用用不同的组件实现,以提高代码的重用性和可维护性。
图1 MVC模式图
1.2 Struts工作原理
Struts是一个开放资源框架,是MVC设计模式的一个实现,由一组相互协作的类、Servlet以及JSP标签库组成。Struts 的体系结构将Model、View、Controller 分别映射到 Web 应用中的组件。在Struts中Model由Action和ActionForm对象来实现,所有的Action处理器对象都是Action类的子类,Action处理器对象封装了具体的处理逻辑MVC,调用业务逻辑模块,并且把响应提交到相关的View组件以产生响应。通过ActionForm组件对象实现了对View和Model基本的控制器组件是ActionServlet,但是对于业务逻辑的操作则主要由Action、ActionMapping和ActionForward这几个组件协调完成。其中Action扮演了真正的业务逻辑的实现者,或者说是业务逻辑调用的接口;而ActionMapping和ActionForward则制定了不同业务逻辑或流程的运行方向[ 6],其工作原理如图2所示。
图2 Struts 的工作原理
2 网上办公系统的实现
2.1 系统介绍
网上办公系统是为帮助企事业单位内部员工更好地进行合作或更有效地工作而设计的,旨在实现企事业单位内部的无纸化办公。由于不同单位所需办公系统功能的不同,在此我们选取了网上办公系统中通用的几个模块进行了实现,主要包括:文件夹、待办事项、通讯录、日程安排、文件柜、电子公告、用户设置和系统管理等模块。
2.2 系统实现
由于系统各功能的实现无论是在步骤上,还是在方法上都是大同小异,所以在此以用户登录为例详细说明该系统的实现方法及思路。在登录窗口当用户输入用户名和密码,点击“登录”按钮,即向 Controller 发出一个 HTTP 请求。用户输入的表单参数将以LoginForm的形式封装提交到 ActionForward。这个ActionForward调用相应的 login 执行业务逻辑,完成用户登录功能。以下是登录功能的具体实现过程:
首先,编写登录相关的业务逻辑代码,其具体代码如下所示:
public int login(String uid,String pwd)throws OAServiceException{
Session session=null;
Transaction tx=null;
Query query1=null;
Query query2=null;
int result=1;
try {
session=HibernateUtil.getSession();
tx=session.beginTransaction();
query1=session.createQuery('from User u where u.uid=:vUid');
query1.setParameter('vUid',uid);
if(query1.uniqueResult()==null) return 1;
query2=session.createQuery('from User u where u.uid=:vUid andu.password=:vPwd');
query2.setParameter('vUid',uid);
query2.setParameter('vPwd',pwd);
User u=(User) query2.uniqueResult();
tx.commit();
return((u==null)?2:3);
} catch (Exception e) {
rollBack(tx);
}finally{
closeSession(session);}
return result;}
然后,编写登录要用到的ActionForm类:
package com.lanyu.oa.form;
……
public class LoginForm extends ActionForm {
private String uid;
private String password;
……
public ActionErrors validate(ActionMapping mapping,HttpServletRequest request) {
ActionErrors errors=new ActionErrors();
if(uid.length()<1)
errors.add(ActionErrors.GLOBAL_ERROR,newActionError('errors.uid.required'));
if(password.length()<1)
errors.add(ActionErrors.GLOBAL_ERROR,newActionError('errors.password.required'));
return errors;}
}
接着,编写登录相关的Action类以及相应的方法,登录相关的Action类为com.lanyu.oa.action.UserAction.java,以下是完成登录功能的代码片断:
public ActionForward login(ActionMapping mapping, ActionForm actionForm, HttpServletRequest request,HttpServletResponse response) {
ActionForward forward=null;
String msg=null;
Useru=null;
intresult=0;
LoginForm form=(LoginForm) actionForm;
String uid=form.getUid();
String pwd=form.getPassword();
try {
result=service.login(uid,pwd);
u=service.getUser(uid);
} catch (OAServiceException e) {}
if(u==null)result=2;
forward=processResult(result,msg);
return forward;
}
最后,在配置文件中添加与登录相关的配置。具体步骤如下:
(1) 在Struts的配置文件中找到<form-beans>标签MVC,在此标签下添加子标签<form-bean>。其具体内容如下:
<form-beans>
……
<form-bean name='LoginForm' type='com.lanyu.oa.form.LoginForm'/>
……
</form-beans>
(2) 在Struts的配置文件中找到<ActionMappings>标签,在此标签下添加<action>子元素以及相关的局部<forward>标签。其具体内容如下:
<actionpath='/User/login' parameter='method' type='com.lanyu.oa.action.UserAction'
name='LoginForm'input='/login.jsp' scope='request'>
<forward name='success' path='main.page' redirect='true'/>
</action>
(3)由于本系统中使用了tiles,因此还得在tiles-defs.xml文件中添加相应的配置。
登录模块的运行界面如图3所示,如果登录成功,则进入系统,系统登录成功的主界面如图4所示。
图3 用户登录界
图4 系统主界面
3 结束语
Struts作为一种有效的进行Web应用开发的框架,充分利用了MVC模式的优点。应用Struts框架构建网上办公系统很好地实现了业务逻辑与表示逻辑的分离,大大简化系统开发的难度。尤其是各层逻辑组件的同时开发,缩短了开发周期,其灵活的、大量丰富的标记库语言大大提高了开发效率,而且应用Struts框架构建的Web应用系统,具有良好的可重用性、可维护性和可扩展性。
参考文献
[1]石海鹏.基于MVC模式的J2EE应用研究与开发:[硕士学位论文]. 江西:江西师范大学, 2004.
[2]马黎明.基于J2EE平台的Web应用系统研究:[ 硕士学位论文]. 武汉:武汉理工大学, 2004.
[3]孙卫琴.精通Hibernate:Java对象持久化技术详解[M]. 北京:电子工业出版社, 2005.9
[4]Erich Gamma. J2EE构建企业系统[M]. 北京:清华大学出版社, 2001
[5]James Holmes著, 孙燕等译. Struts程序员查询辞典[M]. 北京:中国铁道出版社, 2005
[6](美)Ted Husted. 实战Struts[M].北京:机械工业出版社,2005.5
篇4
随着互联网宽带技术应用的成熟,以及物流和支付系统的完善,电子商务成为互联网普及应用的主流,影响着千家万户的生活和经济行为,并日益成为社会商业活动的重要形式。因此,各行业均希望可以快速展开网上营销渠道。新形式下,电商网站开发人员如何缩短开发周期,进一步提高工作效率,是每一个程序员所面临的问题。各大WEB框架的出现,使得电商网站服务器端逻辑的设计非常便利,利用它进行网站的开发,可以节省很多的时间和精力。本文基于Spring MVC来构建一个电子商务网站,希望可以对读者学习和使用Spring MVC建站产生一些帮助。
2 网上电商平台Estore(Online electric business
platform estore)
2.1 Estore简介
Estore是采用Java技术设计开发的网上电子商务平台,采用了Spring MVC3、Hibernate3和Freemarker相结合的技术架构。继承了Java高效、跨平台、稳定且安全等多方面的优点[1],能够支持Oracle、Sqlserver、Mysql等数据库,统一在后台管理网站的模板,用户可利用标签自定义显示内容和方式。
2.2 Estore的运行环境
Estore原则上支持全系列JAVA运行环境、数据库,主要使用以下环境:
(1)WEB服务器:Weblogic、Tomcat、WebSphere、JBoss等。
(2)数据库服务器:Oracle、Mysql、SqlServer、DB2等。
(3)操作系统:Windows、Linux、Unix等。
3 基于Spring MVC的电商平台的设计与开发
(The design and development of electric business
platform based on the spring MVC )
3.1 Spring MVC简介
3.1.1 Spring MVC架构
Spring MVC的整体架构如图1所示[2],视图层采用Html或Jsp实现;控制层采用Servlet实现,整个框架采用同一个Servlet,以实现请求的中转;模型层采用Java实现,主要决定用来做什么;在模型层后面添加了一个DAO,目的是将决定做什么和具体怎么做分开。
图1 Spring MVC的架构
Fig.1 The architecture of spring MVC
整个Web框架大致的流程是:首先客户端发送请求,提交Html或Jsp页面给中转器(Servlet);中转器按照客户的请求,选择相应的模型层,即Logic进行相应的逻辑处理;如果需要使用数据库,则通过DAO进行相应的数据库操作。
3.1.2 Spring MVC重要组件
图2 Spring MVC的组件
Fig.2 The component of spring MVC
Spring MVC的组件如图2所示[3]。
(1)Spring MVC将所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责对请求进行真正的处理工作。
(2)DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller。
(3)DispatcherServlet把请求提交到目标Controller。
(4)Controller进行业务逻辑处理后,会返回一个ModelAndView。
(5)Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象。
(6)视图对象负责渲染并返回给客户端。
3.2 Hibernate框架
3.2.1 Hibernate简介
Hibernate是一个开源免费的Java包,它使得程序与数据库的交互变得十分容易,更加符合面向对象的设计思想[4]。Hibernate使开发者可以专注于应用程序的对象和功能,而不用关心如何保存它们或查找这些对象。
在对SQL语句完全不了解的情况下,使用Hibernate仍然可以开发出优秀的包含数据库访问的应用程序。
3.2.2 Hibernate运行过程
图3 Hibernate运行过程
Fig.3 The running process of hibernate
Hibernate的运行过程如图3所示。
应用程序先调用Configuration类,该类读取Hibernate配置文件及映射文件中的信息,并用这些信息生成一个SessionFactory对象,然后从SessionFactory对象生成一个Session对象,并用Session对象生成Transaction对象。可通过Session对象的get()、load()、save()、update()、delete()和saveOrUpdate()等方法对PO(persistent object持久对象)进行加载、保存、更新、删除等操作。
在查询的情况下,可通过Session对象生成一个Query对象,然后利用Query对象执行查询操作:如果没有异常,Transaction对象将提交这些操作到数据库中;如果有异常,则执行回滚操作。
3.3 Freemarker简介
FreeMarker是一个模板引擎[5],它由Java语言编写而成,基于模板来生成文本输出。FreeMarker与Web容器没有关系,即Web运行时,并不知道HTTP或Servlet。它不仅能够用于表现层的实现,而且还可以用于生成Xml、Jsp或Java等。FreeMarker允许Java servlet保持图形设计与应用程序逻辑的分离,这是通过在模板中封装Html完成的。模板用Servlet提供的数据动态地生成Html。模板语言是直观且强大的,编译器的速度快,输出接近静态HTML页面的速度。
虽然FreeMarker具有一些编程的能力,但通常由Java程序负责要显示的数据,由FreeMarker生成页面,通过模板来显示数据。
下面是用Freemarker来做的一个显示页面:
[@post_list]
[#list tag_list as post]
[#list post.types as tlist]
[#if tlist.name == "首页"]
[/#if]
[/#list]
[/#list]
[/@post_list]
3.4 按Spring MVC框架分层设计电商平台
3.4.1 Dao层
Dao层分析模块所要涉及的表,确定表之间的关系,编写Hibernate Mapping文件和持久化类,它使用Hibernate连接数据库、操作数据库(增删改查)。根据模块需要的各种持久化操作,确定对应的方法,据此来编写Dao接口和实现类。
3.4.2 Entity层
Entity层是实体类层,也属于MVC中的model层,它的主要功能是把用户提交过来的参数封装成一个对象给Dao层也就是Hibernate操作。
3.4.3 Service层
引用对应的Dao数据库操作,在这里可以编写自己需要的代码(比如简单的判断、校验等操作)。
3.4.4 Action层
引用对应的Service层,在这里依据配置文件,跳转到指定的页面,当然也能接受页面传递的请求数据,也可以做些计 算处理。
3.4.5 显示层
一个或多个HTML页面为模型提供数据显示,HTML页面主要使用HTML标记和Freemarker标签来显示数据。
综上所述,各层之间的关系为:action调用service中的方法,service调用dao中的方法,调用时的参数使用entity传递,最后把结果显示在HTML界面,以响应用户请求。
4 Estore的个性化功能(Personalization capabilities
of estore )
4.1 Estore标签的执行流程
标签是Estore中的一个重要概念,利用它可以执行许多操作,比如对搜索结果分页、获得商品品牌的列表、获得商品子栏目的列表等,它的执行流程如下:
(1)访问某个页面(如:页头导航栏.html),浏览器执行解析代码,执行到标签时跳转到后台estore-context.xml文件。
(2)estore-context.xml文件中,假如有,在里面找标签对应的class文件(如shop_Category),再找对应的*.java文件。
(3)到后台执行CategoryListDirective类中默认方法execute(如:[@shop_Category parentId=category.id],参数:父类别ID parentId)。
(4)CategoryListDirective类链接数据库,获取目标数据并放入Map集合:
如:Map origMap = DirectiveUtils.addParamsToVariable(env, paramsWrap)。
(5)将获取的目标数据返回给前台,通过标签展示:
[@shop_Category]
首页
[#list tag_list as ctg]
${ctg.name}
[/#list]
[/@shop_Category]
4.2 制作“商业广告位”
一幅色彩绚丽、形象生动的广告作品,能以其非同凡响的美感力量增强广告的感染力,使消费者沉浸在商品和服务形象给予的愉悦中,使其自觉接受广告的引导。在Estore平台上,可以为网站的首页添加一个“商业广告位”,具体步骤如下:
(1)在系统后台的“辅助”中的菜单“广告版位”,添加一个“版位”,(如:页中广告)。
注意:记录下此时的“ID”(如ID=6)。
(2)“广告管理”中,修改“页中广告”,选择图片之后,改一下图片地址,去掉“/u”(如:把‘/u/201403/231829044ug5.jpg’变为‘/201403/231829044ug5.jpg’)。
(3)在“\WEB-INF\t\store\tpl\include\”下,新建文件“页中广告位.html”,内容如下:
注意:此处的ID,其值取自第(1)步中的ID。
(4)在“首页”相应的广告位置,加入如下语句:[#include "../include/页中广告位.html"/]。
至此,即在网站首页添加了一个“商业广告位”,根据客户的需求,只需要更改后台的广告图片,即可在网站首页看到客户的广告宣传。
4.3 Estore的后台处理流程
当用户刚接触Estore时,可能对其后台的处理流程有点头痛,不知道应该如何学习,常常会感觉到无从下手,本文以访问后台的主界面为例,特在此做出一个简要的介绍,用户可以按照以下步骤来了解其处理过程:
(1)用户查看浏览器端的访问请求路径,看要访问资源的后缀名,如“localhost:8080/storeOracle/eadmin/estore/index.do”的后缀名为“*.do”。
注意:“eadmin/estore/”是虚拟访问路径,它在web.xml中设置。
(2)web.xml文件的重要标签:
EStoreAdmin
/eadmin/estore/*
注意:①因为扩展名为“.do”,所以找到值为“/eadmin/estore/*”的。
②“eadmin/estore/”是虚拟访问路径,在此处设置。
(3)去所有的action文件里找到相应“@RequestMapping”的value等于“index.do”的方法,看该方法返回什么字符串(如:“login”)。
(4)去estore-servlet-admin.xml中找到id="freemarkerViewResolver"的bean,该bean中name分别为“prefix”、“suffix”的标签的value的值,正好和步骤(3)中的“login”组成文件名“/estore _sys/login.html”;系统将此页面返回,用户即可直接访问。
(5)登录页login.html会向名叫“index.do”的action发送请求,按照步骤(3)和(4)操作后,可以直接访问文件“/estore_sys/index.html”。
(6)文件“/estore_sys/index.html”里嵌套有“主体框架”:
(7)在main.html里,又有左右两部分frame:
至此,Estore系统后台的主界面全部形成。
5 结论(Conclusion)
通过研究可以证明,利用Spring MVC可以快速地开发一个具有良好架构的电子商务网站,并且易于维护、支持扩展,这大大地提高了建站的效率,节省了大量的时间和精力。同时,电子商务网站的开发还应考虑安全支付、快速物流等问题,这是今后需要研究的对象。
参考文献(References)
[1] Java 2 Platform,Enterprise Edition Specification Version l.2[EB/0L].java.sun.com/J2ee/docus.Htm,2014-05-23.
[2] 陆荣幸,等.J2EE平台上MVC设计模式的研究与实现[J].计算机应用研究,2003,3:144-146.
[3] 何成万,余秋惠.MVC模型2及软件框架Struts的研究[J].计算机工程,2002,6:274-281.
[4] 高昂,卫文学.基于Hibernate与Struts框架的数据持久化应用研究[J].计算机应用,2005,12:2817-2820.
[5] 冷威龙.Freemarker[EB/OL].baike.baidu.com/view/1278430.htm,2014-05-23.
作者简介:
岳绍敏(1988-),男,硕士研究生在读.研究领域:智能系统.
王国春(1978-),男,硕士,讲师.研究领域:软件工程与智能系统.
篇5
关键词:MVC 模型数据绑定 数据篡改
中图分类号:TP393.4 文献标识码:A 文章编号:1007-9416(2016)04-0000-00
1 概述
.NET MVC框架的出现对发展起到了巨大的推动作用,它颠覆了传统通过CodeBehind技术将程序界面aspx文件与逻辑代码vb文件或cs文件分离,由于基于Model(模型)、View(视图)和Controller(控制器)的架构模式,使得开发者能够更加清晰地表达业务逻辑。模型是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据。视图是应用程序中处理数据显示的部分,通常视图是依据模型数据创建的。控制器是应用程序中处理用户交互的部分,通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据[1]。在Web开发中,表单的应用是十分广泛的。用户的注册、登录、修改信息等业务都需要通过表单来实现,表单的内容则会被提交到服务端进行处理,因此,表单数据的安全性极为重要。这里所说的安全性包括两个层面,一个层面是数据本身是否符合指定的范围或格式,另外一个层面是数据是否被篡改。本文讨论的是后者,即表单数据如何防止被篡改[2]。
2 表单模型数据绑定和篡改
.NET MVC框架的应用给我们带来了很多便利,数据模型的绑定让我们快速形成视图,而不必纠结HTML界面和业务逻辑之间来回传值。Html.TextBoxFor、Html.DropDownListFor等方法为模型和HTML表单控件提供了双向绑定,这种绑定无疑把我们从Request和HTML标签中解放出来。图1是MVC框架中各组件之间的关系,其中模型和视图之间的关系是通过绑定来实现,模型信息的改变通过绑定传递数据到视图;视图则通过对表单进行操作从而获取或修改模型信息。
一般情况下,上述模型数据的绑定是相对安全的,可以通过表单的客户端验证和服务端验证进行控制。但在有些情况下,篡改的表单数据通过了表单客户端验证和服务端验证,这样会对系统的安全产生很大的威胁。
图2所示通过将模型绑定数据到表单控件,用户名被设置成为不可修改,后台用户名为主键,在此,只能对用户姓名和用户类型进行修改,用户名对应的表单控件代码在红色矩形框中标识。
通常情况下,上述修改用户姓名和用户类型是安全的,但通过Chrome浏览器的开发者工具、Firebug页面调试工具等可以对页面内容进行篡改。如图3所示,通过工具对用户名表单控件进行修改,去掉表单控件的disabled属性,将用户名的value修改为lisi。这样以来,表单提交的数据修改的是lisi用户的信息。通过这种方式,无形中借用了zhangsan的权限修改了lisi的信息,这种潜在的“漏洞”给用户数据带来的巨大的威胁。
3 处理方法
上述问题的根本原因在于客户端数据的不可信性。解决的办法可以在进入用户信息编辑表单时将用户名记录到Session中,这样即使客户端对用户名进行修改了,也不会对Session中的用户名进行修改,最后提交表单的时候,我们只是获取表单的姓名和用户类型信息,用户名从Session中读取,表单中的用户名只是给客户端起到一个展示的作用。
4 结语
在日益复杂的Web应用中,各种各样的框架以及技术给我们的开发工作带来了极大的便利,然而在获取这些便利的同时,我们更应该思考应用技术过程中隐含的“副作用”。在快速构建Web应用程序的过程中,客户的体验、数据的安全性、应用的稳定性等都是不能忽视的方面。
参考文献
[1] Jon Galloway,Phil Haack,Brad Wilson,K. Scott Allen 著.孙远帅 译. MVC 3高级编程[M].清华大学出版社,2012.
[2] 张炳帅 著.Web安全深度剖析[M].电子工业出版社,2015.
篇6
关键词:MVC;MVP;MVVM
1MVC框架
MVC(Model View Controller)是把软件系统分为模型、视图、控制器3个基本部分。M是指数据模型,V是指用户界面,c则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。
图1为Java实现的MVC模型,Java MVC模式是将Servlet,Jsp和JavaBean结合起来的技术。Servlet适合数据处理,JavaBean用于模型,而Jsp适合显示。这个模式充分发挥了每项技术的优点。
在早期的WEB开发中,因为业务比较简单,并没有这3层的划分。用户数据的呈现及输入的接收、封装、验证、处理、以及对数据库的操作,都放在Jsp页面中。随着业务越来越复杂,需要考虑更好的利用OOP来解决问题。于是便把业务逻辑抽取出来并形成与显示和持久化无关的一层,能够让业务逻辑清晰,产品更便于维护。这就是SUN当初倡导的JSP Model1开发方式。
Modell模式的实现比较简单,适用于快速开发小规模项目。但从工程化的角度看,局限性非常明显:JSP页面身兼View和Controller2种角色,将控制逻辑和表现逻辑混杂在一起,从而导致代码的重用性非常低,增加了应用的扩展性和维护的难度。
Jsp Model2中引入了MVC框架,使用了3种技术JSP、Servlet和JavaBeans,Jsp负责生成动态网页,只用做显示页面。Servlet负责流程控制,用来处理各种请求的分派。JavaBeans负责业务逻辑,对数据库的操作。
大部分Web应用程序都是用像ASP,PHP,或者JSP来创建的。造成了数据库查询语句这样的数据层代码和像HTML这样的表示层代码混在一起。由经验的开发者会将数据从表示层分离开来,交由后台处理,但这通常不是很容易做到的,它需要精心的计划和不断的尝试。而使用MVC框架,应用程序被分成3个核心部件:模型、视图、控制器,各自处理自己的任务。尽管使用MVC框架需要付出一些额外的工作,但是给人们带来的好处是无庸质疑的。
视图(View)代表用户交互界面,通常由网页组成。在早期WEB开发中,网页的数据嵌入在页面中,无论页面打开多少次,页面内容也不会发生变化,这种页面称为静态网页。而MVC框架中View视图中的数据来源于数据库,随着数据库数据的变化,页面中的数据也会随着发生改变,称之为动态网页,现在比较流行的动态网页开发技术由Jsp、Asp和Php。Java的MVC模型就是采用的Jsp动态开发技术,因此View的页面由jsp网页组成。在View层只涉及数据的显示,和数据的采集,不涉及视图的业务处理。比如最常见的登录页面,登录视图只是把登录的信息进行收集并提交,不对登录的信息做判断。
模型(Model):就是业务流程/状态的处理以及业务规则的制定。在MVC的3个部件中,模型拥有最多的处理任务。视图中的数据由Model来提供,当需要改变视图中的数据时,不需要修改WEB页面,只需要修改相应的Model即可。MVC框架中Model层的主要关注点是如何把请求的数据自动装配成Action所需要的bean,除此外,框架Model层还可以提供复合bean自动装配、输入校验、本地化及国际化、字符集编码转换、多重输出等功能。比如上述的登录系统,就是由Model层来完成登录账号和密码的判定。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
控制(Controller)接受用户的输入并调用模型和视图去完成用户的需求。Java MVC中的控制层由Servlet来实现。控制层并不对数据做处理,而是根据视图的提交要球,来决定调用相对应的模型。比如上述的登录系统,控制器的作用就是接收View层提交的信息,并把这个信息传给对应的Model去处理,然后把处理后的结果,再返回给View层。
MVC的优点:(1)可以为一个模型在运行时同时建立和使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。(2)视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。(3)模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。需要做的只是在新平台上对视图和控制器进行新的修改。(4)潜在的框架结构。可以基于此模型建立应用程序框架,不仅仅是用在设计界面的设计中。
MVC的不足体现在以下几个方面:(1)MVC并没有很明确的定义,所以完全理解MVC并不是很容易。并且内部实现原理比较复杂和多样,对于新手来说需要花费一些时间去思考。(2)视图与控制器的可接插性,造成模型和视图的分离,这样也给调试应用程序带来了一定的困难。(3)MVC的实现比较复杂,并不适合小型甚至中等规模的应用程序,花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。
2MVP框架
MVC(Model-View-Controller,模型-视图-控制器)模式是80年代Smalltalk-80出现的一种软件设计模式,后来得到了广泛的应用,其主要目的在于促进应用中模型、视图、控制器间的关注的清晰分离。MVP(Model-View-Presenter,模型视图-表示器)模式则是由IBM开发出来的一个针对C++和Java的编程模型,大概出现于2000年,是MVC模式的一个变种,主要用来隔离UI、UI逻辑和业务逻辑、数据。
Model-View-Presenter旨在应用程序分层和提高测试效率,主要目标是将显示逻辑与业务逻辑分离,正如设计面向对象程序中创建松散耦合并可重用的对象。MVP的另一个目标是提高针对View的测试效率。编写依赖Session,ViewState,AJAX,HTML或web控件和业务实体的单元测试类较为复杂,因此将各视图的显示逻辑保留在ASPX/ASCX文件类中,并将业务逻辑从中分离出来放在相应的类中,在MVP中Presenter充当视图和业务逻辑的缓冲层。
MVC和MVP的区别:在MVP里,Presenter把Model层和View层进行了完全的分离,View并不直接使用Model,主要的业务逻辑在Presenter里实现。而且,Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更View时候可以保持Presenter的不变,达到了重用的效果,而在MVC中View会从直接Model中读取数据而不是通过Controlle如图2所示。
从图中可以看到,在MVC里,View是可以直接访问Model的,View里会包含Model信息,因此不可避免的还要包括一些业务逻辑。在MVC模型里,更注重业务的逻辑,也就是Model的不变,而针对Model,则有不同的显示及View。所以,在MVC模型里,View是依赖于Model的,但是Model不依赖于View。并且,如果有一些业务逻辑在View里实现了,则导致要更改View也是比较困难的,因为View中的业务逻辑是无法重用的。
在MVP模式里,View只有简单的Set/Get的方法,用来输入和设置界面显示的内容,除此就不应该有更多的内容,绝不容许直接直接访问Model,而这就是与MVC很大的不同之处。
MVP的优点:(1)View和Model实现了完全分离,可以修改View而不影响Model。(2)业务逻辑的处理更加集中,便于控制。(3)多个View可以共用一个Presener,便于代码的重用。(4)业务逻辑集中在Presenter中,便于进行单元测试。
MVP的缺点:由于对View的控制放在了Presenter中,造成了View和Persenter的交互会过于频繁。这样会增加View和Presenter的耦合性,一旦View发生了变化,Presenter也需要进行变化。比如,原来的Html网页显示的是Word文档,但是新求需要将Word文档转换为PDF文档显示,那么就需要更改View和Presenter。
3MVVM框架
MVVM是3层架构,M层(Model实体层)、V层(View表示层)、VM层(ViewModel层,对Model层进行CRUD进行操作,同时对V层提供数据绑定)。对这种模式的实现,大部分都是通过在view层声明数据绑定来和其他层分离的,这样就方便了前端开发人员和后端开发人员的分工,前端开发人员在html标签中写对Viewmodel的绑定数据,Model和Viewmodel是后端开发人员通过开发应用的逻辑来维护这两层。
最近几年,MVVM模式在Javascript中开始有人实现,目前比较成熟的框架有KnockoutJS,Avalon MVVM和Knockback.js,原理如图3所示。
(1)infoChannel:信息通道,主要用于向后台发起数据请求。(2)dataChannel:数据通道,主要用于存储从后台获取到的数据。(3)moleManage:数据操作,主要用于操作数据通道中的数据,如crud操作。(4)modulePool:数据仓库,主要存储后台返回的数据。(5)crudStorePool:crud实例池,增删改的数据,在持久化到数据库之前,都会先存在于此池中。(6)action:后台数据处理及数据库访问模块
执行流程如下:(1)infoChannel通过调用服务器端action获取数据库数据。(2)infoChannel把获取的数据放到内存中的modulePool中。(3)dataChannel从modulePool中取数据,并传递到View端。(4)View端的数据通过moleManage取出。(5)moleManage把取出的数据放到内存的crudStorePool中。(6)通过infoChannel把crudStorePool中的数据传递到后台,实现数据的持久化操作。
ViewModel的具体应用:(1)在前端开发中如需初始化某一模块的数据可以调用dataChnannel中的initViewData(viewld,dataStoreParam)方法。(2)如需查询某一节点的数据集,可以调用dataChnannel中的getDataByPath(viewId,path)。(3)如需进行crud操作,可以调用moleManage中的相关方法。
ViewModel解决的问题:(1)向后台的多请求操作改为通过接口统一调用。(2)是一个前后端通信的中间件,具有可插拔性,适用于文档型及关系型数据库。(3)实现了单例模式,避免多个实例操作同一个对象。(4)缓存大数据,避免频繁向后台请求数据。
4Model层
Model层同其他的MVC框架一样,Model代表特定领域的数据或者应用所需的数据,一个典型的特定领域的数据如用户信息,或者一部电影的信息。
Model仅仅关注数据信息,不关心任何行为;不格式化数据或者影响数据在浏览器中的展现;格式化数据是View层的任务,同时业务逻辑层被封装在Viewmodel中,用来和Model进行交互。在Model层做的一个比较意外的行为是对数据的验证,比如当用户输入用户名的时候,判断用户名的格式是否正确,是否有非法字符等。Model基本是按照上面的定义来实现的,但是会有通过ajax调用服务器服务来进行读写Model数据。
MVVM框架是衍生于MVC框架的,两者之间的最大区别在于,MVC框架中的Controller是由是由高级编程语言实现的,比如用Java实现的MVC框架,Controller是由servlet实现,而在View中,也会用到部分的Jsp代码;而MVVM框架中的ViewModel则是由脚本语言Javascript实现,在View界面将不会用到Jsp代码,从而实现了前端和后台的完整分离。
优点:(1)MVVM使并行开发更加容易,使前端开发和后端开发人员互不影响。(2)抽象化View层,减少了代码中的业务逻辑。(3)ViewModel比事件驱动更容易测试。(4)ViewModel的测试不用关心UI的自动化和交互。
缺点:(1)对于简单的UI,使用MVVM有点太重。(2)声明式的数据绑定不利于调试,因为命令式的代码可以和容易的设置断点,这种模式就不利于设置这样的断点。(3)在不挑剔(non-trivial)的应用里数据绑定可以创建大量的簿记(book-keeping)。(4)在大的应用中,在获取大量的概要(generalization)前很难设计视图模型层。
篇7
【关键词】PHP ThinkPHP MVC 电子商务 架构设计
1 红酒交易平台的需求分析
红酒交易平台是销售酒类、培训、器皿、酒窖定制服务的电子商务平台,支持PC端浏览器、手机端浏览器、微信端以及Android端和iOS端。
本文从功能性需求和非功能性需求两个方面进行需求分析。
1.1 功能性需求分析
本平台有三个主要功能和一个主要流程:品类管理、促销管理、订单管理和购物流程。
1.1.1 品类管理
主要是管理商品的分类和商品管理。
1.1.2 促销管理
支持各种促销手段:满额赠送、限时抢购、买N送N、特价促销等。
1.1.3 订单管理
平台收到订单后,如果是已经支付的订单或者是货到付款的订单,备货后输入物流单号和物流公司发货。用户如果退货,平台允许退货并收到用户退货后,退款给该用户。
1.1.4 购物流程
用户浏览商品并加入购物车,如果该商品符合促销条件,自动在购物车放入赠品,用户确认订单并支付,等待平台发货,用户收到货物后确认到货并评价。
1.2 非功能性需求分析
1.2.1 安全要求
对于需要登录后才能访问的页面要禁止非法访问等。
1.2.2 性能要求
网络正常的情况下,大于2MB/秒,1000人以下并发访问页面打开时间最多不超过5秒。
2 红酒交易平台MVC框架的选择
通过技术平台选型,考察 MVC、Struts2、Spring MVC、ThinkPHP、Laravel等多个MVC框架后,结合技术团队能力、国内流行程度等因素,将 MVC、Struts2、ThinkPHP作为备选技术方案。ThinkPHP中的MVC提供了一种敏捷开发的手段,使得开发者能够迅速地开发出稳定的企业级网站。ThinkPHP在中小型应用中,学习成本最低、开发效率最高,所以在国内PHP MVC框架应用中占据了将近50%的市场份额。本平台是一个中等规模的网站,根据前述非功能性需求分析得出,并发访问量要求不高,且用户预算低、开发周期短,所以决定平台采用ThinkPHP框架。
3 红酒交易平台的架构设计
3.1 平台架构的设计
为了进一步压缩成本,缩短开发时间,从架构设计上既要满足前述用户需求,又要减少开发工作量。因此平台通过共用控制器和模型,采用多视图的方法满足用户PC端、手机端、微信端浏览本平台的需求,由于Anroid端和iOS端采用Hybrid APP混合框架,内嵌了浏览器,所以本架构也能给予很好的支持。前端则采用Bootstrap框架进行快速页面布局和前端编程。Bootstrap是最受欢迎的 HTML、CSS 和 JS 框架,用于开发响应式布局、移动设备优先的 WEB 项目。根据需求分析,本平台部分技术架构设计如图1所示。
限于篇幅,本架构主要展示了平台Home前台的架构设计,前台Home和后台Admin共用Common\Model,前台PC端View和移动端MobileView共用了前台Controller,从而减少了开发冗余,提高了代码复用率。
3.2 前台控制器基类的实现
FrontController是前台控制器的基类,只有一个方法_initialize,继承该基类的前台控制器都会执行该方法。_initialize方法通过ismobile函数判断,如果是手机端或者微信端浏览,则通过C(‘DEFAULT_V_LAYER’,’MobileView’)函数将默认视图层从View目录改成MobileView目录,从而改成适合手机浏览的网页,而控制器类和模型类无需修改。用户没有登录,即判断$_SESSION[‘USER’]为空,如果用户访问了需要登录才能访问的控制器方法,使用$this->redirect方法将链接重定向登录方法,强制用户登录。
4 结束语
MVC轻量级ThinkPHP框架,基于面向对象的思想,结合使用了Ajax技术,使整个系统功能清晰明了。本平台选择ThinkPHP框架进行架构设计,采用多个视图共用一个控制器方法的方式支持多终端设备浏览器以及Hybrid APP混合框架里的内嵌浏览器,满足了红酒交易平台的功能性需求和非功能性需求,提高了开发效率、缩短开发工期并节约开发成本,具有较好的技术推广价值。
参考文献
[1]徐诚斌,王金平.MVC在ThinkPHP框架中的应用研究[J].信息与电脑:理论版,2011(03):160-160.
[2]Bootstrap中文W.Bootstrap中文文档[EB/OL]./, 2014-10-31/2016-12-7.
[3]许燕.基于ThinkPHP框架的校园交易平台的设计与实现[J].信息技术与信息化,2016(07):34-37.
作者简介
陈栋良(1975-),男,江苏省宜兴市人。硕士学位。现为苏州工业园区服务外包职业学院讲师。研究方向为软件技术。
篇8
关键词: MVC;多层架构;素质教育;课程管理;管理系统
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)30-6804-02
按照教育部、教育厅的相关要求,各高职院校以学生素质教育课程改革为突破口,面向全体学生,结合专业教育,积极探索高职素质教育的新途径、新方法,将素质教育融入人才培养全过程。因此,为配合学生素质教育课程改革,采用信息系统加强对素质教育的课程及实践活动开设、教学任务分配、成绩录入等全过程进行管理势在必行。
1 学生素质教育课程管理系统分析
根据学生素质教育课程实施工作的要求,学生素质教育管理系统的主要功能包括:课程信息管理、活动信息管理、选活动管理、任务分配管理、课程成绩管理、系统管理等功能,系统功能结构如图1所示。
2 学生素质教育课程管理系统设计
学生素质教育课程管理系统功能复杂,为了使得学生素质教育课程管理系统逻辑结构合理,提高软件的开发效率,降低系统的维护成本,提升系统的可扩展性和可维护性,因此学生素质教育课程管理系统设计采用基于.Net的多层架构解决方案,WEB层采用了 MVC(视图引擎为Razor)框架技术,视面组件方面使用了Telerik组件技术,JS框架采用强大的JQuery技术,服务层采用基于WCF技术的SOA框架,服务层采用基于技术的AOP框架,数据持久层采用基于Entity Framework技术的ORM框架。学生素质教育课程管理系统整体架构设计如图2所示。
1)WEB层设计
系统WEB层采用 MVC框架技术设计。 MVC是微软官方提供的MVC模式编写 Web应用程序的一个框架,MVC主要用于表示一种软件架构模式,它把WEB应用系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
学生素质教育课程管理系统WEB层MVC框架中视图部件使用Telerik组件技术及基于JQuery的JS框架技术实现了课程管理页面、活动管理页面等WEB页面的展现。控制器部件主要处理课程管理、活动管理等页面与服务器的交互操作,通过服务层调用课程管理、活动管理等服务进行数据处理。模型组件与实体类对应,主要封装了系统中课程、活动、学生活动、课程任务、活动任务、课程成绩等核心数据以及逻辑功能。
2)服务层设计
系统服务层采用基于WCF技术的SOA框架设计,WCF是.NET框架的一部分,是微软发展的一组数据通信的应用程序开发接口,它能将不同的通讯方式整合在一起,提供一种统一的编程模型。
WCF通过配置文件定义服务以及消费服务完成服务端配置与客户端配置。服务端配置主要完成服务节点的绑定,主要包含CourseServiceNode(课程服务节点)、ActivityServiceNode(活动服务节点)、StudentServiceNode(学生服务节点)、TeacherServiceNode(教师服务节点)、DepartmentServiceNode(部门服务节点)、StudentActivityServiceNode(学生活动服务节点)、CourseTaskServiceNode(课程任务服务节点)、ActivityTaskServiceNode(活动任务服务节点)等服务节点。客户端配置主要完成客户端终结点的属性来连接系统服务终端结点的配置。
3)服务层设计
系统服务层是采用基于技术的AOP框架设计,它是.NET企业应用开发的应用程序框架,为业务对象提供面向对象编程的支持,通过IApplicationContext、IObjectFactory核心接口实现依赖注入(Ioc)功能。
在学生素质教育课程管理系统服务层设计中主要是完成CourseService(课程服务)、ActivityService(活动服务)、StudentService(学生服务)、TeacherService(教师服务)、DepartmentService(部门服务)、StudentActivityService(学生活动服务)、CourseTaskService(课程任务服务)、ActivityTaskService(活动任务服务)等服务的依赖注入并建立与服务节点的映射关系。
4)数据持久层设计
系统服务层是采用基于Entity Framework技术的ORM框架设计,Entity Framework是开发基于的ORM框架,它可以根据系统对象生成实体数据模型(EDM)、实体数据类及DAO数据操作类,借助实体数据模型和实体所承载的数据自动生成SQL语句,并实现数据自动持久化功能。
在学生素质教育课程管理系统系统数据持久层中实体数据模型文件为SQECEnites.edmx,主要用于描述实体类与数据库对象的对应关系。系统中包含的主要实体类有:Course(课程)、Activity(活动)、Student(学生)、Teacher(教师)、Department(部门)、StudentActivity(学生活动)、CourseTask(课程任务)、ActivityTask(活动任务)等。系统对应的DAO数据操作类有:CourseDAO(课程数据操作)、ActivityDAO(活动数据操作)、StudentDAO(学生数据操作)、TeacherDAO(教师数据操作)、DepartmentDAO(部门数据操作)、StudentActivityDAO(学生活动数据操作)、CourseTaskDAO(课程任务数据操作)、ActivityTaskDAO(活动任务数据操作)等。
3 总结
学生素质教育课程管理系统开发中采用基于.NET的多层架构体系设计,在WEB层通过MVC框架技术实现了系统视图层和业务层分离,从而降低了系统展示与业务逻辑的耦合性;在服务层采用基于WCF技术的SOA框架设计,降低了服务提供者和服务使用者的松散耦合性;在服务层采用基于技术的AOP框架设计,实现了对业务逻辑的各个部分进行隔离,降低了业务逻辑间的耦合度;在数据持久层采用基于Entity Framework技术的ORM框架设计,实现数据操作与数据库的分离,降低了程序与数据库间的关联性。因此,在开发WEB应用系统中采用基于.NET的多层架构体系设计,可充分发挥每一层框架技术的优势,提升系统各模块的独立性,提高系统开发效率及系统的易维护性、可用性和可伸缩性。
参考文献:
[1] 涂刚,李建,刘华清,纪永玲,许子昊 MVC的研究[J].软件工程师,2010(8).
[2] 方柯.基于 MVC框架的Web应用开发研究[J].电脑知识与技术,2010(22).
[3] 张计龙.基于改进MVC的高校人事管理系统[J].计算机工程,2004(8).
[4] 王炯炜,胡宏伟.基于LINQ的三层体系结构应用[J].科技信息:学术研究,2008(21).
[5] 梁西陈,朱水源.基于.NET的高职院校教师信息管理系统研发[J].宿州教育学院学报,2009(1).
篇9
关键词:电子商务;Struts 2;作用
中图分类号:F49文献标识码:A 文章编号:1672-3198(2012)03-0233-02
1 Struts 2的由来
随着软件技术和Internet的迅猛发展,以J2EE技术体系为代表的分布式对象技术为企业构造新的基于Internet的电子商务平台提供了技术支持。J2EE规范定义了一个用于简化分布式企业级应用开发与部署的基于组件的模式,它提供了一个多层次的分布式应用模型和一系列开发技术规范,为搭建具有可伸缩性、灵活性、易维护性的电子商务系统提供了良好的机制。随着J2EE技术的不断完善和发展,有几种开源免费的框架出现在J2EE设计中,这些新出现的框架为中小企业提供了一个经济的、快速开署的、稳定而可扩展的可行方案,使得他们可以使用开源技术来构建企业级应用。其中,Struts就是比较优秀的开源框架。
Struts 1是第一个的MVC框架,它由Apache开源软件联盟提供的用于构建JavaWeb应用程序的框架,该框架推出后,就得到了广泛Java Web开发者的拥护,经过长达6年时间的发展,Struts 1框架更加成熟、稳定,性能也有了很好的保证。因此,到目前为止,Struts 1依然是世界上使用最广泛的MVC框架。但是由于些设计上的缺陷成为它未来发展的障碍。为了给Java Web开发人员提供一个更好的框架,提出了Struts 2的新模式。Struts 2虽基于Struts 1发展,但并不是以Struts 1为核心,而是采用Web Work为核心,尤其是吸收了Struts 1和 Web Work两者的优势。
2 Struts 2的核心思想
Struts目前已经分化为两个框架:第一个框架是shale,此框架可以说几乎脱离了Struts的设计思想,它不仅仅是对Struts的升级,而是另辟空间发展。第二个就是Struts 2框架,Struts 2的核心设计思想是基于Web work框架基础上发展的,它的特点是兼容struts 1和Web work两种框架,并且取长补短的开发理念,开发中兼顾了struts 1的部分优点,同时注入了Web work的思想。Struts 2的体系结构同样也实现了MVC设计模式的概念,它将这些概念映射到Web应用程序的组件和概念中。Struts 2是使用Servlet和Java Server Pages技术的一种MVC实现,而MVC是用来控制Web项目中的变化,提高项目的复用性和可维护性,所以应用Struts 2框架就是用来改进在目前Web开发中存在的不足之处。Struts 2继承了MVC的各项特性,并根据J2EE的特点,做了相应的变化与扩展。图1是Struts 2的MVC体系结构图。
Struts 2技术框架所具有的很多特性使得它非常适合作为Web系统的应用开发过程中。主要特点如下:
①Struts 2大量使用拦截器来处理用户请求,从而允许用户的业务逻辑控制器与Servlet API分离。
②Struts 2是一个雅致的,可扩展的,用来建立企业级Java Web应用程序的框架。
③Struts 2不但注重程序的开发过程,更注重部署和后期维护。
④Struts 2来源于Web Work 2。
⑤Struts 2融合了Struts和Web Work的社区力量,是这两个社区努力的结果。
⑥Struts 2非常容易使用。
⑦Struts 2最大可能的保留了和Struts 1.x的相似行。
(2)Struts 2的体系结构。
Struts 2使用拦截器作为处理(Advice),以用户的业务逻辑控制器为目标,创建一个控制器。控制器负责处理用户请求,处理用户请求时回调业务控制器的execute方法,该方法的返回值将决定了Struts 2将怎样的视图资源呈现给用户。
由于客户端浏览器初始化一个指向Servlet容器的请求;然后Struts 2的核心控制器FilterDispatcher接受客户发来的请求,进行相应的判断调用指定的Action操作;拦截器对请求启用相应功能;接下来ActionInvocation实例使用命名模式来回调Action的execute方法,该execute方法先获取用户请求参数,然后它会调用业务逻辑组件来处理用户的请求;最后将execute方法的处理结果返回到客户端的浏览器中完成处理过程。
(3)Struts 2的组成及配置。
Struts 2框架主要由三个部分组成:核心控制器FilterDispatcher、业务控制器和用户实现的业务逻辑组件。Struts 2框架只提供了核心控制器部分的功能,而业务控制器和用户实现的业务逻辑组件功能需要程序开发人员独立完成。
由于Struts 2的核心与Struts 1有着本质的区别,也就决定了Struts 2的配置与Struts1有一定的区别。我们需要加载Struts 2框架那么应该首先在Web.xml文件中加载前面提到的核心控制器FilterDispatcher,这样控制器会加载Struts 2框架。
Struts 2框架有两个核心配置文件,其中struts.xml文件主要负责管理应用中的Action映射,以及该Action包含的Result定义等。在原始状态下,Struts 2框架将默认的路径下是加载放在Web-INF/classes的struts.xml文件。但是由于在Web应用中,随着系统的需求,各个功能模块不断增加修改等,系统中Action数量会越来越繁多,如果我们选择默认的struts.xml配置文件,那么整个文件会变得非常繁杂,不利于后期维护。为了避免struts.xml文件过十繁杂,提高struts.xml文件的可读性,我们将struts.xml分解成多个配置文件,然后在struts.xml文件中包含其他配置文件。解决这一问题可以用include方式导入各个功能模块的文件。当然也可以根据用户自己需要来划分,本系统采用的是按模块划分。
Struts 2框架包含的另一个核心文件是struts.properties,该文件定义了Struts 2框架的属性,我们可以设置相应属性来达到开发程序的需求。Struts.properties文件是一个标准的Properties文件,该文件包含了系列的key-value对象,每个key就是一个Struts 2属性,该key对应的value就是一个Struts 2属性值。struts.properties文件通常放在Web应用的Web-INF/classes路径下。实际上,只要将该文件放在Web应用的CLASSPATH路径下,Struts 2框架就可以加载该文件。
3 总结
随着网络信息技术的发展,网络应用在人们日常生活中越来越受到重视,人们越来越希望在较短的时间内买到自己所需要的东西。但是市场上的商品种类很多,人们要想购买到自己需要的商品,不得不花费很多时间,给购买带来了麻烦。网上购物系统弥补了传统购物的许多不足之处,有效地缩短了传统购物过程中的流通环节,有着经营成本低、库存虚拟,用户查看商品方便,减少了地域限制等特点。Struts 2是现今开发技术中运用最广泛的开源框架技术之一。Struts 2框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的Web应用程序的开发。
参考文献
[1]徐明华,邱加永.Struts基础与案例开发详解[M].北京:清华大学出版社,2009.
[2]黄金雪.基于Struts和Hibernate的框架模型在银行信贷管理系统的研究[D].成都:西南交通大学,2008.
[3]郭梅,江红.Struts在实现MVC架构中的应用[J].计算机与现代化,2004,(1):2834.
篇10
关键词:struts+ hibernate架构;MVC框架;自动组卷模块;扩展性
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)25-1473-03
The Designation and Realization of Item Pool System Based Struts + Hibernate Framework
JIANG Jiao-li, JIANG Yong-ping, HUANG Feng-ai
(Information Engineering of Guangdong University of Technology, Guangzhou 510006,China)
Abstract:The traditional B/S item pool system has the issue that page code redundance , lowlly reusability of the function module,maintained hardly and so on.This article proposedthe design conception of item pool system basedStruts + Hibernate framework, According to their superiority supplementary characteristic,Completedthe MVC model and the lasting level conformity.Take the automatic group volume module realization as an example,conform that it has guaranteed system each internal close coupling well, Layer upon layer between loose coupling, Simultaneously strengthened the code reusability and the flexibility, further strengthens the system the extension.
Key words: Struts+Hibernate construction; MVC framework; auto-composing test paper module; expansibility
1 引言
随着计算机和网络的普及,国内外目前已经存在很多比较成熟的认证考试,比如:我国的计算机等级考试,美国的GRE,托福考试等。为了顺应计算机网络时代的发展,考核方式逐步趋向无纸化,解决高校课程内容繁多,教学资源要求更丰富的难题,学校必须提高自身的考核方式,拥有自己的题库系统。而系统的实现技术的选择也是非常重要的。其中利用比较成熟的具有跨平台性的Java技术实现是首选,因为J2EE体系结构提供中间层集成框架能满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。本文所介绍的题库系统主要考虑到:传统的基于B/S模式的题库系统开发具有页面代码冗余度高,功能模块可重用性低,扩展性差,维护困难等问题;在软件设计中采用基于MVC模式的Struts+Hibernate框架技术实现整个系统。本文将以题库系统的设计为例,分别介绍Struts和Hibernate框架,重点分析两个框架的优势互补的特点,并以题库系统的架构设计来完成Struts+Hibernate框架的整合,最后详细介绍了自动组卷功能模块的实现以及解决的问题,说明Struts和Hibernate框架在题库系统实现上的应用。
2 题库系统功能描述
题库系统根据实际需要将实际用户分为三类权限管理:管理员、教师、学生。总系统架构分为两大模块:后台教师管理模块、前台考试模块。题库系统的总体框架结构图1所示。
题库系统前台用户主要是学生,学生登录前台可以完成在线考试、考卷提交、考试成绩查询、修改用户基本资料等操作。
本系统最重要的是后台管理模块的实现,管理员登陆后台管理界面后,可进行用户信息管理、题库信息管理、考试试卷管理、考务信息管理、其他管理模块的操作,下面对各模块的基本功能进行大概介绍。
用户信息管理模块:管理员可添加、删除、修改学生信息;设置教师权限,使管理员和教师都能对题库和其他基本功能进行操作。
题库信息管理模块:这个模块主要用来操作单选题,多选题、判断题、填空题、简答题的添加、删除和修改,并可以根据指定专业、知识点进行精确题目查询。
考试试卷管理模块:主要是根据不同专业,难度系数的设定等条件抽题生成试卷,并对生成并且未试卷进行修改,同时还支持套题管理。
考务信息管理模块:管理员/教师在考试前对生成试卷状态进行控制,、中止考试试卷;考试结束后对客观题进行评分,系统自动完成主观题和客观题的总分相加,得出总分并生成考生考试情况统计供管理员/教师查询。
其他管理模块:这个模块主要用来添加班级信息和考试知识点信息。
3 系统开发技术运用及架构整合
3.1 基于MVC模式的struts+hibernate框架设计策略
MVC(Model-View-Controller)设计模式将系统分成模型层、视图层、控制层三层,大大减少在设计系统中的代码的“冗余度”,降低了页面显示、逻辑控制、数据处理的耦合性。目前有很多可供MVC使用的web框架,Struts就是其中的一种,相比较其他框架而言,Struts是一种开源框架,它能使你的代码具有高度的平台无关性,提供了对开发MVC系统的底层支持,它的目的是为了帮助你减少在运用MVC设计模型来开发Web应用的时间。利用Struts来开发能够很好地实现各层之间的散耦合[2-3]。