首页 > 代码库 > Java项目(4)——探究两种开发模型的异同-Model1与Model2
Java项目(4)——探究两种开发模型的异同-Model1与Model2
弱弱的说一句: jsp在web服务器上,这一点应该没有疑问吧?
首先很俗套地看下两个模型.
Model1就是实现,实现就行,系统简单,谈不上架构,正如简单工厂并不算在23个常用设计模式之列一样.Model1的前身是
所有的业务逻辑都写在Jsp里,和简单工厂没什么区别,从面向对象的角度来说就是职责不单一,不符合开闭原则.Model1将业务逻辑分离出来,一定程度上减轻了jsp的职责.但是,我们可以看到jsp负责取得页面参数,调用业务逻辑,渲染页面等,这又像我们很早之前用三层实现的机房收费系统,U层负责取得数据,调用业务逻辑,显示数据等,甚至会包含一些对数据的判断,如输入框是否为空之类的.严格上说,显示层就是负责显示页面的,不包含业务逻辑.于是,Model2就分离出控制部分,即Servlet.
看起来,它们就差了一个Servlet!但Model1并不是少Servlet,这时候我来猜测一下的话,就会觉得Servlet一定被集成到jsp中,下面看一个事实:在用Model1模型做的页面中(假设页面名称为login.jsp),表单提交到Servlet部分实现代码是:<form name="myForm" method="post"action="login.jsp">也就是说,它提交到自身了.这是不是说明jsp真的集成了Servlet呢?
其实,Model1与Model2真正的区别在于,一个自动生成Servlet,一个手动编写.当工程很大的时候,写到jsp中的内容就会又多又杂又乱,于是我们将它分开来,便于修改和维护.
Servlet是怎么工作的呢?
先得注册Servlet.然后映射Servlet的对外访问路径,通过URL地址访问web服务器中的Servlet.可在web.xml中配置如下.
<servlet> <servlet-name>myServlet</servlet-name> <servlet-class>myServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>myServlet</servlet-name> <url-pattern>/servlet/myServlet</url-pattern> </servlet-mapping>
我们在新建java类后让他继承httpservlet,重写里面的Service,即doGet和doPost方法,当Servlet被实例化和初始化之后,即可处理请求,将request和response作为参数传递,完成后续功能.
Model2是mvc的实现,也是三层的实现,之前看到很多人讨论它们之间的关系,众说纷纭.简单来说,三层是一种分层的思想,它代表着解耦.MVC是一种实现,它使用的正是三层的思想,而它和经典三层又不一样,不同之处主要表现在各层之间互相调用的关系上.
Java项目(4)——探究两种开发模型的异同-Model1与Model2