SpringMVC

SpringMVC

  • 1.什么是MVC?
  • 2.什么是SpringMVC?
  • 3.MVC和Spring MVC的关系
  • 4.Spring MVC的功能?
  • 5.SpringMVC的特点:
  • 6.启动一个项目
  • 7.Spring Boot热加载配置:
  • 8.@RequestMapping是post请求还是get请求
  • 9.路由注解扩展
  • 10.获取Json格式对象
    • 11.获取URL中参数@PathVariable
    • 12.上传文件@RequestPart
    • 13.获取Cookie/Session/header
    • 14.获取用户的请求
    • 15.返回结果给前端
    • 16.请求转发或者请求重定向

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.启动一个项目

SpringMVC_第1张图片
@RequestMapping的作用是注册一个url路由,通过这个路由,前端请求就可以实现和后端程序交互了。@RequestMapping这个注解既可以修饰方法又可以修饰类。默认情况下使用@RequestMapping会返回一个html页面。

7.Spring Boot热加载配置:

1.在Spring Boot项目中引入dev-tools框架。
SpringMVC_第2张图片
2.在idea的setting中开启项目自动编译
SpringMVC_第3张图片
SpringMVC_第4张图片
3.开启热部署
双击shift,搜索registry
SpringMVC_第5张图片
SpringMVC_第6张图片
4.一定要按debug按钮来启动项目SpringMVC_第7张图片

8.@RequestMapping是post请求还是get请求

1.当没有加任何附加的条件时,此时既符合post请求也符合get请求。
2.当给@RequestMapping加method=RequestMethod.GET,此时请求只符合get请求。
SpringMVC_第8张图片

9.路由注解扩展

a.@GetMapping,@GetMapping和@RequestMapping中设置method=RequestMethod.GET是一样的。
SpringMVC_第9张图片
b.@PostMapping:只适合post请求SpringMVC_第10张图片

实现用户请求和程序连接
1.@RequestMapping:支持任意一种请求类型(get/post);
2.@GetMapping:只支持get方式的请求;
3.@PostMapping:支持post方式的请求。
但是,@RequestMapping既可以修饰类又可以修饰方法。
@GetMapping和@PostMapping只能修饰方法。

重命名前端key值(@RequestParam)

SpringMVC_第11张图片
SpringMVC_第12张图片
@RequestParam既可以重命名请求参数,又可以保证此参数为必传参数。
如果不传参的话,就会报错:
SpringMVC_第13张图片

如果@RequestParam不设置required的话,默认required是true,在传参的时候,这个参数就设定为必传参数,如果在get请求的时候没有传参过来,就会报错。想要传参不是必传参数,就得设置required的参数了。
SpringMVC_第14张图片
此时:不传参数的时候,就不会报错。SpringMVC_第15张图片

10.获取Json格式对象

想要获取前端传过来Json格式的对象,后端想要接收Json格式的对象,要加一个注解@RequestBody,加上这个注解之后,就可以获取到Json格式的对象。
SpringMVC_第16张图片
SpringMVC_第17张图片

11.获取URL中参数@PathVariable

想要获取URL中的参数,需要使用注解@PathVariableSpringMVC_第18张图片>SpringMVC_第19张图片

12.上传文件@RequestPart

1.将上传文件的路径配置到 配置文件当中。
配置文件会有开发环境的配置文件、生产环境的配置文件、主配置文件。
1.设置配置文件SpringMVC_第20张图片
2.设置开发环境的配置文件,注意文件名的格式
SpringMVC_第21张图片
3.设置生产环境的配置文件,注意文件名的格式
SpringMVC_第22张图片

4.保存文件SpringMVC_第23张图片>5.测试
SpringMVC_第24张图片
6.结果展示:
在这里插入图片描述

13.获取Cookie/Session/header

1.获取Cookie

SpringMVC_第25张图片
结果展示:
在这里插入图片描述

2.更简单的获取Cookie(@CookieValue)

1.更简单的获取Cookie—@CookieValue
SpringMVC_第26张图片
2.
SpringMVC_第27张图片
3.
SpringMVC_第28张图片

3.简介获取Header----@RequestHeader

SpringMVC_第29张图片

4.Session存储和获取

1.存Session
SpringMVC_第30张图片
2.取Session
SpringMVC_第31张图片
SpringMVC_第32张图片

5.更简单的获取Session—@SessionAttribute(value=“”,required=false)

SpringMVC_第33张图片

14.获取用户的请求

获取用户的请求:
1.获取单个参数(几个参数):在方法中写相应的参数就可以实现;
2.获取对象:在方法中直接写对象就可以实现;
3.获取JSON对象:@RequestBody:加到方法中的参数前面
4.获取文件:@RequestPart
5.获取用户Cook/Session/Header
@CookieVaule/@SessionAttribute/@RequestHeader

15.返回结果给前端

1.返回text/html;

SpringMVC_第34张图片
SpringMVC_第35张图片

2.返回Json格式的数据

SpringMVC_第36张图片
SpringMVC_第37张图片

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等实体对象,不能跳转到模版页面。
SpringMVC_第38张图片

redirect:请求重定向

SpringMVC_第39张图片

请求转发forward VS 请求重定向 redirect

请求转发和请求重定向的区别
1.请求转发URL地址不变,因为是服务器端进行转发和响应的;请求重定向URL地址会发生改变,因为服务器端直接将请求重定向到具体的地址上。
2.使用请求转发,外部资源有可能会丢失,访问不到,而请求重定向是直接重定向到URL地址上,所以,请求重定向和直接访问访问目标地址的效果是一样的,所以不会出现外部资源丢失的情况。

你可能感兴趣的:(servlet,spring,java)