SpringMVC设计模式243573295

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

Model(模型)表示应用程序核心(比如数据库记录列表)。是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。View(视图)显示数据(数据库记录)。是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。Controller(控制器)处理输入(写入数据库记录)。是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据

MVC从逻辑上把应用分为模型组件,视图组件和控制器组件。其中控制器组件又可以细分为:前端控制器组件和后端控制器组件。

MVC的基本工作流程:

首先是客户端(通常是浏览器)发出一个请求。第一个接受这个请求的组件一般是一个前端控制器。它将不同的请求交给不同的后端控制器来处理,而在后端控制器里面又可以调用相应的模型对象来处理具体的业务逻辑,最后再返回一个特定的视图响应给客户端。

第一个接受这个请求的前端控制器叫DispatcherServlet

后端控制器叫Controller

负责处理请求URL和后端控制器映射的叫HandMapping(它有多种类型,比较灵活,也是在一个xml文件上进行配置)

负责业务逻辑处理的模型对象一般也是我们平常写的DAO/DTO组件(只是它最后的返回更灵活,Controller返回一个ModelAndView对象给DispatcherServlet,ModelAndView可以携带一个视图对象,也可以携带一个视图对象的逻辑名。如果携带的是一个视图对象的逻辑名,那DispatcherServlet需要一个ViewResolver来查找用于渲染回应的视图对象。最后,DispatcherServlet将请求分派给ModelAndView对象指定的视图对象。视图对象负责渲染返回给客户的回应。)

跑一个最简单的例子,让大家对构建SpringMVC的基本步骤有个直观的认识

(1)建立动态web工程,导入spring的jar包。(2)配置DispatcherServlet

DispatcherServlet是SpringMVC的核心,将下面Servlet的注册信息登记在web.xml中

testorg.springframework.web.servlet.DispatcherServlet1test*.do

(3)编写Controller,做核心配置文件,并配置url和Controller的映射

上面可能有人奇怪,为什么不用id属性,而设置name属性。这里是因为URL中含有XMLid属性非法字符——特别是斜杠(/);

(4)配置一个视图解析器将控制器与JSP结合起来。

将解析器的配置片段加到上面的test-servlet.xml中

InternalResourceViewResolver在ModelAndView返回的视图名前加上prefix属性配置的前缀,再在最后加上suffix属性配置的后缀。如HelloController返回的ModelAndView中视图名为welcome,所以InternalResourceViewResolver将在/WEB-INF/jsp/welcome.jsp处查找视图。

(5)编写呈现给用户的jsp文件。

/WEB-INF/jsp/welcome.jsp

mvc中的映射关系HandlerMapping

springMVC里有个映射处理器(HandlerMapping)的概念。它实际上是一个处理器映射Bean,用来将一个控制器指定到一个URL上。Spring提供了三种有用的HandlerMapping的实现:

BeanNameUrlHandlerMapping根据控制器的名字将控制器映射到URLSimpleUrlHandlerMapping用上下文配置文件中定义的属性集合将控制器映射到URLCommonsPathMapHandlerMapping使用控制器代码中的元数据将控制器映射到URL

mvc中的试图解析器ViewResolver

springMVC里还有个视图解析器(ViewResolver)的概念。它决定了ModelAndView对象的逻辑视图名如何解析成一个用于将结果渲染给用户的视图Bean..Spring有四种ViewResolver实现:

InternalResourceViewResolver将逻辑视图名解析成一个用模板文件(如JSP和Velocity模板)渲染的视图对象BeanNameViewResolver将逻辑视图名解析成一个DispatcherServlet应用上下文中的视图BeanResourceBundleViewResolver将逻辑视图名解析成一个ResourceBundler中的视图对象XmlViewResolver从一个XML文件中解析视图Bean,这个文件是从DispatcherServlet应用上下文中分离出来的。

THE END
1.业务员如何跑市场8篇(全文)业务员如何跑市场,这是每一位业务员都会冒出来的问题,说它简单,业务员跑市场的程序很轻松,说他难,业务员把这个市场跑好了,还真不容易。那么业务员到底该怎么来跑市场呢,谈一下个人的看法。 业务员如何跑市场,关键是如何跑,业务员跟市场都客观存在,怎么能让业务员占据市场,这就需要功夫了。 https://www.99xueshu.com/w/filek6lzhrn3.html
2.临洮县人民政府办公室关于印发《临洮县投资审批改革工作实施方案(三)实行线下业务基层办理。各乡镇要在便民服务大厅设立报名点,方便群众就近报名。鉴定考试考核地点设立在乡镇村,方便群众考试,最大程度便民利民,尽可能实现让群众“最多跑一次”。 (四)着力解决“办证难”问题。县人社局在考试结束10日内将考试合格人员花名册上报市职业技能鉴定指导中心,等市职业技能鉴定指导中心审核http://www.lintao.gov.cn/art/2018/12/10/art_6945_661866.html
3.新手业务员如何跑工程?(细读有收获)要想成功的签下一个项目,最简单而抽象的过程就是技术交流――商务交流――签单,具体一点说,就是将合适的应对策略正确的运用到每一个客户角色上。那我们需要注意到哪些角色呢?最重要的就是: 项目总决策人(项目行政负责人)、技术负责人、普通技术人员。 http://www.360doc.com/content/16/0316/00/31692446_542648200.shtml
4.测试面试题一个输入框要求输入1020个字符,边界值的测试用例答:软件测试分为4个阶段,单元测试、集成测试、系统测试、验收测试 3、测试用例设计方法有哪些? 答:等价类划分法、边界值分析法、错误推断法、因果图方法、正交表分析法、场景分析法 4、测试用例设计包含哪些要素? 答:用例所属项目、用例所属模块、用例类型、适应阶段、用例标题、优先级、前置条件、用例步骤、预期结https://blog.csdn.net/weixin_45014379/article/details/123817412
5.数据仓库的体系结构数据仓库架构首先分层可以实现用空间换时间,通过大量的预处理来提升应用系统的用户体验,因此数据仓库回存在大量冗余的数据;不分层的话,如果源业务系统的业务规则发生变化,会影响整个清理过程,增加工作量。 其次通过数据分层管理可以简化数据清晰的过程,因为把原来一步的工作分到多个步骤去完成,相当于把一个复杂的工作拆分成多个简单的https://blog.51cto.com/u_16213562/8258041
6.大厂都在用的分布式事务方案,Seata+RocketMQ带你打破10万QPS瓶颈在微服务架构中,完成某一个业务功能可能需要横跨多个服务,操作多个数据库。这就涉及到到了分布式事务,需要操作的资源位于多个资源服务器上,而应用需要保证对于多个资源服务器的数据操作,要么全部成功,要么全部失败。 本质上来说,分布式事务就是为了保证不同资源服务器的数据一致性。 https://developer.aliyun.com/article/1644525
7.案例拆解海底捞用户运营体系的拆解运营汪成长日记也因此在我看来,一个合格的用户运营是没有办法脱离市场的,懂业务才能支持业务。 简单来说,用户运营要做的就是让非会员成为会员,让免费会员成为付费会员,让低贡献值会员成为高贡献值会员,让高贡献值会员有更长的生命周期。 2、万能的AARRR模型 而所有的动作步骤都可以从AARRR模型中拆解出来: https://www.shangyexinzhi.com/article/6046568.html
8.www.komacs.com/moken16150.html除了争冠梦破灭,C罗在比赛中还遭到另外一个打击--球迷冲着他喊梅西。网络上,有一段视频被放出:看台上多位吉达联合主场的球迷,朝着C罗的方向,一起大喊“梅西、梅西”。 听到这样的挑衅,39岁的C罗已经见怪不怪了,他无奈地连续做出摊手的动作,表达不解和不满。不过,C罗并没有发脾气。随后,C罗苦笑一声,并竖起http://www.komacs.com/moken16150.html
9.www.bjvip3000.com/aplpage86613.html三,3D强奸海贼王人物模拟器,好舒服?快?别拔出来 四,老师淫穴流水,国产在线小电影瑟瑟 五,日本疫情,又大又黄又不打马赛克的视频在线观看(户外) 六,一亲二摸三叉四桶视频,日韩AV天堂不卡 七,陈芳芳美丽阴道第一次开苞 【联系我们】 客服热线:133-2881-646 https://www.bjvip3000.com/aplpage86613.html
10.目标管理以下三个步骤可以帮你清晰自己的愿景: (1)想象实现愿景后的情景(假如你得到了深深渴望获得的成果,那么——) ◆这到底是什么样的情景,你怎样来形容它? ◆你的感觉如何? ◆这种感觉是不是你真正所想要的? (2)形容个人愿景(想象你正在达成你一生最热切渴望达成的愿望,这些愿望会像什么样子?) https://www.360doc.cn/mip/241729980.html
11.使用iftop对网络流量进行监控最右列又分为三个小列,这些实时参数分别表示外部IP连接到本机2s 10s和40s的平均流量值。另外这个部分还有一个流量图形条(白色横条),流量图形条是对流量大小的动态展示,以第一部分中的流量刻度尺为基准,通过这个流量图形条可以很方便的看出哪个IP的流量最大,从而迅速定位网络中可能出现的流量问题。https://www.jianshu.com/p/e2fd4a8f5344
12.方便!手机一duo或者窗口一约,华西医院实现一次集中预约多个检查比如乳腺发现个包包,为了搞清楚到底是囊肿还是结节,医生可能会开乳腺彩超、乳腺钼靶X线这两种检查,缴完费后就需要分别跑到门诊4楼的超声医学科和1楼的放射科去预约,如果不幸B超约到后天,放射预约到下周一,就还要跑两趟医院。 “跑两趟算啥子哟,我最凶的一次跑了四趟,因为需要做四种检查,分别预约到不同的时间,还https://www.wchscu.cn/public/department/nephrology/dynamics/75997.html