首页 文学文摘 时政新闻 科技科普 经济法律 健康生活 管理财经 教育教学 文化艺术 社科历史

MVC构架模式下的Web应用设计与分析

作者:黄冲 来源:电子技术与软件工程

摘 要

J2EE中下的Web应用,一般都是采用经典的MVC构架模式,采用MVC构架模式的Web应用有着很好的可维护、可扩展、可复用性,本文将以一个简单的Web应用为例子,逐步分析Web应用设计的思路及系统结构,推演出采用MVC构架模式的优势及好处,并进行实现。

【关键词】 Web设计 构架模式 MVC

1 MVC构架模式

MVC就是Model-View-Controller,中文的意思是“模型-视图-控制器”。

视图是用户与系统进行交互的界面,视图层指静态HTML页面和JSP动态页面,主要任务是给用户展示他们想看到的数据

模型可以包含业务处理的抽象:service、dao和数据模型的抽象pojo,所有的业务逻辑的运算应该都在这一层发生。

控制层等于中转层,根据用户发送过来的请求,读取相应的模型,然后根据返回的参数,选择相应的视图(HTML页面或者JSP页面)进行跳转,控制层也不做任何业务逻辑数据处理。

模型层下还有一个持久层,可以由JDBC或Hibernate进行实现持久层主要是对数据库进行读取写入操作。

基于MVC模式的系统,视图会随着不同的请求,模型层不同的返回结果,控制层不停地做出调度,请求发生变化,模型的数据也发生变化,返回给客户的页面也会发生变化。

总而言之,系统一般在基于MVC模式基础上,采用四层结构架构起来:表现层、控制层、业务层和持久层。

2 用户管理系统

假设现在要设计一个简单用户管理系统,具有对用户有增读改删功能,现在我们简单分析如何采用MVC构架去实现。

2.1 系统包结构

系统文件架构应该分为几个包

(1)action包:负责具体的业务逻辑,对应业务逻辑层。

(2)dao包:负责操作数据库,对应数据持久层。

(3)pojo包:封装javabean,对应数据模型模型层。

(4)servelt包:负责页面控制和跳转,对应控制器层。

(5)util包:公共类工具包。

2.2 系统流程和实现

假设要对系统进行增加用户操作。系统调用流程如下:

首先用户登陆adduser.html页面,通过该页面发出一个参数为“add”的请求,该在本系统表示增加用户,传递给控制器层,也就是servelt包下UserServlet类。关键代码如下:

然后,UserServlet类根据读取到的参数,读取资源文件a.txt,运用反射技术创建出AddUserAction类的对象,进行增加用户的操作。关键代码:

String action=req.getParameter("action");

Action act=null;

String forward=null;

Properties prop=new Properties();

prop.load(this.getServletContext().getResourceAsStream("/WEB-INF/a.txt"));

String realaction=prop.getProperty(action);

try {

act=(Action)Class.forName(realaction).newInstance();

forward=act.execute(req, resp);

} catch (Exception e) {

e.printStackTrace();

}

之后,AddUserAction类对象调用dao层的IUserDao对象,操作数据库,把用户数据添加到数据库里面。关键代码如下:

IUserDao dao=new UserDaoImpl();

boolean finished=dao.addUser(user)

接着AddUserAction对象就回返回一个参数给UserServlet类,UserServlet类根据该参数跳转到相依页面,本系统中,如果添加成功跳转到successful.html页面,添加失败就跳转到error.html页面。关键代码如下:

boolean finished=dao.addUser(user);

if(finished){

return "successful.html";

}else{

return "error.html";

}

最后,UserServlet类再根据AddUserAction对象传回的参数跳转到相应的页面,关键代码如下:

if(forward != null) {

RequestDispatcher rd=req.getRequestDispatcher(forward);

rd.forward(req, resp);

}

其他功能的系统流程和实现和上面的基本类似,都是基于MVC构架模式,而且用到了反射和接口技术,使得如果应用需要扩展或者改进某些功能的话,不需要更改源代码就可以实现。

3 小结

系统的设计采用了MVC模式,虽然会增加代码程序的复杂性,但是使得整个系统的构架更加清晰明了,更加易于理解。因为系统被严格地分层,如果某一天某个功能的业务逻辑发生变化,只要更新业务逻辑层就行,不需要惊动其他层,同样道理,如果其他层发生了变化的话,也不会影响其他层,使得系统稳定性增加。

系统将来的维护升级可能需要各个方面的人才,有人专门负责界面的设计,有人专门负责逻辑业务,有人负责数据库方面的,通过MVC分层,各个层次的人只需要懂得这一层需要的知识就行了,分工更细更精。

参考文献

[1]明日科技.JSP项目开发案例全程实录(第2版)[M].2011.1.1.

[2]聂明.JavaWeb应用开发项目教程[M].北京:电子工业出版社,2011(09):1.

[3]李兴华.JavaWeb开发实战经典基础篇[M].北京:清华大学出版社,2011.8.1.

工作单位

广东金融学院 广东省广州市 510521