目录
一.springweb概述
二.springweb的特点
三.springweb的运行流程
四.springweb组件
五.springweb的搭建
1.导包
2.配置 DispatcherServlet
3.开启 springweb 注解
4.处理器的搭建
六.springweb注解
七.springweb拦截器
1.拦截器概述
2.拦截器的实现
(1)添加 servelt api 依赖
(2)拦截器的使用
(3)注册拦截器
总结
一.springweb概述
SpringWeb 是 spring 框架中的一个模块,基于 Servlet API 构建的 web 框架。springWeb 是 Spring 为 web 层开发提供的一整套完备的解决方案。在 web 层框架历经 Strust1,WebWork,Strust2 等诸多产品的历代更选之后,目前业界普遍选择了 springWeb 作为 Java EE 项目 web 层开发的首选方案。
早期的 ssm :spring + struts2(对web层进行的封装) + mybatis
现在的 ssm :spring + springweb + mybatis
二.springweb的特点
SpringWEB 是 spring 家族原生产品,与 IOC 容器等基础设施无缝对接.
1.基于原生的 Servlet,提供了一个前端控制器 DispatcherServlet ,开发者无须额外开发控制器对象。
2.可以自动绑定用户输入,并正确地转换数据类型。
3.代码清新简洁,大幅度提升开发效率。
4.内部组件化程度高,可插拔式组件即插即用。
5.性能卓著,尤其适合现代大型、超大型互联网项目要求。
三.springweb的运行流程
用户发送出请求到前端控制器 DispatcherServlet。
1.DispatcherServlet 收到请求调用 HandlerMapping(处理器映射器)。
2.HandlerMapping 找到具体的处理器(可查找 xml 配置或注解配置),生成处理器对象及处理器拦截器(如果有),再一起返回给 DispatcherServlet。
3.DispatcherServlet 调用 HandlerAdapter(处理器适配器)。
4.HandlerAdapter 经过适配调用具体的处理器(Handler/Controller)。
5.Controller 执行完成向前端响应结果。
四.springweb组件
1.前端控制器:DispatcherServlet(不需要程序员开发),由框架提供,在web.xml 中配置。
作用:统一处理请求和响应,整个流程控制的中心,由它调用其它组件处理用户的请求.
2.处理器映射器:HandlerMapping(不需要程序员开发),由框架提供。
作用:根据请求的 url 查找 Handler(处理器/Controller)
3.处理器适配器:HandlerAdapter(不需要程序员开发),由框架提供。
作用:按照特定规则(HandlerAdapter 要求的规则)去执行 Handler。
4.处理器:Handler(也称之为 Controller,需要工程师开发)。
注意:编写 Handler 时按照 HandlerAdapter 的要求去做,这样适配器才可以去正确执行 Handler。
作用:接受用户请求信息,调用业务方法处理请求,也称之为后端控制器。
五.springweb的搭建
1.导包
首先需要通过 maven 在 pom.xml 文件中导入springweb所需要使用的 .jar 包。
<!--springWeb--> <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.2.2.RELEASE</version> </dependency>
2.配置 DispatcherServlet
在 web.xml 中配置DispatcherServlet 和配置 spring 核心请求分发器:
<servlet><servlet-name>application</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring.xml</param-value></init-param><load-on-startup>0</load-on-startup> </servlet> <!-- 请求映射 --> <servlet-mapping><servlet-name>application</servlet-name><url-pattern>/</url-pattern> </servlet-mapping>
3.开启 springweb 注解
在 spring.xml 中开启 springweb 注解
<mvc:annotation-driven></mvc:annotation-driven>
4.处理器的搭建
对于web层的类,我们程序员一般都会以--Controller 来命名,这也就是我们自定义的处理器。
eg:
对于自定义处理器的对象的创建,我们当然还是要将 new 对象的权力交给spring去管理。
所以就需要在类名前面加上: @RestController ,和@Service @Component @Repository用法是一样的。
六.springweb注解
获得请求数据使用的注解:
在springweb中给每个类每个方法都定义了地址,这样就可以精准地找到对应的地址了。当然,每个类对应的地址都是不一样的,并且一个类中的多个方法的地址也是不能相同的,保证精确性。
@RequestMapping( path =" /地址 " ,method = RequestMethod.POST/GET) 使用在类名和方法名前,因为请求的方式有 get 和 post 请求,该注解中还有 method 属性用来区分请求方式。
@GetMapping( path = " /地址 " ) 此注解专门用于 GET 请求,用在方法前。
@PostMapping( path =" /地址 " ) 此注解专门用于 POST 请求,用在方法前。
在方法中,通常需要接收前端发送到后端的数据,(前后端接收的参数的名字必须一致),如果前后端的参数名字不一致的话,就需要使用 @RequestParam(" 前端参数名 ") ,此注解使用在方法的参数前,如果是要拿到请求头中的数据的话还需要用到 @RequestHeader 。
当前端通过 json 的形式发送到后端,后端用对象来接收 需要在对象前使用 @RequestBody 注解(接收到数据的前提是导入了 json 的.jar包)
返回 json:
如果在前端输入的 json 格式的字符串中有日期属性,就需要在模型类中对日期属性的接收格式做出规定,使用 @DataTimeFormat( pattern = " " ),还有一个注解:@JsonFormat( pattern = " " )此注解用于后端向前端做出相应时规定日期的格式,eg:
七.springweb拦截器
1.拦截器概述
springweb拦截器类似于在servlet中的过滤器 Filter,它主要用于拦截用户请求并做出相关处理。
区别:
Spring 中的拦截器与过滤器有着本质的区别,过滤器是 servlet 规范中定义并实现的,在进入servlet 之前截获请求.而拦截器是 spring 中定义的一种拦截机制,是对进入到处理器的请求进行拦截.
2.拦截器的实现
(1)添加 servelt api 依赖
<!--servlet-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
(2)拦截器的使用
对于拦截器的使用,我们需要定义一个类去实现 HandlerInterceptor 接口,重写接口中 preHandle 方法,此方法返回值是spring规定好的,为 true/false ,所以我们想要向前端做出相应时,就只能使用 response,eg:
(3)注册拦截器
想要拦截器生效,还需要在 spring.xml 中去注册拦截器:
总结
同学们,springweb的内容就到此告一段落,本篇博客讲述了spring中对于web层的封装--springweb框架,详细指出springweb的运行流程,其中使用的组件,springweb的搭建以及对springweb中参数接收和拦截器的学习内容和小细节,我们认真学习springweb之后,我们就可以将spring框架--springweb--mybatis融汇贯通,串联。
制作不易,希望可以多多三连支持博主,博主会继续努力的!!!