Servlet程序中夹杂HTML的画面输出绝对不是什么好主意,原先是java中写HTML,后来jsp出现了,变成了HTML中写Java.jsp网页中夹杂java程序代码,也是极度不建议的做法.java程序代码与呈现画面的HTML等搅和在一起,一来编写不易,二来日后维护不易,三来对大型团队间的分工合作也是一个大的困扰.
而应用程序架构上的设计正好用来解决这一堆麻烦,使分工更加明确,便于维护.
谈到web应用程序架构,应该先来谈mvc和model2.
mvc是model,View,Controler的缩写,译为模型,视图,控制器,分别代表应用程序中三种职责各不相同的对象.
对于mvc模型最主要的是知道:
1.模型不会有画面相关的程序代码(比如不会出现java中夹杂HTML代码)
2.视图负责画面相关逻辑
3.控制器知道某个操作必须调用哪些模型(原先Servlet中写HTML代码,证明它们之间有着数据上的联系,两者分开了,总需要有一个可以互相联系的方式)
model1:
在model1架构上,用户直接请求某个jsp页面(而非控制器转发),jsp收集请求参数并调用JavaBean来处理.业务逻辑的部分封装在JavaBean中,JavaBean也许还会调用一些后端的元件(如操作数据库).JavaBean处理完毕,jsp再从JavaBean中提取结果,进行画面的呈现处理.在model1架构中,jsp页面还负责了收集参数与掉哦用JavaBean的职责,维护jsp的人工作加重.jsp如果还夹杂html与java程序代码,也不利于java程序设计人员来处理画面逻辑.适用:减少请求转发的流程设计与角色区隔,适合中小型应用程序快速开发上
model1图:
model2的架构上,控制器,模型,视图各负的职责:
控制器:取得请求参数,验证请求参数,转发请求给模型,转发请求给页面,这些都使用程序代码来实现
模型:接收控制器的请求调用,负责处理业务逻辑,负责数据存储逻辑等,这部分还依应用程序功能,产生各多种不同职责的模型对象,模型使用程序代码来实现
视图:接收控制器的请求调用,会从模型提取运算后的结果,根据需求呈现所需的画面,在职责分配良好的情况下,基本可做到不出现程序代码,因此不会发生程序代码和HTML混杂在一起的情况.
model2图: