当前位置: 首页 > 编程日记 > 正文

Spring MVC 相关资料整理

来源于:http://www.cnblogs.com/ylhssn/p/4062757.html

1、概述

Spring MVC是一种基于Java实现MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行解耦,基于请求-响应模型帮助我们简化日常web系统的开发。

Spring MVC框架就是一种MVC框架。其前端控制器是DispatcherServlet主要用于控制流程;应用控制器为Handler Mapping-处理器映射器进行处理器管理和View Resolver-视图解析器进行视图的解析;页面控制器/动作跳转处理器为Controller接口;支持本地化解析、文件上传等;提供了十分灵活的数据校验、格式化和数据绑定机制;采用约定优于配置的契约式编程方式。

Spring MVC框架围绕DispatcherServlet这个核心展开,DispatcherServlet的作用是截获请求并组织一系列组件共同完成请求的处理工作。

2、Spring MVC的特点

l  容易设计清爽干净的web层。

l  与Spring框架集成(IOC容器、AOP等)。

l  提供约定优于配置的契约式编程支持。

l  更加快捷、简单的单元测试。

l  灵活的URL到控制器的映射。

l  支持Rest风格。

l  ...........................

3、Spring MVC体系结构

Spring MVC框架也是一个基于驱动的MVC框架,通过实现Model-View-Controller模式很好的将数据、业务、展现进行分离。Spring Web MVC的设计是围绕前端控制器DispatcherServlet来展开的,DispatcherSerlvet负责将请求根据映射规则分发给相应控制器 (Controller),根据可配置的Handler mappings处理请求并转到相应的视图。Spring MVC的整体处理流程如下:

图3-1 Spring MVC处理流程

由上图可知,Spring MVC大致的执行流程如下:

1、首先浏览器发送请求给前端控制器DispatcherServlet,DispatcherSerlvet根据请求信息,基于一定的原则选择合适的控制器进行处理并把 请求委托给它。

2、页面控制器接收到请求之后进行功能处理,首先需要收集、绑定请求参数到一个对象(命令对象),并进行验证,然后将该对象委托给业务对象进行处理(service层);业务对象处理之后控制器将返回一个ModelAndView(模型数据和逻辑视图名);

3、DispatcherServlet根据返回的逻辑视图名,选择合适的视图进行渲染(界面展示、资源加载),并把模型数据传入以便视图渲染。

4、前端控制器将响应返回个客户端浏览器。

4、Spring MVC版本的helloworld

1)准备jar包

2)文件结构

3)web.xml

在web.xml文件中配置DispatcherServlet,在web.xml文件中添加如下片段:

4)Spring配置文件 hello-servlet.xml

在这个文件中可以定义各种各样的Spring MVC需要使用的Bean。

5)控制器类HelloController

首先通过@Controller注解标示这个类是一个控制器,接下来通过@RequestMapping注解为制定方法sayHello处理哪些请求,在这个例子中,sayHello方法仅仅处理GET类型的/hello请求。

sayHello方法接收一个org.springframework.ui.Model类型的参数model,SpringMVC会自动将请求参数封装进model中,我们可以简单的把model理解为一个Map。我们在方法中从model中取出参数person的值并且打印出来,接下来往 model中添加一个属性msg,值为"Hello,World!",然后返回视图名称hello。

6)在Spring MVC配置文件中配置一个视图解析器

添加了mvc名称空间,接下来启用了spring的自动扫描,并且设置了默认的注解映射支持。

这里需要重点解释的是配置文件中的那个bean。它的类型是是Spring MVC中最常用的一种视图解析器,当然还有很多其他的类型。

其中prefix属性是指视图前缀,suffix是视图后缀,这里配置的是.jsp,我们在控制器的方法 sayHello中返回的是hello,再结合这里的配置,对应的完整的视图是:/WEB-INF/jsp/hello.jsp。

7)hello.jsp

8)演示

5、SSH:Spring MVC+Spring+hibernate

1)准备jar包

此处略

2)文件结构

3)web.xml

配置字符集略

4)spring-bean.xml


5)spring-common.xml

6)后台实现

Dao、entity、manager包下的类实现略。

UserController.java代码实现如下:

7)index.jsp

8)通过注解实现实体类和数据库表的绑定

  1. User Bean

2、spring-common.xml


6、Spring MVC 配置详解

以上4个方法示例,是一个Controller里含有不同的请求url,也可以采用一个url访问,通过url参数来区分访问不同的方法

其实RequestMapping在Class上,可看做是父Request请求url,而RequestMapping在方法上的可看做是子Request请求url,父子请求url最终会拼起来与页面请求url进行匹配,因此RequestMapping也可以这么写:

在SpringMVC中常用的注解还有@PathVariable,@RequestParam,@PathVariable标记在方法的参数上,利用它标记的参数可以利用请求路径传值,看下面一个例子

7、AJAX+JSON

a) 页面显示

b) 响应事件

c) 效果演示

d) 后台实现

e)         所需jar包

相关文章:

Wireless-N Configuration

Wireless-N Configuration/Zh CnContents [hide]1 关于Wireless N的一般信息2 基本设置2.1 20 MHz vs 40 MHz2.1.1 2.4GHz频段的描述2.1.2 2.4GHz频段表2.2 无线安全设置2.3 高级设置3 Problems and Resolution3.1 Actual Speeds3.2 Testing3.3 Device Drivers4 Device Specifi…

为.Net程序集添加资源

作者:宋华 本文选自:赛迪网 2002年12月06日 在.Net结构中,程序集Assembly(也称着程序集或托管Dll)是自我描述的安装单元,它可以只包括一个PE(可移植可执行)格式的Dll或exe文件,也可以由多…

这5个 AI 用例,转变了传统商务沟通

作者|Lanre Onibalusi译者 |天道酬勤,责编 | 晋兆雨封图 | CSDN 付费下载自视觉中国很少有人会想到这样一种情景:世界上几乎有一半的国家处于封锁状态(可能长达数周或几个月),并且大多数人的工作能力也受到…

cocos2dx 3.x(动态改变精灵的背景图片)

//更换精灵CCSprite的图片有两种方式。 //直接通过图片更换 //使用setTexture(CCTexture2D*)函数,可以重新设置精灵类的纹理图片。 // auto bg Sprite::create(); Texture2D* texture Director::getInstance()->getTextureCache()->addImage("bg2.png&…

如何在.NET中创建服务型组件

作者:张劲松 本文选自:赛迪网 2002年12月03日 对于在WINDOWS上作过一些开发的程序员来说,COM+应该是不会感到陌生的吧。COM+代表了Microsoft在COM技术平台上的最高水平,也是Microsoft藉以和J2EE抗衡的…

flex viewstack的简单应用

1 Flex API里面介绍viewstack: MX ViewStack 导航器容器由一组彼此上下堆叠的子容器组成,其中一次只可以显示一个子容器。选择另一个子容器后,它将显示在原来子容器的位置处,所以看起来好像此子容器替换了原来的子容器。…

在线等:“实习拿到两个不太好的offer,去腾讯还是去阿里?”

“你永远都不知道明天和‘公司的意外’哪个先来。”疫情期间,这是我们最战战兢兢的心情。但是显然,有些人体会不了。这份行业数据,让笔者“柠檬”了。1疫情下,有的公司宣布破产有的公司增长413%疫情期间,人工智能的价值…

如何成功地在亚洲植入敏捷和DevOps

\关键要点\\首先要植入西方文化的要素。\\t使用价值流映射有助于打破文化障碍。\\t让上层管理者参与进来。\\t黑客节(Hackfest)将有助于减少前置期时间。\\t理解文化差异的影响。\\\我读过的一篇文章说Scrum并不适合于亚洲。作者所说的非常正确&#xff…

浅析.Net下的AppDomain编程

作者:宋华 发文时间:2002 我们知道,进程是操作系统用于隔离众多正在运行的应用程序的机制。在.Net之前,每一个应用程序被加载到单独的进程中,并为该进程指定私有的虚拟内存。进程不能直接访问物理内存&…

AI 医生正式上岗了?AI 医疗结合迎爆发点!

作者 | 硬核云顶宫责编 | 晋兆雨封图 | CSDN 付费下载自视觉中国这些年,人工智能应用于医学界是非常热的话题。在医学三大杂志——新英格兰医学杂志、柳叶刀、JAMA上,AI与医疗相结合的论文,占比越来越高。其中最明显的趋势是将医生从繁重的诊…

Android之解析Android Map地图返回的Json数据

先上一下需要解析的Json数据:{"results" : [{"address_components" : [{"long_name" : "荔湾区","short_name" : "荔湾区","types" : [ "sublocality", "political" ]}…

9成P2P平台面临出局,千亿资本何去何从?

【阅读原文】作者:楠沨据研究院数据中心统计,截至2016年10月底,我国 P2P贷款余额已经攀升至7,470亿元左右,环比增长6.0%。进入10月份百强榜的平台,其贷款余额总计3,275亿元,占到整个行业的44%;榜…

关于Transformer,那些的你不知道的事

作者 | 小莫来源 | 阿泽的学习笔记(ID: aze_learning)引言本博客主要是本人在学习 Transformer 时的「所遇、所思、所解」,通过以 「十六连弹」 的方式帮助大家更好的理解该问题。十六连弹为什么要有 Transformer?Transformer 作用是什么&am…

用ASP.NET上传大文件

作者:思归 微软MVP http://blog.joycode.com/saucer/我们在上传大文件时都遇到过这样或那样的问题。设置很大的maxRequestLength值并不能完全解决问题,因为ASP.NET会block直到把整个文件载入内存后,再加以处理。实际上,如果…

中国最齐全的主要电子商务网站(B2C)

中国最齐全的主要电子商务网站(B2C)------[连载之电子商务网站架构]访问量超过100万的电子商务网站技术架构版本:V1出处:http://jimmyli.blog.51cto.com/ 我站在巨人肩膀上Jimmy Li作者:Jimmy Li关键词:中国 电子商务 网站 B2C连接…

怎么安装MYSQL5.0的JDBC驱动

1、下载mysql for jdbc driver. http://dev.mysql.com/downloads/connector/j/3.1.htmlMySQL Connector/J is distributed as a .zip or .tar.gz archive containing the sources and class files as well as a class-file only "binary" .jar archive named "…

ASP.NET中的事务处理和异常处理

刘彦青编译 来自:yesky 使用SQL-Transaction类和.NET提供的异常处理机制,我们就能够以一种可靠的方式处理数据库运行中的问题和发现系统异常。这篇小文章将解释事务处理和异常处理的概念和用法。 什么是事务? 事务处理是由以一个单一的…

2020年AI产业报告:100个岗位抢1个人,计算机视觉成最大缺口

“你永远都不知道明天和‘公司的意外’哪个先来。”疫情期间,这是我们最战战兢兢的心情。但是显然,有些人体会不了。这份行业数据,让笔者“柠檬”了。1疫情下,有的公司宣布破产有的公司增长413%疫情期间,人工智能的价值…

.NET Winform也能画出类似QQ、飞信这样的窗口风格和控件效果

MPN企业宝智能升级程序界面采用.NET的Winform技术,并没有延续企业宝主程序的绘制界面技术——WPF。直接采用Winform实现类似QQ和飞信的窗口风格比较困难,WPF好在还有一个Blend设计工具,而Winform只能靠自己一个一个像素去对齐、去仔细看&…

【转】HashMap、TreeMap、Hashtable、HashSet和ConcurrentHashMap区别

转自:http://blog.csdn.net/paincupid/article/details/47746341 一、HashMap和TreeMap区别 1.HashMap是基于散列表实现的,时间复杂度平均能达到O(1)。 TreeMap基于红黑树(一种自平衡二叉查找树)实现的,时间复杂度平均…

ASP.NET实现数据图表

作者:马金虎 来自:yesky 在ASP中插入图表,常用的方法是使用MSChart控件。那么在ASP.NET是否也是这样呢?答案是不可以的。 我们知道ASP.NET是一种编译语言,当客户端第一次调用ASP.NET页面的时候,其实是经过了一种…

Struts2基础(1)_MVC

2019独角兽企业重金招聘Python工程师标准>>> Struts2是有传统的Struts1和WebWork两个经典MVC框架发展起来,无论从Struts2的设计角度或则实际项目中的易用性来开,它都是一个非常优秀的MVC框架。 MVC的理解:MVC思想将应用中各组件按…

我发现了个Python黑魔法,执行任意代码都会自动念上一段「平安经」

来源 | Python编程时光最近的"平安经"可谓是引起了不小的风波啊。作为一个正儿八经的程序员,最害怕的就是自己的代码上线出现各种各样的 BUG。为此,明哥今天分享一个 Python 的黑魔法,教你如何在你执行任意 Python 代码前&#xff…

Java第一天学习笔记整理

一、关键字 java的关键字对java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名。 常见的关键字: 用于定义数据类型的关键字 class interface byte short int lon…

ASP.NET中树形图的实现

来自:DotNET中文技术网 树形图用于显示按照树形结构进行组织的数据,其用途比较广泛,如计算机中的文件系统(Windows中的资源管理器)、企业或公司的组成结构等。我们知道在Windows下VB、PB、Delphi等工具提供了一个功能很强的树型控件TreeView…

同步你的手机联系人

从web1.0到2.0,我们进入了一个新的互联网时代移动时代.相信你的手机中,有许多联系人信息,你肯定不想把他们弄丢吧,像我之前隔一段时间就备份下,存到电脑中.现在再也不怕联系人信息丢了,只需要一个账户,同步一下,所有联系人信息都回来了.我是在Android智能手机上操作的,IOS就不清…

AI 技术发展飞快,高校 AI 教师的知识储备能满足学生旺盛的求知欲吗?

2019 年,AI 技术以惊人的速度发展;2020 年,AI 技术成熟的时机已经到来,随之而来的,是越来越旺盛的 AI 人才需求。近日,国家正式发布了一份《2020 年人工智能产业人才发展报告》显示,2020 年人工…

Windows Server 2008 R2安装子域控制器

一、实验网络拓扑图: 二、实验说明: 子域控制器安装前需要先把主域控制器安装好,然后子域控制器的DNS先指向主域控制器的IP地址 192.168.10.30,主域控制器委派DNS给子域控制器后再把子域控制器DNS指向自己的IP地址 192.168.10.31即…

使用嵌套的Repeater控件显示分级数据

作者:wincheer 来自:Asp.Net中文专业网 简介 本文描述如何使用嵌套的Repeater 控件来显示分级数据 。当然了,你也可以将这一技术应用到其他的列表绑定控件上去,比如DataGrid包含DataGrid,DataList包含DataList等等…

我还没考试,算法就说我的物理一定挂科

来源 | HyperAI超神经责编 | Carol封图 | CSDN 下载自视觉中国大学物理是理工科学生的基础必修课程,但也因为有一定的难度,令很多学生望而生畏。研究人员提出了用 AI 算法预测,哪些学生物理课有挂科风险,好让老师更好地进行教学指…