MVC是一个框架模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。最典型的MVC就是JSP + servlet + javabean的模式。
这样,一个JAVA WEB应用程序划分为表示层,控制层,业务逻辑层和数据持久层,形成了一个多层系统。对于大型,复杂的WEB应用程序,这样的是十分必要的!
下面来构建一个简单的基于MVC模式的JAVA WEB应用程序,我们按照MVC设计模式,用JSP,Servlet及Java Bean构建一个简单的登录系统。该系统要求当用户在登录页面上输入用户名和密码并提交后,系统将检查该用户中否已经注册,如果该用户已经注册,系统进入主页面,否则进入注册页面!
我们将 按以下步骤构建这个系统:
Step1:数据库的设计,使用MySQL作为数据库,构建数据表T_UserInfo;
Step2:构建视图组件:登录页面login.jsp,主页面main.jsp,以及注册页面register.jsp;
Step3:构建控制层组件,一个Servlet,;取名为LoginServlet.java;
Step4:构建业务逻辑层组件(Model组件),一个JavaBean,取名为LoginHandler.java;
Step5:构建数据访问层组件:珍上数据访问类,取名dbPool.java;
Step6:编译,打包程序;
Step7:部署该程序到Web服务器Tomcat中,然后运行!
该系统的工作流程图如下:
详细设计:
A:用户登录涉及数据库操作的用例!我们在MySQL中 建立一个T_UserInfo表,DDL语句如下:








B:构建视图组件,由前面的分析可知本例有三个视图组件,分别是登录页面login.jsp,主页面main.jsp,以及注册页面register.jsp.它们之间的关系是当用户在登录页面login.jsp上填入用户名及密码并提交后,系统将 检测该用户是琐已经注册,如果已经注册则进入main.jsp,否则进入注册页面!
login.jsp代码如下:


























当用户按下登录后就提交给叫做LoginServlet的Servlet,以做进一步处理!
为方便起见,主页面main.jsp的内容设计的很简单。当用户登录成功后,系统转入main.jsp告诉用户已经登录成功,现已进入主页面。main.jsp代码如下:












注册页面,register.jsp的内容也设计的很简单。当用户登录失败后,系统进入register.jsp,告诉用户登录失败,代码如下:












C:构建数据访问组件,先创建一个属性文件db.properties用于设置库连接信息代码如下:




本用例的数据访问组件是DbPool,代码如下:











































































DbPool先从一个属性文件db.properties中获取数据库驱动程序名,URL,用户名和密码,然后利用这些信息连接数据库,取得连接!
D:构建模型组件,本用例的模型组件(或称为业务逻辑组件)是LoginHandler,代码如下:
























































E:本用例的控制组件是一个Servlet,叫做LoginServlet,代码如下











































































该组件先处理Http POST请求,然后调用模型组件或业务逻辑组件LoginHandler检查该用户是否已注册如注册,则转入main.jsp,否则转入register.jsp,另外,Servlet都要在web.xml中声明,






















到此,整个系统完成设计!运行结果达到我们预期的的效果!
总结:上面结合使用JSP,Servlet和JavaBean构建了一个简单的基于MVC模式的登录系统。但我们看到在用这种方式构建的Java Web 应用系统中,控制器LonginController中包含重定向页面的名称,如下:








这样会使系统的视图组件与控制层组件耦合很紧密,不便于系统的扩展和维护。对于大型Java Web系统,这样的紧密耦合性会合系统的扩展和维护变的十分困难。为了解决这些问题,一些优秀的MVC框架出现了,而Struts就是其中应用最普遍的一个。