javawebday36(MVC设计模式 总结概要图片)

本文介绍了MVC架构模式在JavaWeb开发中的应用与发展历程,包括从JSPModel1到JSPModel2的不同阶段特点。重点阐述了MVC模式如何提高软件的可维护性和扩展性。
/*
 *1、MVC
 *  不是java独有的,所有的B/S结构的项目都在使用他
 *  M--model 模型(自己写代码)
 *  V--View 视图(jsp)
 *  C--Controller 控制器(Servlet)
 *  MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)、和控制器(Controller)
 *  MVC模式最早为Trygve Reenskaug提出,为施乐帕罗奥多研究中心(Xerorx PARC)的Smalltalk语言发明的一种软件设计模式
 *  MVC可对程序的后期维护和扩展提供了方便,并且使程序某些部分的重用提供了方便。而且MVC也使程序简化,更加直观
 *      控制器Controller 对请求进行处理,负责请求转发
 *      视图View 界面设计人员进行图形界面设计
 *      模型Model 程序编写程序应用的功能(实现算法等等)、数据库管理
 *  MVC不是Java的东西,几乎现在所有B/S结构的软件都采用了MVC设计模式。但要注意,MVC在B/S结构软件并没有完全实现,例如我们今后的B/S软件中并不会有事件驱动
 *2、JavaWeb和MVC
 *  JavaWeb经历了JSP Model1、JSP Model1 二代、JSP Model2三个时期 
 *2.1、JSP Mode1 第一代[全部一个人搞]
 *  JSP Model1 是JavaWeb早期的模型,适合小型Web项目,开发成本低。Model1第一代时期,服务器端只有JSP页面,所有的操作都在JSP页面中,
 *连访问数据库的API也在JSP页面中完成。也就是说,所有的东西都耦合在一起,对后期的维护和扩展极为不利。
 *2.2、JSP Model1 第二代[初步分工]
 *  JSP Model1 第二代有所改进,把业务逻辑的内容放到了JavaBean中,而JSP页面负责显示以及请求调度的工作。虽然第二代比第一代好了些,
 *但还让JSP做了过多的工作,JSP中把视图工作和请求调度(控制器)的工作耦合在一起了
 *2.3、JSP Model2[规模做大 分工合作]
 *  JSP Model2模式已经可以清晰的看到MVC完整的结构了
 *      JSP:视图层,用来与用户打交道。负责接受用来的数据,以及显示数据给用户
 *      Servlet:控制层 负责找到合适的模型对象来处理业务逻辑,转发到合适的视图
 *      JavaBean:模型层,完成具体的业务工作,例如:开启、转账等
 *  JSP Model2 适合多人合作开发大型的Web项目,各司其职,互不干涉,有利于开发中的分工,有利于组件的重用。但是,Web项目的开发难度加大,同时对开发
 *然元的技术要求也提高了。
 *
 *JavaWeb 经典三层框架
 *  常说的三层框架是由JavaWeb提出的,也就是说这是JavaWeb独有的
 *  所谓三层是表述层(WEB层)、业务逻辑层(Business Logic)以及数据访问层(Data Access)
 *      WEB层:包含JSP和Servlet等与Web相关的内容(request、response、session、ServletContext)
 *      业务层:业务层中不包含JavaWeb API,只关心业务逻辑(经过某些操作能获取什么 比如积分)
 *      数据层:封装了对数据库的访问细节(所有对数据库的操作,不能跳出到DAO[data access object]之外)
 *  在业务层中不能出现JavaWeb API,例如request、response,也就是说,业务层代码是可重用的,甚至可以应用到非Web环境中。业务层的每个方法都可以理解成
 *一个万能,例如转账业务方法。业务层依赖数据层,而Web层依赖业务层
 */

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
User.java

/**
 * 把数据库中查询出的结果保存到这个对象中。
 * 
 * @author Administrator
 *
 */
public class User {
    private String username;
    private String password;
    set get 有参和无参构造器 还有toString

UserDao.java

public class UserDao {
    /*
     * 把xml中的数据查询出来之后,封装到user对象中,然后返回
     */
    public User find(){
        return new User("zhangsan","123");
    }
}

UserService.java

public class UserService {
    //service层依赖dao层
    private UserDao userDao = new UserDao();
    /*
     * service的查询,需要使用dao来完成
     */
    public User find(){
        return userDao.find();
    }
}

UserServlet.java 创建个Servlet进行处理

public class UserServlet extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        /*
         * 在servlet中依赖service,然后通过service完成功能,把结果保存到request中
         * 转发到jsp显示
         */
        UserService userService = new UserService();
        User user = userService.find();

        request.setAttribute("user", user);

        request.getRequestDispatcher("/a.jsp").forward(request, response);
    }
}

a.jsp

<%@ page isELIgnored="false" %> 
  <body>
    用户名${user.username }<br/>
    密码   ${user.password}<br/>
  </body>

index.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>     
  <body>
    <a href="<c:url value='/UserServlet'/>">点击查看</a>
  </body>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值