SpringMVC概念:
他是一个轻量级的开源框架,应用于表现层,基于MVC的设计模式.
SpringMVC的特点:
1.他是单例的可以设置成多例.
2.他的线程是安全的
3.他是基于方法级别的拦截
4.接受请求参数的方式是参数绑定
5.携带参数到页面是通过request域对象.
SpringMVC流程(重点)
1.用户向服务器发送一个请求,被SpringMVC的前端控制器DispatchServlet 捕获.
2.DispatcherServlet接收到请求后调用HandlerMapping处理器映射器.
3.处理器映射器找到具体的处理器(xml配置或者注解,RequesrtMapper),生成处理器对象及处理器拦截器一并返回给DispatcherServlet
4.DispatcherServlet调用HandlerAdapter处理器适配器
5.HandlerAdapter经过适配器调用具体的处理器(Controller)
6.Controller执行完成后返回ModelAndView
7.HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet
8.DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9.ViewReslover解析后返回具体的View
10.DispatcherServlet根据View进行渲染视图
11.DispatcherServlet将渲染完的视图界面最后响应给用户.
SpringMVC中的几个组件说明
DispatcherServlet:前端控制器,控制整个流程,他是SpringMVC的入口
HandlerMapper:处理器映射器
HandlerAdapter:处理器适配器
ViewResolver:视图解析器,可以解析JSP,freemarker,pdf等
SpringMVC的三大件:(面试可能会问)
HandlerMapper\HandlerAdapter\ViewResolver
MVC设计模式概念
M-Model(模型,完成业务逻辑:主要有JavaBean构成,service+dao+entity)
V-View(视图层,主要是做页面的展示,jsp,html...)
C-Controller(控制器,主要是接受请求之后调用模型层(M)根据结果返回页面)
SpringMVC常用注解
1.@Controller:标记在类上,他会表明这个类是一个SpringMVC Controller对象.处理器将会扫描该注解的类的方法,并检测该方法是否使用了@RequestMapping注解.@Controller只是定义类控制器类,真正处理请求的注解是@RequestMapping.
大多数框架使用的时候都是整合因此在一个类上标记@Controller还不能真正意义上说他是SpringMVC的控制器,这个时候Spring不认识这个注解,需要把控制器类交给Spring来管理,一下又两种方式:
1.直接写这个类的全路径
<bean class="com.xxx.xxx.当前类"/>
2. 路径写到当前Controller注解类的上一层
<context:component-scan base-package = "com.xxx"/>注意当前配置@Controller这个类就不要写上去了
Controller不会依赖HttpServletRequest和HttpServletResponse等HttpServlet对象,他是可以直接通过Controller的方法参数获取到的.小Demo
@Controller
public class SaveController() {
@RequestMapping("/save")
public String save() {
System.out.println("保存save");
return "success";
}
}
2.@RequestMapping
RequestMapping是用来处理请求url的注解
RequestMapping中的六个属性:
2.1--value:请求的实际地址
2.2--method:请求的类型.GET,POST,PUT,DELETE等
@RequestMapping(value="",method="RequestMethod.GET")
2.3--consumes:指定请求的提交内容的类型(Content-Type),例如text/html
2.4--produces:指定返回的内容类型
2.5--params:指定request中必须包含某些参数值,才让该方法进行处理
2.6--headers: 指定request中必须包含某些指定的header值,才让该方法处理请求
3.@ResponseBody
该注解用于将Controller的方法返回对象通过HtpMessageConverter转换成指定个时候写到Response对象的body数据中,
使用场景:当返回的数据不是html标签,而是其他的数据格式比如json,xml等使用.
4.@PathVariable
用于将请求url中的模版变量映射到功能处理方法的参数上,取出url模版中的变量作为参数
5.@RequestParam
用于将请求参数区数据映射到功能处理方法的参数上.
6.@CookieValue
参数: value 参数名
required:是否必须
defaultValue:默认值
7.@Resource和@Autowired
他们都是做bean注入时候使用,@Resource不是Spring的注解他的宝石javax.annotation.Resource需要导包,但是Spring支持该注解的注入
共同点:两者都可以卸载字段和setter方法上,如果都写在字段上就不需要在写setter方法
不同点:
@Autowired是Spring提供的注解需要导报,按照byType注入,默认情况下他要求依赖对象必须存在,如果允许为null值,设置他的required属性为false.
@Resource默认按照byName自动注入,他有两个重要的属性,name和type,Spring将该注解的name属性解析为bean的名字,type属性解析为bean的类型,如果想要使用name属性,需要使用byName的自动注入,使用type属性需要使用byType自动注入策略.如果什么属性都不制定,她会通过反射使用byName自动注入策略.
还有其他注解,在这就不一一举例,本人比较懒散.希望文章对你有所帮助.水平有限,不能深入的研究,只能把表象的一些知识和本人的理解和大家分享,如有错误请及时指正,本人感激不尽.
- 阿里P7浅谈SpringMVC
一.前言 既然是浅谈 SpringMVC,那么我们就先从基础说起,本章节主要讲解以下内容: 1.三层结构介绍 2.MVC 设计模式介绍 3.SpringMVC 介绍 4.入门程序的实现 注:介绍方面的 ...
- 浅谈对Spring Framework的认识
Spring Framework,作为一个应用框架,官方的介绍如下: The Spring Framework provides a comprehensive programming and con ...
- 【架构】浅谈web网站架构演变过程
浅谈web网站架构演变过程 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管 ...
- 浅谈Spring MVC知识
关于MVC框架,我相信大家都不陌生,都会说也就是模型-视图-控制器这三层的框架结构,如果你参加面试的时候考官会问:“MVC框架是什么?你说一说.”其实我们都知道这个问题还需要问的,只要你是一个开发人员 ...
- 浅谈 Fragment 生命周期
版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...
- 浅谈 LayoutInflater
浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...
- 浅谈Java的throw与throws
转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...
- 浅谈SQL注入风险 - 一个Login拿下Server
前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...
- 浅谈WebService的版本兼容性设计
在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...
随机推荐
- Sql的基础知识(一)
一.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份 sql server --- ...
- 微信小程序学习笔记
一.文件结构解析 pages文件夹: 书写各个页面代码以及组件.内部js文件书写js ; wxml文件为HTML ; wxss文件为css样式 : json文件为配置当前页面的默认项,如titl ...
- windows下如何创建没有名字的.htaccess文件
http://www.mdaima.com/jingyan/35.html WINDOWS下建立空名的.htaccess文件 ? 大家都知道,在windows环境下是不能直接建立没有名字的文件的,那我 ...
- Typescript学习笔记
什么是 TypeScript TypeScript 是 JavaScript 的类型的超集,它可以编译成纯 JavaScript. 安装 TypeScript 命令行工具安装: npm install ...
- PHP网站常见安全漏洞,及相应防范措施总结
目前,基于PHP的网站开发已经成为目前网站开发的主流,本文笔者重点从PHP网站攻击与安全防范方面进行探究,旨在减少网站漏洞,希望对大家有所帮助! 一.常见PHP网站安全漏洞 对于PHP的漏洞,目前常见 ...
- LAMP LNMP 和 LNMPA
LAMP指的是:Linux+Apache+MySQL+Perl/PHP/Python LAMP是一个缩写,它指一组通常一起使用来运行动态网站或者服务器的自由软件: Linux,操作系统: Apach ...
- 数据库 MySQL进阶之索引
数据库的索引非常重要,基本面试数据库的问题都在索引上,所以这里小编整理出来,一方面为了自己复习,一方面也方便大家. 一,索引前传 在了解数据库索引之前,首先有必要了解一下数据库索引的数据结构基础,那么 ...
- plist涉及到沙盒的一个问题
http://blog.csdn.net/wowxavi1/article/details/8557271
- sqlite入门基础(一):sqlite3_open,sqlite3_exec,slite3_close
打开数据库链接sqlite3_open用法 原型: int sqlite3_open( const char *filename, /* Database filename (UTF-8) */ sq ...
- 武侠--生活--java
一.名词解释 1.向上转型 大白话:村支书通知你爸去大队领过年发的面粉,结果你爸不在家,你装成你爸去了,村支书一看,行,你具有你爸的所有功能,就给了你. 官方解释:子类引用的对象转换为父类类型称为向上 ...