MVC学习

Servlet和JSP的单独使用

仅仅使用Servlet的短处

在Servlet的章节中,使用了编辑Hero的Servlet
根据浏览器提交的id,通过HeroDAO找到对应的Hero,然后在Servlet中组织html显示出来。

可以看到这个Servlet不仅要准备数据,还要准备html。 尤其是准备html,可读性非常差,维护起来也很麻烦

仅仅使用JSP的短处

因为在Servlet中编写html有这样的短板,所以索性直接在JSP中开发编辑Hero这个功能

这时会发现,虽然编写html方便了,但是写java代码不如在Servlet中那么方便

结合Servlet和JSP

既然Servlet和JSP都有各自的优势和短板,那么为什么不结合起来扬长避短呢?
HeroEditServlet:只用来从数据库中查询Hero对象,然后跳转到JSP页面

request.setAttribute(“hero”, hero);
在request中设置hero

request.getRequestDispatcher(“editHero.jsp”).forward(request, response);
服务端跳转到editHero.jsp,因为是服务端跳转,都属于同一次请求,所以可以在editHero.jsp通过request取出来

(重点) editHero.jsp: 不做查询数据库的事情,直接获取从HeroEditServlet传过来的Hero对象,通过EL表达式把request中的hero显示出来

MVC设计模式

上述例子中结合Serlvet和JSP进行数据的显示,就是一种MVC的思想。

M 代表 模型**(Model)**
V 代表 视图**(View)**
C 代表 控制器**(controller)**

模型是什么呢? 模型就是数据,就是dao,bean

视图是什么呢? 就是网页, JSP,用来展示模型中的数据

控制器是什么? 控制器用来把不同的数据,显示在不同的视图上。 在这个例子的,Servlet就是充当控制器的角色,把Hero对象,显示在JSP上。

控制器的作用就是把不同的数据(Model),显示在不同的视图(View)上。

在这里插入图片描述

MVC是什么

版权声明:本文为CSDN博主「连江伟」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lianjiangwei/article/details/50864636

很多人都知道MVC,都知道就是把将数据和显示分离,知道Model—View—Controller,但是让你说MVC是什么东西,你可能不知如何回答。那么MVC到底是什么玩意呢?框架?设计模式?架构?都不是。

可以肯定的说(个人认为),MVC不是框架,不是设计模式,更不是架构,它仅仅是一种架构模式。它不描述系统架构,也不指定使用什么技术,仅仅是描述系统架构的一种模式,类似于AOP、IOC、ORM等等,具体的框架技术则是基于这些模式的一些实现而已,比如基于MVC模式的框架有著名的Struts、Spring MVC、JSF、Tapestry以及比较老的WebWork等等,基于ORM模式的框架有Hibernate、MyBatis、iBatis以及.NET比较有名的Entity Framework等等。

我画了一张图来描述这几个概念之间的关系,主要是描述包含关系,个人理解而已:
在这里插入图片描述
设计模式(Design pattern:是一套被反复使用、多数人知道的、经过分类编目的、代码设计经验的总结。从定义上看,它涉及到了代码级别,侧重于解决实际的现实的问题。比如我们应该如何为不同的商品设计折扣的方式,采用策略模式呗。

框架(Framework):是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。从定义看,它涉及到了一堆构件,以及这些构件之间的依赖关系、责任分配和流程控制等,说白了就是一堆类而已。这些类以及之间的关系构成了框架。比如想要让用户通过Servlet来访问页面,怎么办?用Struts呗。

架构模式(架构风格):一个架构模式描述软件系统里的基本的结构组织或纲要。架构模式提供一些呈先定义好的子系统,指定它们的责任,并给出把它们组织在一起的法则和指南。从定义上来看,它是在指导我们如何组织代码,是一种具有指导意义的思想,比如要解决系统的数据与显示分离的问题,那就使用MVC模式呗。

软件架构(software architecture):是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。 软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。比如,我们要开发一个在线测评系统,使用什么架构呢?轻量级的SSH还是重量级的EJB?自己决定吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值