SpringMVC
1.什么是MVC?
M:model:模型,是指JavaBean,作用是处理数据。 通常模型对象负责在数据库中存取数据。
JavaBean:1.实体类Bean:用来存储业务数据。2.业务处理Bean:处理业务逻辑,数据访问。
V:view,视图模型,是指工程中的html或者jsp页面,主要功能是和用户负责交互,展示数据
C:controller,控制器,工程中的servlet,接受请求,响应浏览器。
MVC的工作流程:
用户通过view层发送请求到服务器,请求会被controller接受,controller会调用相应的model层,进行处理请求,controller会根据请求处理的结果找到相应的view视图,渲染数据之后最终响应给浏览器。
2.什么是SpringMVC?
1.Spring MVC是一个Web框架;
2.Spring MVC是基于Servlet API构建的。
什么是SpringMVC?
SpringMVC是Spring的后续产品,是Spring的一个子项目。
SpringMVC是Spring为表述层开发提供一整套完整的解决方案。
三层架构是指:表述层(前台页面和后台servlet),业务逻辑层,数据访问层。
3.MVC和Spring MVC的关系
MVC是一种思想,Spring MVC是对MVC思想的具体实现。
Spring MVC是一个实现了MVC模式,继承了Servlet API的Web框架,Web框架,用户在浏览器中输入url之后,Spring MVC项目就可以感知到用户的请求。
4.Spring MVC的功能?
Spring MVC的功能:
1.连接的功能:将用户(浏览器)和Java程序连接起来,也就是访问一个地址能够调用我们的Spring程序。
2.获取参数的功能:用户访问的时候会带一些参数,在程序中要想办法获取到参数。
3.输出数据的功能:执行了业务逻辑之后,要把程序执行的结果返回给用户。
5.SpringMVC的特点:
1.Spring家族原生产品,与IOC容器等基础设施无缝对接;
2.基于原生的servlet,通过强大的前端控制器DispatcherServlet,对响应和请求统一处理。
3.表述层各细分领域需要解决的问题全方位覆盖,提供全面解决方案。
4.代码清晰简洁,大幅度提升开发效率。
5.内部组件化程度高,可插拔式组件即插即用,想要什么功能配置相应组件即可。
6.性能卓著,尤其适合现代大型,超大型互联网项目要求。
6.启动一个项目
@RequestMapping的作用是注册一个url路由,通过这个路由,前端请求就可以实现和后端程序交互了。@RequestMapping这个注解既可以修饰方法又可以修饰类。默认情况下使用@RequestMapping会返回一个html页面。
7.Spring Boot热加载配置:
1.在Spring Boot项目中引入dev-tools框架。
2.在idea的setting中开启项目自动编译
3.开启热部署
双击shift,搜索registry
4.一定要按debug按钮来启动项目
8.@RequestMapping是post请求还是get请求
1.当没有加任何附加的条件时,此时既符合post请求也符合get请求。
2.当给@RequestMapping加method=RequestMethod.GET,此时请求只符合get请求。
9.路由注解扩展
a.@GetMapping,@GetMapping和@RequestMapping中设置method=RequestMethod.GET是一样的。
b.@PostMapping:只适合post请求
实现用户请求和程序连接
1.@RequestMapping:支持任意一种请求类型(get/post);
2.@GetMapping:只支持get方式的请求;
3.@PostMapping:支持post方式的请求。
但是,@RequestMapping既可以修饰类又可以修饰方法。
@GetMapping和@PostMapping只能修饰方法。
重命名前端key值(@RequestParam)
@RequestParam既可以重命名请求参数,又可以保证此参数为必传参数。
如果不传参的话,就会报错:
如果@RequestParam不设置required的话,默认required是true,在传参的时候,这个参数就设定为必传参数,如果在get请求的时候没有传参过来,就会报错。想要传参不是必传参数,就得设置required的参数了。
此时:不传参数的时候,就不会报错。
10.获取Json格式对象
想要获取前端传过来Json格式的对象,后端想要接收Json格式的对象,要加一个注解@RequestBody,加上这个注解之后,就可以获取到Json格式的对象。
11.获取URL中参数@PathVariable
想要获取URL中的参数,需要使用注解@PathVariable
>
12.上传文件@RequestPart
1.将上传文件的路径配置到 配置文件当中。
配置文件会有开发环境的配置文件、生产环境的配置文件、主配置文件。
1.设置配置文件
2.设置开发环境的配置文件,注意文件名的格式
3.设置生产环境的配置文件,注意文件名的格式
4.保存文件
>5.测试
6.结果展示:
13.获取Cookie/Session/header
1.获取Cookie
结果展示:
2.更简单的获取Cookie(@CookieValue)
1.更简单的获取Cookie—@CookieValue
2.
3.
3.简介获取Header----@RequestHeader
4.Session存储和获取
1.存Session
2.取Session
5.更简单的获取Session—@SessionAttribute(value=“”,required=false)
14.获取用户的请求
获取用户的请求:
1.获取单个参数(几个参数):在方法中写相应的参数就可以实现;
2.获取对象:在方法中直接写对象就可以实现;
3.获取JSON对象:@RequestBody:加到方法中的参数前面
4.获取文件:@RequestPart
5.获取用户Cook/Session/Header
@CookieVaule/@SessionAttribute/@RequestHeader
15.返回结果给前端
1.返回text/html;
2.返回Json格式的数据
16.请求转发或者请求重定向
forward VS redirect
return不但可以返回一个视图,还可以实现跳转,跳转方式有两种:
forward:请求转发:
redirect:请求重定向。
1.请求转发forward:服务器帮客户进行转发并将结果响应给客户端,URL地址是不变的。
2.请求重定向redirect:服务器将请求重新定义到要访问的地址上,URL地址是会发生改变。
forward:请求转发
这里要返回一个html页面,要用@Controller,而不用@RestController,@Controller类中的方法可以直接通过返回String跳转到jsp、html等模版页面。@RestController类中的所有方法只能返回String、Object、Json等实体对象,不能跳转到模版页面。
redirect:请求重定向
请求转发forward VS 请求重定向 redirect
请求转发和请求重定向的区别
1.请求转发URL地址不变,因为是服务器端进行转发和响应的;请求重定向URL地址会发生改变,因为服务器端直接将请求重定向到具体的地址上。
2.使用请求转发,外部资源有可能会丢失,访问不到,而请求重定向是直接重定向到URL地址上,所以,请求重定向和直接访问访问目标地址的效果是一样的,所以不会出现外部资源丢失的情况。