模型-视图-控制器MVC模式
一、MVC简介
MVC全名是Model View Controller,是模型、视图、控制器的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集在一个部件中,在改进和定制个性化界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
二、Java Web应用程序的主要组件
1、Servlet 组件
Servlet运行于Web容器中,如Tomcat,它可以被Web容器动态加载,接收浏览器请求,调用其他组件处理请求,然后把处理结果返回。当浏览器访问某个Servlet时,Web容器将会创建一个ServletRequest对象和ServletResponse对象,并且把用户的请求信息封装在ServletRequest对象中。然后把这两个对象作为参数传输给Servlet的特定方法中。在该方法中处理请求,把处理结果封装在ServletResponse对象中,返回给Web容器。最后Web容器把结果返回到浏览器去解析、显示。
2、JSP组件
JSP是一种动态网页技术。它把HTML页面中加入Java脚本,以及JSP标签构成JSP文件。当浏览器请求某个JSP页面时,Tomcat会把JSP页面翻译为Java文件。然后将它编译为class文件,接着执行它,把生成的HTML页面返回到客户端显示。
3、JavaBean组件
JavaBean组件是一种符合特定规范的Java对象。在JavaBean组件中定义一系列的属性,并且每个属性都提供setter和getter方法,这样就可以使用该组件存储一些中间数据。例如ServletRequest的请求信息、从数据库中查询出来的信息等。
4、EJB组件
Enterprise Java Bean(EJB)组件是服务器端的Java组件。该组件基于标准分布式对象技术、CORBA和RMI等技术,用于实现企业级应用的额业务逻辑。
5、XML语言
XML(Extensible Markup Language)是一种用来创建自定义标记的标记语言。
6、Web服务器和应用服务器
Web服务器用来处理HTTP请求,并返回HTTP数据。它主要用来和浏览器进行交互,给用户提供服务。应用服务器可以被Web服务器调用,进行业务逻辑的处理。它返回的数据被Web服务器组织为HTML格式,然后返回到浏览器去解析。
三、Java Web解决方案
1、 Jsp+JavaBean
该模式将业务逻辑与页面表现进行分离,在一定程度上增加了程序的可调式性和维护性。简单,适合小型项目的快速构建与运行。但是页面将控制与显示集于一身。
2、 Jsp+Servlet+JavaBean
Jsp作为视图,来表示页面。Servlet作为控制器,控制程序的流程并调用业务进行处理。JavaBean封装了业务逻辑,遵循了MVC设计模式。但是没有统一的开发框架导致开发周期过长。
3、 Struts开发方案
成熟的MVC开发框架。控制器包括ActionServlet组件、RequestProcess组件、Action组件等,视图主要由Jsp页面构成,还包括Html文档、Jstl和Struts标签库、JavaScript脚本和CSS样式、多媒体文件。对于一些大型的项目Struts框架会提高开发效率,并对后期的维护有着很大的好处。
4、 Spring开发方案
拥有IOC和AOP两种先进的技术为基础,完美简化了企业级开发的复杂度,是一个理想的Web程序框架。构成包括:1、核心模块:继承BeanFactory类,添加了事件处理、国际化、资源装载、透明装载以及数据校验功能,提供了框架式的Bean访问方式和企业级功能。2、Aop模块:提供了用标准Java语言编写的Aop框架,使应用程序抛开EJB的复杂性,但拥有传统EJB的关键功能。3、Dao模块:提供了JDBC的抽象层,并且提供了对声明式事务和编程式事务的支持。4、Web模块:建立在上下文模块基础上,提供了Servlet监听器的Context和Web应用的上下文。5、O/R映射模块:提供了对现有ORM框架的支持如Hibernate。
Spring MVC框架:建立在核心模块之上。能够适应多种多视图、模板技术、国际化和验证服务,实现控制逻辑和业务逻辑的清晰的分离。
5、 Struts+HIbernate开发方案
利用Struts的MVC设计模式,与Hibernate持久化对象组成的开发方案。
6、 Struts+Spring+Hibernate开发方案
Struts负责表示层,Spring负责逻辑层的业务,Hibernate负责持久层中数据库的操作,组成的开发方案。
四、常用的Java Web的MVC框架
1、 SpringMVC
Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。
2、 Spring
3、 Mybatis
MyBatis 是支持普通 SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
4、 Dubbo
Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC(远程过程调用协议)远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架。
5、Shiro
Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权。Shiro在JavaSE和JavaEE项目中都可以使用。它主要用来处理身份认证,授权,企业会话管理和加密等