(jsp+servlet+javabean )MVC架构
MVC是三个单词的缩写,这三个单词分别为:模型、视图和控制。
使用的MVC的目的:在于将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如Windows系统资源管理器文件夹内容的显示方式,下面两张图中左边为详细信息显示方式,右边为中等图标显示方式,文件的内容并没有改变,改变的是显示的方式。不管用户使用何种类型的显示方式,文件的内容并没有改变,达到M和V分离的目的。
MVC架构是交互式应用中广泛使用的架构。它将对象按功能进行划分,尽可能地最小化对象之间的耦合度。MVC架构与传统的应用程序架构—输入,处理,输出给用户接口的模型相对应。它们也与基于域的多层企业级WEB应用相对应。
MVC架构将应用分为三层—模型,视图,控制,并减弱它们各自的责任。每一层处理特定的任务并对其它层有特殊的责任。
模型存储业务数据和控制访问与修改业务数据的业务逻辑或操作。表现上看,模型与软件中的函数功能有些相似。当模型改变时会通知视图并为视图提供了查询模型状态的能力。它也为控制器提供了访问封装在模型中的应用功能函数的能力。
视图展示模型中的内容。它访问模型中的数据并完成数据的显示工作。当模型改变时它会即时更新数据的展示。视图也完成将用户的输入传递到控制器的功能。
控制器定义了应用程序的行为。它分派用户的请求然后调用相应的视图来展示。它解析用户的输入然后与模型中完成相应功能的事件处理相匹配。在标准的GUI客户端应用中,用户输入包括点击按钮和选择菜单。在WEB应用中,它们则是WEB层中的HTTP GET和POST请求。控制器选择相应的视图来显示是基于用户与模型相互交互的结果。一个典型的应用是所有相关的功能由一个控制器来处理。一些应用针对不同的客户端类型采用不同的控制器来处理,因为视图的交互与选择可能因客户端类型的不同而有所不同。
最典型的MVC就是jsp+servlet+javabean模式。
JavaBean作为模型,既可以作为数据模型来封装业务数据,又可以作为业务逻辑模型来包含应用的业务操作。其中,数据模型用来存储或传递业务数据,而业务逻辑模型接收到控制器传过来的模型更新请求后,执行特定的业务逻辑处理,然后返回相应的执行结果。
JSP作为表现层,负责提供页面为用户展示数据,提供相应的表单(Form)来用于用户的请求,并在适当的时候(点击按钮)向控制器发出请求来请求模型进行更新。
Serlvet作为控制器,用来接收用户提交的请求,然后获取请求中的数据,将之转换为业务模型需要的数据模型,然后调用业务模型相应的业务方法进行更新,同时根据业务执行结果来选择要返回的视图。
MVC举例二:
JSP其实就是servlet。是从Servlet继承而来。只不过它在Servlet当中又添加/修改了一些方法,作了新的封装。
JSP是Servlet的扩展,在没有JSP之前,就已经出现了Servlet技术。Servlet是利用输出流动态生成HTML页面,包括每一个HTML标签和每个在HTML页面中出现的内容。 由于包括大量的HTML标签、大量的静态文本及格式等,导致Servlet的开发效率极为低下。 从表面上看,JSP页面已经不再需要Java类,似乎完全脱离了Java面向对象的特征。事实上,JSP是Servlet的一种特殊形式,每个JSP页面就是一个Servlet实例——JSP页面由系统编译成Servlet,Servlet再负责响应用户请求。JSP其实也是Servlet的一种简化,使用JSP时,其实还是使用Servlet,因为Web应用中的每个JSP页面都会由Servlet容器生成对应的Servlet。对于Tomcat而言,JSP页面生成的Servlet放在work路径对应的Web应用下。
servlet(其实之前需要在xml配置文件,现在不需要了,更方便了)
servlet需要容器的支持才能运行,如Tomcat、jetty.
达到servlet的请求,需要ServletRequest对象和ServletResponse对象去处理。
现在JSP用来做页面视图的展现,servlet用于逻辑控制。在MVC架构模式中,就 JSP 和 Servlet而言,C通常由 Servlet充当,V通常由 JSP来充当。
servlet在服务器中的运行:1.加载到内存->2.初始化(init()) - > 3.调用(service(){doGet/doPost}) - 4.销毁(destroy())。其中(1)(2)(4)在 Servlet的整个生命周期中只会被执行一次,
servlet是后台处理程序,负责接收客户端发送的信息,处理并返回相应的信息。
jsp在现在的环境下,作用就如同一个显示器+键盘+鼠标,负责显示、输入数据。
Java Web项目运行的流程大概是这样的客户端jsp页面发送请求-->servlet接收-->其他层次处理数据(biz、dao等业务处理,访问数据库等)-->servlet将处理后的结果返到客户端jsp-->jsp负责显示处理后的数据。
搞清楚这个流程之后,servlet和jsp的作用就一目了然了。
JAVAEE常说的三大框架就是SSH:struts2+spring+hibernate;
其中structs是显示层的框架,为数据传入、数据返回客户端提供支持。
hibernate是数据层的框架,负责与数据库连接,简化JDBC开发。
spring则是一个轻量级框架,他提供很多功能,能对上面的框架提供更好的支持,同时解决耦合、业务变更等其他问题。
(jsp+servlet+javabean )MVC架构的更多相关文章
- jsp web JavaBean MVC 架构 EL表达式 EL函数 JSTL
一.JavaBean概念(非常重要) 1.JavaBean就是遵循一定书写规范的Java类型(开发中:封装数据) a.必须有默认的构造方法,类必须是public的 public class ...
- MVC jsp+servlet+javabean 连接Mysql数据库測试demo
本文介绍的是怎样使用MVC架构去实现jsp+servlet+javabean连接数据库 首先我们应该了解什么是MVC: MVC包含三个部分 : ①View:由各种JSP页面组成. ②Controlle ...
- 深入浅出Java MVC(Model View Controller) ---- (JSP + servlet + javabean实例)
在DRP中终于接触到了MVC,感触是确实这样的架构系统灵活性不少,现在感触最深的就是使用tomcat作为服务器发布比IIS好多了,起码发布很简单,使用起来方便. 首先来简单的学习一下MVC的基础知识, ...
- Jsp+Servlet+JavaBean经典MVC模式理解
MVC模式目的(实现Web系统的职能分工). 在Java EE中,Jsp+Servlet+JavaBean算是里面经典的模式,是初学者必备的知识技能.M, Model(模型)实现系统的业务逻辑 1.通 ...
- JSP中使用的模式——JSP+Servlet+JavaBean
上一篇博文写到模式一:JSP+JavaBean 链接地址:http://wxmimperio.coding.io/?p=155 JSP中两种模式的总结 链接地址:http://wxmimperio.c ...
- JSP+Servlet+javabean+oracle实现页面多条件模糊查询
之前写过一篇JSP+Servlet+javabean+mysql实现页面多条件模糊查询 使用的是mysql进行的分页查询,mysql用limit控制,而oracle则是用rownum,今天第一次写or ...
- jsp+servlet+javabean开发web项目
一.介绍: 项目依赖包:jdbc数据库包 jsp+servlet+javabean开发web项目,是最接近web项目原生运行原理的. 但是,jsp内容混乱,项目结构复杂时,代码会混乱 二.运行原理: ...
- JSP+Servlet+javabean+mysql实现页面多条件模糊查询
需求: 一般列表页上面会有一个查询框,有各种的查询条件组合,一般都采用模糊查询方式 ,以下以自己做的实例来说明一下实现方法: 需要实现的界面原型:要满足条件: 1.单选分类,点GO按扭 2.单独输入标 ...
- java_web—JSP+Servlet+JavaBean
JSP -> Java Server Page 后端 jsp -> JavaScript 前端 JSP语法 1.JSP插入Java代码 三种形式: (1)<%! %> ( ...
随机推荐
- 基于 HTML5 WebGL 的智慧楼宇可视化系统
前言 可视化的智慧楼宇在 21 世纪是有急迫需求的,中国被世界称为"基建狂魔",全球高层建筑数量位居首位,所以对于楼宇的监控是必不可少.智慧楼宇可视化系统更多突出的是管理方面的功能 ...
- ionic中的http,jsonp的使用
要导入 import { HttpModule,JsonpModule } from '@angular/http'; 到app.module.ts http,jsonp的区别 第一:在U ...
- Yandex Big Data Essentials Week1 Unix Command Line Interface File System exploration
File System Function In computing, a file system or filesystem is used to control how data is stored ...
- k8s系列---hpa扩容
centos-master:172.16.100.60 centos-minion:172.16.100.62 k8s,etcd,docker等都是采用yum装的,部署参考的k8s权威指南和一个视频, ...
- Django 配置文件 settings.py
1. dubug配置 DEBUG=False 2. 数据库配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', &qu ...
- PgSQL备份
SQL转储. 这里我们用到的工具是pg_dump和pg_dumpall. 这种方式可以在数据库正在使用的时候进行完整一致的备份,并不阻塞其它用户对数据库的访问.它会产生一个脚本文件,里面包含备份开始时 ...
- lua 打印一个table的实现
print("-------------Test-----------------") local tb = {} function printProperties(t, csp) ...
- pretty-errors:美化python异常输出以使其清晰易读
1. 安装pretty-errors python -m pip install pretty_errors 2.如果你想让你的每一个程序都能这样在报错时也保持美貌,那么运行下面这这行命令,就不用每次 ...
- pikachu-文件包含漏洞(Files Inclusion)
一.文件包含漏洞概述 在web后台开发中,程序员往往为了提高效率以及让代码看起来简洁,会使用"包含"函数功能.例如把一些功能函数都写进fuction.php中,之后当某个文 ...
- 《C# 6.0 本质论》 - 学习笔记
<C# 6.0 本质论> ========== ========== ==========[作者] (美) Mark Michaelis (美) Eric Lippert[译者] (中) ...