首页 > 代码库 > Java项目(4)——探究两种开发模型的异同-Model1与Model2

Java项目(4)——探究两种开发模型的异同-Model1与Model2

      弱弱的说一句: jspweb服务器上,这一点应该没有疑问吧?

 

      首先很俗套地看下两个模型.

                                



         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?

       其实,Model1Model2真正的区别在于,一个自动生成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,doGetdoPost方法,Servlet被实例化和初始化之后,即可处理请求,requestresponse作为参数传递,完成后续功能.

 

           Model2mvc的实现,也是三层的实现,之前看到很多人讨论它们之间的关系,众说纷纭.简单来说,三层是一种分层的思想,它代表着解耦.MVC是一种实现,它使用的正是三层的思想,而它和经典三层又不一样,不同之处主要表现在各层之间互相调用的关系上.


Java项目(4)——探究两种开发模型的异同-Model1与Model2