目录
SpringMVC概述
SpringMVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分。简化开发,减少出错,方便组内开发人员之间的配合
Model(模型):应⽤程序中⽤于处理应⽤程序数据逻辑的部分。通常模型对象负责在数据库中存取数据 View(视图)是应⽤程序中处理数据显示的部分。通常视图是依据模型数据创建的。 Controller(控制器)是应⽤程序中处理⽤户交互的部分。通常控制器负责从视图读取数据, 控制⽤户输⼊,并向模型发送数据。
SpringMVC主要组件
前端控制器(DispatcherServlet):接收请求、响应结果,相当于转发器,有了DispatcherServlet就减少了其他组件之间的耦合度。 处理器映射器(HandlerMapping):根据请求的URL来查找Handler 处理器适配器(HandlerAdapter):负责执行Handler 处理器(Handler):处理业务逻辑的Java类 视图解析器(ViewResolver):进行视图的解析,根据视图逻辑名将ModelAndView解析成真正的视图。 视图(View):View是一个接口,他的实现类支持不同的视图类型,如jsp,freemarker等等。
SpringMVC和MVC的关系
MVC 是⼀种思想,⽽ Spring MVC 是对 MVC 思想的具体实现。 总结来说,Spring MVC 是⼀个实现了 MVC 模式,并继承了 Servlet API 的 Web 框架。既然是 Web框架,那么当⽤户在浏览器中输⼊了 url 之后,我们的 Spring MVC 项⽬就可以感知到⽤户的请求。
两者之间的联系:
Spring MVC 是基于 MVC 架构模式的 Web 应用程序开发框架,用于构建 Java Web 应用程序。 Spring MVC 扩展了经典的 MVC 架构,提供了一些额外的功能和特性,使得开发 Web 应用程序更加简单和灵活。 在 Spring MVC 中,模型(Model)表示为 POJO(Plain Old Java Object),视图(View)通常是 JSP、Thymeleaf 或其他模板技术,而控制器(Controller)通常是一个带有 @Controller 注解的 Spring Bean。 Spring MVC 提供了一套基于注解的请求映射机制,简化了 URL 到处理器的映射配置。
导入jar
<!--JSON依赖-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.4.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.4.3</version>
</dependency>
Spring MVC常用注解
@Controller 负责注册一个bean 到spring 上下文中 @RequestMapping 注解为控制器指定可以处理哪些 URL 请求 @RequestBody 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上 ,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上 @ResponseBody 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区 @ModelAttribute 在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法 在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数 –绑定到对象中,再传入入参将方法入参对象添加到模型中 @RequestParam 在处理方法入参处使用 @RequestParam 可以把请求参 数传递给请求方法 @PathVariable 绑定 URL 占位符到入参 @ExceptionHandler 注解到方法上,出现异常时会执行该方法 @ControllerAdvice 使一个Contoller成为全局的异常处理类,类中用@ExceptionHandler方法注解的方法可以处理所有Controller发生的异常
使用注解前应扫包并开启注解
<!--自动扫描的包名,只扫描@Controller -->
<context:component-scan base-package="com.hz.controller" >
<!--开启注解-->
<mvc:annotation-driven/>
@Controller
标注一个普通的JavaBean成为可以处理请求的控制器
@RequestMapping
通过请求URL进行映射
@RequestParam
参数传递
通过实体类接收参数
传入参数名必须与实体类对应,一般用于添加,修改类中多个属性时
参数传递
ModelAndView
包含视图信息和模型数据信息
Model
以Map方式进行存储,用于向作用域中存值
Map
以Map方式进行存储,用于向作用域中存值
@ModelAttribute
@SessionAttributes
只能定义在类上,作用是将指定的Model中的键值对添加至session中
servlet方式
引入servlet-api.jar
<!--servlet-api-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
重定向与转发
public String index1(User user)
{
.....
return "redirect:/user.jsp";//重定向
return "forward:页面";//转发
}
@ResponseBody
返回JSON数据 一般用于方法上
@RestController
标注该类中所有的方法都返回JSON 用于类中。无须在写@Controller
@DateTimeFormat
用户对象属性,控制入参时日期类型转换
@RequestHeader
获取请求头中的参数
@JsonFormat
返回JSON数据时日期类型处理
Spring MVC框架特点
标签:SpringMVC,Spring,视图,Controller,MVC,注解 From: https://blog.csdn.net/TuSi_Cat/article/details/143017930清晰地角色划分
灵活的配置功能
提供了大量的控制器接口和实现类
真正做到与View层的实现无关(JSP、Velocity、Xslt等)
国际化支持
面向接口编程
Spring提供了Web应用开发的一整套流程,不仅仅是MVC,他们之间可以很方便的结合一起