Model1和Model2是java web的两种架构模式。这两种模式各有优缺点,都有各自适合使用的场景。

Model1

首先,从分层的角度说,Model1模式可以看作是由两层组成:视图层和模型层。

<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
<%@ page import="com.bjpowermode.drp.sysmgr.*"%>
<%@ page import="com.bjpowermode.drp.domain.*"%>
<%
//取得参数
String command=request.getParameter("command");
String userId=request.getParameter("userId");
//调用业务逻辑中的查询用户代码是否存在的方法
User user=UserManager.getInstance().findUserById(userId);
//点击修改
if("modify".equals(command)){
//User user=new User();
user.setUserId(request.getParameter("userId"));
user.setUserName(request.getParameter("userName"));
user.setPassword(request.getParameter("password"));
user.setContactTel(request.getParameter("contactTel"));
user.setEmail(request.getParameter("email"));
//调用业务逻辑中的修改用户的方法
UserManager.getInstance().modifyUser(user);
System.out.println("修改成功");
} %>

可以看出,model1是以jsp为中心的,在jsp页面调用了很多业务逻辑的方法。在例子中,我们选择一个用户,点击修改,就将数据提交到了jsp对象中。然后在jsp去调修改用户的方法,执行数据库操作,最后返回结果。这种模式让我想起了在没有用三层之前,

Model2

/**
* 修改物料Servlet
* @author Administrator
*
*/
public class ModifyItemServlet extends AbstractItemServlet { @Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//构造表单数据
String itemNo=request.getParameter("itemNo");
String itemName=request.getParameter("itemName");
String spec=request.getParameter("spec");
String pattern=request.getParameter("pattern");
String category=request.getParameter("category");
String unit=request.getParameter("unit"); //构造Item对象
Item item=new Item();
item.setItemNo(itemNo);
item.setItemName(itemName);
item.setSpec(spec);
item.setPattern(pattern); //构造物料类别
ItemCategory itemCategory=new ItemCategory();
itemCategory.setId(category);
item.setItemCategory(itemCategory); //构造物料单位
ItemUnit itemUnit=new ItemUnit();
itemUnit.setId(unit);
item.setItemUnit(itemUnit); //调用后台业务逻辑
itemManager.modifyItem(item); response.sendRedirect(request.getContextPath()+"/servlet/item/SearchItemServlet");
} @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { doPost(request, response);
} }

在例子中,我们在客户端请求修改的命令到servlet,把调用业务逻辑的方法放在ModifyItemServlet中。

小结:

Model1结构简单,容易上手,适合一些小型的项目。但也正是由于他的这个优点,也带来了很大的弊端。他把业务逻辑和表现都杂糅到了一起,使得耦合度大大增加,给维护带来了很大的困难。尤其是在大型的项目中,这点就尤为突出了。Model2弥补了Model1 的缺点,在大型项目开发中,可以更好的做到多人协作开发,互不影响。

Java中Model1和Model2的更多相关文章

  1. 【drp 10】JSP页面中model1和model2的区别

    一.基本概念 1.1,model1 model1的开发模式是:jsp+javabean的模式,它的核心是JSP页面,在这个页面中,jsp页面负责整合页面和javabean(业务逻辑),而且渲染页面.它 ...

  2. 【Java架构学习】Model1和Model2讨论

    在Java的学习中.这两个词的频率出现的非常高.那就是Model1和Model2.那么到底什么是Model1,什么是Model2呢?我们是不是又非常自然接受这两个概念.可是不知道其所以然呢?今天我们就 ...

  3. 浅析Java开发模式—Model1、Model2和三层

    "解耦"的思想一直是我们倡导的,但在实际项目中怎样去做?这是需要我们去好好思考的.下面以Model1.Model2.三层为切入点,对比下去了解解耦的思想. Model1 使用JSP ...

  4. Java Web开发技术教程入门-Model1和Model2

    今天我们聊聊JSP开发中的Model1和Model2. Model1采用了JSP+JavaBean技术开发Web应用.其中,JSP实现页面显示,业务逻辑和流程控制,数据处理由JavaBean完成.在J ...

  5. Model1与Model2

    Model1与Model2开发模式的介绍及区别 转载 浅析Java开发中的Model1和Model2

  6. java中的传值与传引用

    java函数中的传值和传引用问题一直是个比较“邪门”的问题,其实java函数中的参数都是传递值的,所不同的是对于基本数据类型传递的是参数的一份拷贝,对于类类型传递的是该类参数的引用的拷贝,当在函数体中 ...

  7. 浅谈Model1 VS Model2

    在学习drp的过程中就对model1和model2产生了浓厚的兴趣,一直都没有好好总结下,接下来就和大家一起学习下它们的真面目. 一.是什么? 首先大家提到model想到了什么?它的名词意识是:模型: ...

  8. 浅析JavaWeb开发模式:Model1和Model2

    一.前言 在学习JavaWeb的过程中,大家都会接触到Model1和Model2,历史的发展过程是Model1 → Model2.那么它们之间有何相同之处和不同之处呢? 二.Model1 Model1 ...

  9. java中的锁

    java中有哪些锁 这个问题在我看了一遍<java并发编程>后尽然无法回答,说明自己对于锁的概念了解的不够.于是再次翻看了一下书里的内容,突然有点打开脑门的感觉.看来确实是要学习的最好方式 ...

随机推荐

  1. Mysql连接报2003-10061以及1045错误

    Mysql连接不上报的异常,调了好几个小时,分享一下 2003-10061错误这种情况就是没有启动,我是重装系统后出现,我安装的Mysql下并没有my.ini配置 windows下也是没有,服务管理上 ...

  2. hibernate的CRUD操作

    一对多关系映射的crud操作: 1.单项的保存操作 /** * 保存操作 * 正常的保存:创建一个联系人,需要关联客户 */ @Test public void test1(){ Session s= ...

  3. angularjs1+requirejs+ bootstrap+ jQuery低版本配合兼容ie8+浏览器

    angularjs兼容低版本IE浏览器(IE8)angularjs在1.3之后的版本都是选择放弃对IE8及更低IE版本的支持,但是就目前的开发形式来看,IE8的使用客户还是蛮多的,最近有个项目要求尽量 ...

  4. QQ群技术:0成本创建2000人QQ群技巧

    群人数,直接关系群权重;于排名,意义非凡;此法靠谱,笔者亲测. 就说这张图,这类关键词,要是没2000人群,不管你多流弊,你是做不上去滴. 于QQ群霸屏,笔者有太多的笔墨,各种排名技巧,阿力推推早前明 ...

  5. phpstudy配置域名后apache无法启动

    1.设置域名后重启 apache停止了 检查步骤1.php路径不要有中文,phpstudy重新安装在无中文路径 2.检查80端口是否被占用,如果被占用可以停止该程序或者修改apache/nginx 端 ...

  6. dos命令操作数据库(上)

    1.cd到mysql安装目录bin目录: 2.输入id.用户名和密码: 3.查看数据库实例: 4.创建一个实例: 5.删除一个实例: 6.创建一个表: 7.删除一个表: 8.表结构: 9.修改表: 你 ...

  7. ctf题目writeup(4)

    2019.1.31 题目:这次都是web的了...(自己只略接触隐写杂项web这些简单的东西...) 题目地址:https://www.ichunqiu.com/battalion 1. 打开链接: ...

  8. R语言绘图:在地图上绘制热力图

    使用ggplot2在地图上绘制热力图 ######*****绘制热力图代码*****####### interval <- seq(0, 150000, 25000)[-2] #设置价格区间 n ...

  9. python 字符串输入、输出函数print input raw_input

    一.输出print print输出是以不带引号的输出.(用户所见的输出) 二.input()  和  raw_input()输入函数 raw_input()会把输入数据转换成字符串形式: ------ ...

  10. 教你如何更改xshell中的转发规则

    使用不同的类型转发,与之对应的端口,所以如果想要使用不同类型的转发就要更改端口使其与之一一对应.本集xshell专栏文章将为大家讲解如何更改转发规则. 更改转发规则操作如下: 1.打开会话对话框. 2 ...