一、MVC简介

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

模型-视图-控制器(MVC)是Xerox PARC在二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,已被广泛使用。后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。

二、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设计模式。但是没有统一的开发框架导致开发周期过长。JSP作为视图,来表现页面;Servlet作为控制器,控制程序的流程并调用业务进行处理;JavaBean封装了业务逻辑。遵循了MVC设计模式。

四、常用的Java Web的MVC框架

Struts

Struts是Apache软件基金下Jakarta项目的一部分。Struts框架的主要架构设计和开发者是Craig R.McClanahan。Struts 是Java Web MVC框架中不争的王者。经过长达九年的发展,Struts已经逐渐成长为一个稳定、成熟的框架,并且占有了MVC框架中最大的市场份额。但是Struts某些技术特性上已经落后于新兴的MVC框架。面对Spring MVC、Webwork2这些设计更精密,扩展性更强的框架,Struts受到了前所未有的挑战。但站在产品开发的角度而言,Struts仍然是最稳妥的选择。
Struts有一组相互协作的类(组件)、Servlet以及jsp tag lib组成。基于struts构架的web应用程序基本上符合JSP Model2的设计标准,可以说是MVC设计模式的一种变化类型。根据上面对framework的描述,很容易理解为什么说Struts是一个web framework,而不仅仅是一些标记库的组合。但 Struts 也包含了丰富的标记库和独立于该框架工作的实用程序类。Struts有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBC和Object Relation Bridge。在视图层,Struts能够与JSP, Velocity Templates,XSL等等这些表示层组件相结合。

Spring

Spring实际上是Expert One-on-One J2EE Design and Development 一书中所阐述的设计思想的具体实现。在One-on-One 一书中,Rod Johnson倡导J2EE实用主义的设计思想,并随书提供了一个初步的开发框架实现(interface21 开发包)。而Spring 正是这一思想的更全面和具体的体现。Rod Johnson 在interface21 开发包的基础之上,进行了进一步的改造和扩充,使其发展为一个更加开放、清晰、全面、高效的开发框架。
Spring是一个开源框架,由Rod Johnson创建并且在他的著作《J2EE设计开发编程指南》里进行了描述。它是为了解决企业应用开发的复杂性而创建的。Spring使使用基本的JavaBeans来完成以前只可能由EJB完成的事情变得可能了。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。
简单来说,Spring是一个轻量的控制反转和面向切面的容框架。当然,这个描述有点过于简单。但它的确概括出了Spring是做什么的。

ZF

Zend Framework(简写ZF)是由 Zend 公司支持开发的完全基于 PHP5 的开源PHP开发框架,可用于开发 Web 程序和服务,ZF采用 MVC(Model–View-Controller) 架构模式来分离应用程序中不同的部分方便程序的开发和维护。

.NET

.NET MVC  是微软官方提供的以MVC模式为基础的.NET Web应用程序(Web Application)框架,它由Castle的MonoRail而来(Castle的MonoRail是由java而来),目前最新版本是.N 4.5。

转载于:https://www.cnblogs.com/nxxam/p/6754567.html

MVC模式在Java Web应用程序中的实现相关推荐

  1. MVC模式 在Java Web应用程序中的实现

    一.MVC简介 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分 ...

  2. MVC模式在Java Web应用程序中的实例分析

    结合六个基本质量属性: 可用性:网站出现异常时,能记录故障,且进行通知,能够在有限时间内重新恢复正常 可修改性:进行修改的情况下,能对其它组件减少影响,比如工具类的修改,只需要到这一个地方进行修改,且 ...

  3. java web里实现 mvc_MVC模式在Java Web应用程序中的实现

    一.MVC简介: MVC架构是一个复杂的架构,其实现也显得非常复杂..Views可以看作一棵树,可以用Composite Pattern来实现.Views和Models之间的关系可以Observer  ...

  4. web csrf java_在Java Web应用程序中阻止CSRF

    web csrf java 跨站点请求伪造攻击(CSRF)在Web应用程序中非常常见,如果允许,可能会造成重大危害. 如果您从未听说过CSRF,建议您查看有关它的OWASP页面 . 幸运的是,阻止CS ...

  5. 在Java Web应用程序中阻止CSRF

    跨站点请求伪造攻击(CSRF)在Web应用程序中非常常见,如果允许,可能会造成重大危害. 如果您从未听说过CSRF,建议您查看有关它的OWASP页面 . 幸运的是,阻止CSRF攻击非常简单,我将向您展 ...

  6. 百家与g对比oogle_如何在Java Web应用程序中集成G​​oogle reCAPTCHA

    百家与g对比oogle I never liked Captchas because the burden was always on end user to understand the lette ...

  7. 将Wiremock集成到Spring Boot Java Web应用程序中以模拟外部依赖关系

    介绍 WireMock是用于基于HTTP的API的模拟服务器. 有些人可能会将其视为服务虚拟化工具或模拟服务器. 它使您能够存根所需的API或其他外部依赖项,以加快本地开发速度. 它支持测试真实API ...

  8. java 图片放在哪_在Java Web应用程序中,应该将用户照片存储在哪里?

    小编典典 解决方案前要考虑的事项: 您是否会水平扩展Web应用程序(即,您是否正在运行多个servlet容器实例). 您期望什么样的流量? 图片需要更新的速度(即用户更改了头像后,他们和所有其他用户是 ...

  9. java web超时提醒_如何在Java Web应用程序中动态设置会话超时?

    我需要给我的用户一个Web界面来更改会话超时间隔. 因此,Web应用程序的不同安装对其会话可以具有不同的超时,但是它们的web.xml不能相同. 您的问题很简单,您需要在运行时配置会话超时间隔,并且应 ...

  10. java重定向并保持同一个会话_当会话在Java Web应用程序中过期时,如何重定向到登录页面?...

    您也可以使用以下过滤器进行操作: public class RedirectFilter implements Filter { public void doFilter(ServletRequest ...

最新文章

  1. think in java笔记_Thinking in java读书笔记 PDF 下载
  2. NHibernate之Generator主键生成方式
  3. C++ 学习之旅(7)——指针pointer
  4. java8--IO(java疯狂讲义3复习笔记)
  5. js 中meta 移除head_JS函数和winform函数之间的相互调用
  6. 《Java开发手册》阅读笔记(三)
  7. 远程连接SQL Server (转)
  8. python计算工资编程-当财务部的人会编程,会发生什么?Python实现自动化群发工资条...
  9. 【个人笔记】OpenCV4 C++ 图像处理与视频分析 07课
  10. javascript基础知识-数组
  11. Windows电脑安装Linux系统的方法-Ubuntu版
  12. VS2019、VS2017、VS2013产品密钥
  13. 易飞ERP PLM集成 解决方案
  14. day2_数据运算和类型、列表、元组、字典
  15. MMORPG网络游戏开发之网络通信
  16. (较为罕见)EDEM2021-FLUENT2021R1耦合接口
  17. ❤爆肝nodejs爬虫❤puppeteer带你破解e小天微信机器人授权
  18. 全球及中国光罩盒行业研究及十四五规划分析报告
  19. 树莓派安装下载服务器,小米电视播放
  20. java项目黑科技_黑科技神器-uTools

热门文章

  1. 多线程之线程范围内的数据共享ThreadLocal
  2. p12文件和mobileprovision文件导入到xcode如何使用
  3. jqgrid 行选中multiboxonly属性说明
  4. Bash 远程任意代码执行安全漏洞
  5. MyEclipse服务器远程调试
  6. 深入了解“TXTSETUP.SIF”
  7. 模拟linkedList添加操作
  8. 机器学习Normal Equation的推导(不要求矩阵求导)
  9. BZOJ2115 [WC2011]最大XOR和路径
  10. centos部署k8s集群(kubeadm方式)