【SSH系列】深入浅出SpringMvc+入门Demo

Spring MVC框架是有一个MVC框架,通过实现Model-View-Controller模式来很好地将数据、业务与展现进行分离。从这样一个角度来说,Spring MVC和Struts、Struts2非常类似。Spring MVC的设计是围绕DispatcherServlet展开的,DispatcherServlet负责将请求派发到特定的handler。通过可配置的handler mappings、view resolution、locale以及theme resolution来处理请求并且转到对应的视图。这篇博文小编主要来讲解一下springmvc的相关知识,小编会从以下几个方面进行详细介绍:
a、mvc与springmvc有什么区别和联系
b、常用的mvc框架
c、mvc模式的优缺点
d、springmvc的体系结构
e、springmvc Demo
接着,小编就对以上列出的几点进行详细介绍,希望对有需要的小伙伴有帮助,还请小伙伴们多多指教。
mvc与springmvc有什么区别和联系
mvc是一种使用mvc(model+view+controller即:模型+视图+控制器)设计创建web应用程序的模式:
model(模型)表示应用程序核心,比如数据库记录列表;
view(视图)显示数据,比如数据库记录;
controller(控制器)处理输入,比如写入数据库记录;

下图是小编画的一个mvc模式处理流程如下所示:


解释一下mvc的处理流程,首先用户发出请求,给控制器controller,controller负责将用户的参数传递给业务模型model,model进行业务逻辑判断,和数据库的增删改查操作,最后,根据业务逻辑选择不同的视图view,并将结果反馈给用户,这就是mvc设计模式的处理流程,mvc分成三层,由助于管理复杂的业务程序,同时也简化了分组开发。不同的开发人员可同时开发view、控制器逻辑和业务逻辑。
说到spring mvc,小伙伴们可能会想到mvc,mvc和三层架构是什么关系呢?在小编目前的理解中,三层是三层,mvc是mvc,她们之间没有关系。三层是从整个应用程序架构的角度来分的三层,如果程序有需要,还可以再进行分层,三层是为了解决整个应用程序中各个业务操作过程中不同阶段的代码封装的问题,为了使程序员更加专注的处理某阶段的业务逻辑。比如将数据库操作代码封装到一层中,提供一些方法根据参数直接返回用户需要的相应数据,这样在处理具体的业务逻辑的时候,就不用关心数据的存储问题了。MVC是在应用程序(BS结构)的视图层划分出来的不同功能的几个模块。
mvc主要是为了解决应用程序用户界面的样式替换问题,把展示数据的 HTML 页面尽可能的和业务代码分离。MVC把纯净的界面展示逻辑(用户界面)独立到一些文件中(Views),把一些和用户交互的程序逻辑(Controller)单独放在一些文件中,在 Views 和 Controller 中传递数据使用一些专门封装数据的实体对象,这些对象,统称为Models。之所以说MVC和三层毫无关系,是因为它们二者使用范围不同:三层可以应用于任何语言、任何技术的应用程序;而MVC只是为了解决BS应用程序视图层各部分的耦合关系。它们互不冲突,可以同时存在,也可根据情况使用其中一种。

常用的mvc框架

比较常用的mvc框架有struts和springmvc:

1)struts是java web mvc框架中的霸主,经过长达几年的发展,struts已经逐渐成长为一个稳定、成熟的架构,并且占有了mvc框架中最大的市场份额,但是struts某些技术特性上已经落后于新兴的mvc框架,面对springMVC、webWork2这些设计更加的精密,扩展性更强的框架,struts的霸主地位受到挑战。
2)springmvc通过一套mvc注解,让pojo成为处理请求的控制器,无须实现任何接口,同时,springmvc还支持rest风格的url请求,注解驱动以及rest风格的springmvc是spring3.0最出彩的功能之一,此外,springmvc在数据绑定、视图解析、本地处理及静态资料处理上都有许多不俗的表现,她在框架设计,扩展性、灵活性等方面超越了struts、webWork等mvc框架,从原来的追赶者一跃成为mvc的领跑者。      

mvc模式的优缺点优点:
1)、耦合性低
2)、重用性高
3)、生命周期成本低
4)、部署快
5)、可维护性高
6)、有利于软件工程化管理
缺点:
1)、没有明确的定义
2)、不适合小型、中等规模的应用程序
3)、增加系统结构和实现的复杂性
4)、视图与控制器间的过于紧密的连接
5)、视图对模型数据的低效率访问
6)、一般高级的界面工具或构造器不支持模式

springmvc的体系结构

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。

通过WSDL生成客户端代码 - 2016-07-25 14:07:03

目录 1.WSDL2Java:Building stubs,skeletons,and data types from WSDL . 1 1.1示例 ... 1 1.2测试 ... 4 1.2.1异常:没有定义com.pan.model.User的序列化的实现 ... 5 1.3WSDL与生成的客户端代码结构分析 ... 5 1.3.1Types . 6 1.3.2Holders . 12 1.3.3PortTypes . 13 1.3.4Bindings . 13 1.3.5 Services . 14
                                               Ofbiz:数据库移植mysql并创建自己的mysql            Ofbiz原生数据库是derby,而作为开发使用,其就不能满足我们需求,ofbiz支持多种数据库,我们就可以将数据移植到mysql.            第一步:找到framework\entity\config\entityengine.xml这个文件,找到之后进行下面相关操作.          1、添加或者修改datasourc

linux的一些简单命令 - 2016-07-25 14:07:59

这里只是列出实际中使用频率较高的,可以通过 man 命令或者 命令 –help 来查看更为详细的内容 文件有关的 1:【ls命令】 ls [option] …[file]… -a all 列出所有的文件 包括隐藏文件 [eg ls -a /home] -l 列出详细的文件信息 可以简写为ll filename [eg: ls -l /home or ll /home ] -h –human-readable 将文件的大小通过字节的方式列出来 -R 递归显示出该目录所有的文件 -d 只显示本文件下面 可以通

Nginx下的rewrite规则 - 2016-07-25 14:07:08

正则表达式匹配,其中: * ~ 为区分大小写匹配 * ~* 为不区分大小写匹配 * !~和!~* 分别为区分大小写不匹配及不区分大小写不匹配 文件及目录匹配,其中: * -f 和! -f 用来判断是否存在文件* -d 和! -d 用来判断是否存在目录* -e 和! -e 用来判断是否存在文件或目录* -x和!-x 用来判断文件是否可执行 rewrite指令的最后一项参数为flag标记,flag标记有: 1. last 相当于apache里面的[L]标记,表示rewrite。 2. break 本条规则匹配

Apache Flink Client生成StreamGraph - 2016-07-25 04:07:11

概述 上文我们分析提交流程时, RemoteStreamEnvironment 类的 execute 方法的第一步就是生成 StreamGraph 。 StreamGraph 是用于表示流的拓扑结构的数据结构,它包含了生成 JobGraph 的必要信息。它的类继承关系图如下: 如果你按照 StreamGraph 的继承链向上追溯,最终会发现它实现了接口 FlinkPlan 。Flink在这里效仿的是数据库的执行SQL是产生执行计划的机制, FlinkPlan 定义在Flink的优化器相关的包中,针对流应用

zabbix wechat 报警 - 2016-07-24 22:07:29

监控在运维工作中是比不可少的一环,那伴随着监控也同时会涉及到告警机制,一般的监控到的结果是成功或者失败,如Ping不通、访问网页出错、连接不到Socket,发生时这些称之为故障,故障是最优先的告警。那针对于 zabbix 的告警可以有多种方式去做: zabbix三种常见报警介质: 短信:它的好处是不用联网手机有信号就行,但是需要有短信网关,需要花钱。 邮件:它也可以做到手机短信通知,基本现在邮箱都有这个功能(如果你使用的是移动的手机号,可以让zabbix将报警信息发送到139邮箱,再通过139绑定到手机号
J2EE进阶(十一)SSH框架整合常见问题汇总(二) 问题 8       java.lang.ClassCastException : java.lang.String cannot be cast to java.lang.Boolean      解决       数据库中userdetail表的映射文件如下,可见xb字段数据类型为boolean类型,而自己在userdetail模型类中定义的类型为String类型。为此可以得出这样的结论。模型类中的数据及类型必须与数据表映射文件中的字段信息保持一致
背景: 为了方便整体产品的发布,希望通过docker实现增量发布。大致的思路如下: is-there-a-way-to-add-only-changed-files-to-a-docker-image-as-a-new-layer-with 。本博文对这种方式进行了尝试,与此同时简单介绍如何通过Dockerfile来创建Docker镜像。 前期准备: 解决centos的网络问题 【can not find a valid baseurl for repo: base/7/x86_64】 ,使用dhclie

pcap文件的python解析实例 - 2016-07-24 19:07:52

最近一直在分析数据包。 同时也一直想学python。 凑一块儿了...于是,便开工了。座椅爆炸! 正文 首先要说的是,我知道python有很多解析pcap文件的库,这里不使用它们的原因是为了理解pcap文件的格式细节。使用tcpdump你可以很容易抓取到一系列的数据包,然而tcpdump并没有分析数据包的功能,如果想从这个抓包文件中分析出一些端倪,比如重传情况,你必须使用wireshark之类的软件,用wireshark打开tcpdump抓取的pcap文件,如果你看到了一堆堆的深红色(类似静脉血管里流出的猪

CPU和内存监测 - 2016-07-24 19:07:07

CPU和内存监测 vmstat命令的VM模式 vmstat可以监测给定时间间隔的服务器的状态值,包括CPU的使用率,内存的使用,虚拟内存的交换情况,IO读写情况。 主要从/proc/meminfo,/proc/stat和/proc/*/stat中获取数据 常用手段vmstat [采样的时间间隔秒数] [采样的次数],举例如下: [root@dtbase-master- 2 /root] #vmstat 5 10 procs -----------memory---------- ---swap-- ---