一、MVC设计模式理解java
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑汇集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不须要从新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。程序员
Model(模型):数据模型,提供要展现的数据,所以包含数据和行为,主要提供了模型数据查询和模型数据的状态更新等功能,包括数据和业务。主要使用的技术:数据模型:实体类(JavaBean),数据访问:JDBC,Hibernate等。web
View(视图):负责进行模型的展现,通常就是咱们见到的用户界面,好比JSP,Html等spring
Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图,由视图负责展现。主要使用的技术:servlet,Struts中的Action类等。数据库
MVC是一个框架模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分红三个核心部件:模型、视图、控制器。它们各自处理本身的任务。最典型的MVC就是JSP + servlet + javabean的模式。编程
二、Java web 应用程序的经常使用组件设计模式
JAVA web通常叫作J2EE java 2企业级版本,组件包含不少:JSP/SERVLET, Web Service, Message, EJB等等。浏览器
JSP服务器
JSP是一种动态网页技术。它把HTML页面中加入Java脚本,以及JSP标签构成JSP文件。当浏览器请求某个JSP页面时,Tomcat会把JSP页面翻译为Java文件。架构
Serverlet
Servlet运行于Web容器中,如Tomcat,它能够被Web容器动态加载,接收浏览器请求,调用其余组件处理请求,而后把处理结果返回。当浏览器访问某个Servlet时,Web容器将会建立一个ServletRequest对象和ServletResponse对象,而且把用户的请求信息封装在ServletRequest对象中。而后把这两个对象做为参数传输给Servlet的特定方法中。在该方法中处理请求,把处理结果封装在ServletResponse对象中,返回给Web容器。最后Web容器把结果返回到浏览器去解析、显示。
EJB
企业级JavaBean(Enterprise JavaBean, EJB)是一个用来构筑企业级应用的服务器端可被管理组件。Java企业版API(Java Enterprise Edition)中提供了对EJB的 规范。EJB是一个封装有某个应用程序之业务逻辑服务器端组件。
三、Java web 的解决方案(开发方法)
JSP+JavaBean
该模式将业务逻辑与页面表现进行分离,在必定程度上增长了程序的可调试性和维护性。简单,适合小型项目的快速构建与运行。
JSP+javaBean+Serverlet
JSP做为视图,来表现页面;Servlet做为控制器,控制程序的流程并调用业务进行处理;JavaBean封装了业务逻辑。遵循了MVC设计模式。也是最为基础的一种构思方式。
Spring
创建在核心模块之上,嫩够适应于多种多视图、模板技术、国际化和验证服务,实现控制逻辑和业务逻辑清晰的分离。
JSP+Struts+Hibernate
利用Struts的MVC设计模式,与Hibernate持久化对象组成的开发方案。
JSP+Struts+Spring+Hibernate
Struts负责表示层,Spring负责逻辑层的业务, Hibernate持久层中数据库的操做,组成的开发方案。
四、经常使用的Java web 的MVC框架
Struts2
Struts2是流行和成熟的基于MVC设计模式的Web应用程序框架。 Struts2不仅是Struts1下一个版本,它是一个彻底重写的Struts架构。Struts对Model,View和Controller都提供了对应的组件。可是在ssh开发过程当中主要用Struts做为三层架构中的表现层,也就是MVC中的View和Control层。
Struts2提供了表单提交参数封装成POJO类,提交参数的类型转换,输入校验,文件的上传下载,程序的国际化,Struts2标签,以及对AJAX的支持。
Hibernate
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了很是轻量级的对象封装,使得Java程序员能够为所欲为的使用对象编程思惟来操纵数据库。 Hibernate能够应用在任何使用JDBC的场合,既能够在Java的客户端程序使用,也能够在Servlet/JSP的Web应用中使用,说的简单点:就是功能更增强大的JDBC。
Hibernate实现了对象到数据库端的封装。就是常说的ORM(Object Relation Mapping),它的出现使得编程更加的面向对象,在传统的编程上,咱们要将对象存储到关系数据库中,须要写不少代码来实现,并且须要考虑跨数据库的平台的问题。有了Hibernate能够方便的实现从对象转换到关系数据库。这就是对象持久化。
Spring
主要包含两个重要功能:IOC和AOP,也就是常说的依赖注入和面向切面编程。固然还有Spring的事务功能,不过这一功能是在结合前面二者的功能实现的。
IOC依赖注入(控制反转),是一种设计模式。一层含义是控制权的转移:由传统的在程序中控制依赖转移到由容器来控制;第二层是依赖注入:将相互依赖的对象分离,在spring配置文件中描述他们的依赖关系。他们的依赖关系只在使用的时候才创建。简单来讲就是不须要NEW一个对象了。
AOP这是一种面向切面的编程思想,这种思想使得编程思想上获得了历史性的进步。它将程序的执行过程切割成不一样的面,在面之间能够插入咱们想执行的逻辑。