Spring MVC 学习笔记(整理)
SpringMVC学习
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)通过注解实现实体类和数据库表的绑定
- 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包

注:此笔记内容参考了网上部分文章,因距此笔记内容编写时间较长,具体出处已忘,若原作者见此文章感觉侵权,请联系我,我会把参考链接挂上。over
Spring MVC 学习笔记(整理)的更多相关文章
- Spring MVC 学习笔记一 HelloWorld
Spring MVC 学习笔记一 HelloWorld Spring MVC 的使用可以按照以下步骤进行(使用Eclipse): 加入JAR包 在web.xml中配置DispatcherServlet ...
- Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建
Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...
- Spring MVC 学习笔记11 —— 后端返回json格式数据
Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...
- Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息
</pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p>& ...
- Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息
Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. ...
- Spring MVC 学习笔记8 —— 实现简单的用户管理(4)用户登录
Spring MVC 学习笔记8 -- 实现简单的用户管理(4)用户登录 增删改查,login 1. login.jsp,写在外面,及跟WEB-INF同一级目录,如:ls Webcontent; &g ...
- Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目
Spring MVC 学习笔记2 - 利用Spring Tool Suite创建一个web 项目 Spring Tool Suite 是一个带有全套的Spring相关支持功能的Eclipse插件包. ...
- Spring MVC 学习笔记1 - First Helloworld by Eclipse【& - java web 开发Tips集锦】
Spring MVC 学习笔记1 - First Helloworld by Eclipse reference:http://www.gontu.org 1. 下载 Spring freamwork ...
- spring MVC学习笔记
为开发团队选择一款优秀的MVC框架是件难事儿,在众多可行的方案中决择需要很高的经验和水平.你的一个决定会影响团队未来的几年.要考虑方面太多: 1.简单易用,以提高开发效率.使小部分的精力在框架上,大部 ...
随机推荐
- (剑指Offer)面试题28:字符串的排列
题目: 输入一个字符串,打印出该字符串中字符的所有排列. 例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 思路: 把一个字符串看 ...
- Form实现主从块金额汇总
1.FORM使用app_calculate.running_total汇总行金额,行上有编码重复验证. 情况一:当录入多个编码重复的行并保存时,报错,清除一个重复行再保存(头行金额一致),报错&quo ...
- baseDao 使用spring3+hibernate4方式
启动异常: java.lang.ClassCastException: org.springframework.orm.hibernate4.SessionHolder cannot be cast ...
- CI reids 缓存
注意:在项目中的application/libraries 中自己定义的类最好不要以cache命名. 连接 Redis 服务器的配置信息必须保存到 application/config/redis.p ...
- HTML第九天学习笔记
今天就继续看了下浮点float属性,代码如下: <html> <head> <title>CSS float属性</title> <meta ht ...
- 汉字简体繁体转换----Javascript
最近看到有个简体--繁体字互相转换的程序,是用JS实现的,感觉很好玩,所以拿来研究研究.先看看界面如下: 汉字简体繁体转换 // 0&&parent.frames.length) { ...
- Keil AGDI Header File
#ifndef __AGDI__INCED___ #define __AGDI__INCED___ //---Revision History: --------------------------- ...
- Apache-系统-网络部分配置
参考了很多东西,但有些理解可能会有错误的地方,希望看到错误的地方可以即使纠正. 参考的内容. http://netsecurity.51cto.com/art/200608/30428.htm htt ...
- 【S4】使用empty()而不是判断size()是否为0
1.二者的作用是一样的,结果也是等价的.就是判断集合是否为空. 2.二者是等价的,为什么强调使用empty,因为empty效率更高. 3.在STL中,对于一般的集合,empty和size都是常数时间. ...
- .NET连接SAP系统专题:SAP中新建可远程调用的RFC(二)
何谓RFC,就是一个Function,可以被非SAP系统调用,比如VB,C#,Java等.如果我们在RFC中INCLUDE了相关的业务逻辑,那么我们就可以完全操控SAP中的业务数据了.就像在TTE里, ...