Java中Model1和Model2
2015-08-18 11:12
477 查看
Model1和Model2是java web的两种架构模式。这两种模式各有优缺点,都有各自适合使用的场景。
Model1
首先,从分层的角度说,Model1模式可以看作是由两层组成:视图层和模型层。
可以看出,model1是以jsp为中心的,在jsp页面调用了很多业务逻辑的方法。在例子中,我们选择一个用户,点击修改,就将数据提交到了jsp对象中。然后在jsp去调修改用户的方法,执行数据库操作,最后返回结果。这种模式让我想起了在没有用三层之前,
Model2
在例子中,我们在客户端请求修改的命令到servlet,把调用业务逻辑的方法放在ModifyItemServlet中。
小结:
Model1结构简单,容易上手,适合一些小型的项目。但也正是由于他的这个优点,也带来了很大的弊端。他把业务逻辑和表现都杂糅到了一起,使得耦合度大大增加,给维护带来了很大的困难。尤其是在大型的项目中,这点就尤为突出了。Model2弥补了Model1 的缺点,在大型项目开发中,可以更好的做到多人协作开发,互不影响。
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 - MD5Util
- 时间工具类积累
- 邻接表有向图 之 Java详解
- Spring事务隔离级别及设置
- java时间的获取
- leetcode-173:Binary Search Tree Iterator(Java)
- 【转】JAVA的动态代理
- leetcode-173:Binary Search Tree Iterator(Java)
- 邻接矩阵有向图 之 Java详解
- 使用maven 构建spring mvc项目
- Spring,SpringMVC,Mybatis (SSM)框架的搭建
- maven引用jar报错:spring-core:jar must be a valid version but is '${spring.version}
- 解决SpringMVC的@ResponseBody返回中文乱码
- jsoup-提示java.net.SocketTimeoutException:Read timed out
- eclipse 中git解决冲突
- 修复Dex文件头--Java源代码
- eclipse eayExplorer 查看代码的资源管理器打开方式
- Java设计模式—生产者消费者模式(阻塞队列实现)
- Myeclipse6.5优化技巧及myeclipse6.5代码提示配置
- java 工程编译及运行