首页 理论教育JavaWeb应用开发-Model2/MVC架构

JavaWeb应用开发-Model2/MVC架构

【摘要】:JSP Model 2 符合MVC 设计模式,MVC 即模型-视图-控制器。JSP Model 2 的架构如图7.5 所示。图7.5JSP Model 2 的体系结构Java Model 2 体系结构是一种把JSP 与Servlet 联合使用来实现动态内容服务的方法。事实上,项目越复杂,使用Model 2 体系结构的好处就越大。在Java Model 2 中,主要由JavaBean 充当着模型的角色。例7.2:使用Java Model 2重写用户登录验证程序。采用Model 2 架构的Web 应用程序很容易维护和扩展,因为作为视图的JSP 页面之间没有直接的关联。

在JSP Model 1 中,JSP 页面嵌入了流程控制代码和部分的逻辑处理代码,可以将这部分代码提取出来,放到一个单独的角色(这个角色就是控制器角色)中,而这样的Web 架构是JSP Model 2 了。JSP Model 2 符合MVC 设计模式,MVC 即模型-视图-控制器(Model-View-Controller)。JSP Model 2 的架构如图7.5 所示。

图7.5 JSP Model 2 的体系结构

Java Model 2 体系结构是一种把JSP 与Servlet 联合使用来实现动态内容服务的方法。它吸取了两种技术各自的突出优点,用JSP 生成表示层的内容,让Servlet 完成深层次的处理任务。这是一种有代表性的方法,它清晰地分离了表达和内容,明确了角色的定义以及开发者与网页设计者的分工。事实上,项目越复杂,使用Model 2 体系结构的好处就越大。

在MVC 架构中,一个应用程序被分成3 个部分,模型(Model)、视图(View)和控制器(Controller)。

➢ 模型(Model)

模型代表应用程序的数据以及用于访问控制和修改这些数据的业务规则。当模型发生改变时,它会通知视图,并为视图提供查询模型相关状态的功能。同时,它也为控制器提供访问封装在模型内部的应用程序功能的能力。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性

在Java Model 2 中,主要由JavaBean 充当着模型的角色。

➢ 视图(View)

视图是用户看到并与之交互的界面,它用来组织模型的内容。它从模型那里获得数据并指定这些数据如何表现。当模型变化时,视图负责维护数据表现的一致性。视图同时将用户的请求通知控制器。

在Java Model 2 中,主要由JSP 充当着视图的角色。特别要注意,在JSP 页内没有处理逻辑;它仅负责检索原先由Servlet 创建的对象或JavaBean,从Servlet 中提取动态内容插入静态模板。

➢ 控制器(Controller)

控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web 页面中的超链接和发送HTML 表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。

在Java Model 2 中,Servlet 充当着控制器的角色,负责管理对请求的处理,创建JSP 页面需要使用的JavaBean 和对象,同时根据用户的动作决定把那个JSP 页面传给请求者。(www.chuimin.cn)

下面按照Java Model 2 的架构重写用户登录验证的程序。

例7.2:使用Java Model 2(MVC 设计模式)重写用户登录验证程序。

在本例中,两个JavaBean 类(User.java 和ConnBean.java)和index.jsp 保持不变,还是使用Model 1 示例中的程序。而主要改变的是,新增一个Servlet 作为控制器,代替原来的validate.jsp。然后改变登录页面中表单的action 属性,使表单提交至Servlet 进行处理。

更改后的login.jsp 文件代码:

login.jsp 就是修改了Form 的action 属性,指向了ValidateServlet。

ValidateServlet.java 的文件代码如下:

ValidateServlet 充当控制器角色,它接受客户登录的信息,调用JavaBean 组件对用户登录信息进行验证,并根据验证的结果,调用JSP 页面返回给客户端。

测试运行登录验证程序,效果和Model 1 程序的运行效果一样。但是采用Model 2 的架构,可以将页面的显示、业务逻辑的处理和流程的控制很清晰地区分开,JSP 负责数据的显示,JavaBean 负责承载数据以及业务逻辑的处理,Servlet 负责流程的控制。采用Model 2 架构的Web 应用程序很容易维护和扩展,因为作为视图的JSP 页面之间没有直接的关联。另外,在大型项目的开发过程中,采用Model 2 的架构,可以充分利用前端页面设计人员和后端Java 开发人员所掌握的不同技能。