SpringMVC

SpringMVC

  1. SpringMVC简介
    1.1. mvc设计模式:MVC 设计不仅限于 Java Web 应用,还包括许多应用,比如前端、PHP、.NET 等语言。之所以那么做的 根本原因在于各个模块的解耦。
    1.2. MVC 是 Model、View 和 Controller 的缩写,分别代表 Web 应用程序中的 3 种职责。
    1.2.1. 模型:用于存储数据以及处理用户请求的业务逻辑。
    1.2.2. 视图:向控制器提交数据,显示模型中的数据。
    1.2.3. 控制器:根据视图提出的请求判断将请求和数据交给哪个模型处理,将处理后的有关结果交给哪个 视图更新显示。
    1.3. Spring MVC:
    1.3.1. Spring MVC 实现了即用的 MVC 的核心概念。它为控制器和处理程序提供了大量与此模式相关的功能。 并且当向 MVC 添加反转控制(Inversion of Control,IoC)时,它使应用程序高度解耦,提供了通过简 单的配置更改即可动态更改组件的灵活性。
    1.3.2. Spring MVC 框架是高度可配置的,包含多种视图技术,例如 JSP 、Velocity、themlefy等。Spring MVC 框架并不关心使用的视图技术,也不会强迫开发者只使用 JSP 技术,但教程中使用的视图是 JSP。
    1.3.3. 本节主要介绍 Spring MVC 框架处理用户请求的完整流程和处理中包含的 4 个接口。
    1.4. Spring MVC初学重点掌握的4个接
    1、 DispatcherServlet:Spring MVC 所有的请求都经过 DispatcherServlet 来统一分发,在 DispatcherServlet 将请求分发 给Controller之前需要借助 Spring MVC 提供的 HandlerMapping 定位到具体的 Controller。
    2、 HandlerMapping HandlerMapping:接口负责完成客户请求到 Controller 映射。
    3、 Controller Controlle:接口将处理用户请求,这和 Java Servlet 扮演的角色是一致的。一旦 Controller 处理完 用户请求,将返ModelAndView 对象给 DispatcherServlet 前端控制器,ModelAndView 中包含了 模型(Model)和视图(View)。从宏观角度看DispatcherServlet是整个 Web 应用的控制器;从 微观考虑,Controller 是单个 Http 请求处理过程中的控制器,而 ModelAndView 是 Http 请求过 程中返回的模型(Model)和视图(View)。
    4、 ViewResolver ViewResolver 接口(视图解析器)在 Web 应用中负责查找 View 对象,从而将相应结果渲染给用户。
    1.5. Spring MVC 的工作流程如下:
    1、 用户发送请求至前端控制器DispatcherServlet。
    2、 DispatcherServlet收到请求,调用HandlerMapping处理器映射器。
    3、 处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器一并返回给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响应用户。
    12、 DispatcherServlet也是整个Spring MVC的核心,它负责接收HTTP请求组织协调Spring MVC的各个组成 部分。
    二、SpringMVC环境搭建
    1、引入jar包
    1、在 web/WEB-INF 目录下新建 lib 目录,导入Spring的Jar包(建议先排除 spring-webflux5.2.9.RELEASE.jar):然后把lib目录通过右键菜单的 ”Add as Library“添加为项目的Library,
    2、创建Spring MVC的配置文件springMVC-servlet.xml
    1、在src目录下创建Spring MVC的配置文件 springMVC-servlet.xml :
    3、在web.xml中配置Spring MVC
    1、在JavaWeb 项目的web.xml中配置SpringMVC的核心
    2、注意:/ 表示的为只匹配/login和/demo,后面不带.xxx的 /* 表示匹配的为所有,包括.jsp、.js、.html等 在Spring中的Springmvc配置中url-pattern应该使用/。不然会导致jsp页面都被DispatcherServlet给转 发了,无法被解析。
    4、编写IndexController
    5、在web/WEB-INF/jsp 目录下添加login.jsp和register.jsp
    6、修改web/index.jsp
    1、注意:使用c标签,注意引入jstl的jar包
    三、Spring MVC注解
    1、@Controller:用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。
    通过Spring 配置的注解扫描,将这个bean注册到Springmvc容器中。
    2、@RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,
    表示类中的 所有响应请求的方法都是以该地址作为父路径,作用于方法上,表明该处理器的请求地址=父路径+方法 上url。
    1、 value 指定请求的实际地址,指定的地址可以是URI Template 模式
    2、 method 指定请求的method类型, GET、POST、PUT、DELETE等;
    3、 consumes 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html
    4、 produces 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返 回;
    5、 params 指定request中必须包含某些参数值,才让该方法处理!
    6、 headers 指定request中必须包含某些指定的header值,才能让该方法处理请求。
    3、Spring4.3 以后方法级别的@RequestMapping注解变体有如下几个
    1、@GetMapping 等价于:@RequestMapping(method = RequestMethod.GET)
    在 @GetMapping注解的源码中有体现
    2、@PostMapping 等价于:@RequestMapping(method = RequestMethod.POST)
    3、@PutMapping 等价于:@RequestMapping(method = RequestMethod.PUT)
    4、@DeleteMapping 等价于:@RequestMapping(method = RequestMethod.DELETE)
    4、@RequestBody
    @RequestBody用于读取Request请求的body部分数据,使用系统默认配置的 HttpMessageConverter 进行解析,然后把相应的数据绑定
    @RequestBody用于读取Request请求的body部分数据,使用系统默认配置的 HttpMessageConverter 进行解析,然后把相应的数据绑定
    5、@ResponseBody
    ResponseBody用于将Controller的方法返回的对象,通过适当的 HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
    现在主要用于json返回。
    6、@RequestParam
    @RequestParam主要用于在SpringMVC后台控制层获取参数,类似request.getParameter(“name”);
    @RequestParam注解主要有3个参数:
    value:参数名字,即入参的请求参数名字,如 value=“userName” 表示请求的参数区中的名字为
    userName的参数的值将传入;
    required:是否必须,默认是true,表示请求中一定要有相应的参数,否则将报404错误码;
    defaultValue:默认值,表示如果请求中没有同名参数时的默认值, 默认值可以是SpEL表达式,如“#{systemProperties[‘java.vm.version’]}”。
    7、@PathVariable
    @PathVariable 映射 URL 绑定的占位。带占位符的 URL 是 Spring3.0 新增的功能,主要用于RestFull风 格的URL请求。
    通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位 符可以通过@PathVariable(“xxx“) 绑定到操作方法的入参中。
    8、@ModelAttribute
    Controller的所有方法在调用前,先执行此@ModelAttribute方法,可用于注解和方法参数中。
    可以把这个@ModelAttribute特性,应用在BaseController当中,所有的Controller继承 BaseController,即可实现在调用Controller时,先执行@ModelAttribute方法。
    9、@RestController
    @RestController注解就相当于@ResponseBody + @Controller合在一起的作用。
    使用@RestController注解Controller,则Controller中的方法无法返回页面,配置的视图解析器(如:
    InternalResourceViewResolver)不起作用,返回的内容就是return 的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值