zoukankan      html  css  js  c++  java
  • Java中Model1和Model2


     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 的缺点,在大型项目开发中,可以更好的做到多人协作开发,互不影响。

  • 相关阅读:
    机试指南
    Python 切片与深拷贝
    list去重,求差集,保持顺序不变
    python--coding
    python --cookbook
    H5py文件
    面向对象
    企业微信和微信公众号获取wx.config的安卓和ios的区别----踩坑
    vue+vant实现上拉加载下拉刷新(访问后台逻辑)
    vue实现前端跨域问题
  • 原文地址:https://www.cnblogs.com/saixing/p/6730270.html
Copyright © 2011-2022 走看看