文章目录

  • 一、springweb
  • 1.概述
  • 2.springWeb层搭建
  • 3.请求中的地址如何定义
  • 4.如何接收请求中的数据
  • 5.直接使用对象接收
  • 6.post请求中文乱码处理
  • 7.Ajax 返回 JSON
  • 8.跨域问题
  • 9.拦截器
  • 10.总结


一、springweb

1.概述

SpringWeb就是spring框架中的一个模块,对web层进行封装,使用起来更加方便。

参数接收框架进行封装(方便)

MVC架构:也是后端的架构,是jsp时代的称呼。mvc的概念在前后端分离的时代不存在了

(Cotroller 控制层 servlet 接收 处理 响应)

(Model 数据模型 dao model)

(View 视图 jsp 用于将数据添加到html中 然后进行响应 --现在不学这个模块)

现在的ssm(spring springweb mybatis)

SprngMVC运行流程:
1.用户发起请求
2.DispatcherServlet 负责分发控制的servlet

service–>doget–>dopost

(1)DispatcherServlet 是一个总调度,负责控制接收所有的请求,然后调用映射处理器,适配器 ====(ip+port/项目名/处理器地址–》(2))((1–》(4)))

(2)Handler Mapping 映射处理器 解析请求中的处理器地址 看项目中有没有对应的处理器(如果有拦截器,会执行对应的拦截器)(–》(1))

(3)Handler spring中自己封装的处理器 自定义的处理器,可以配置映射地址,以便于spring框架找到自己 ====(最终执行的部分 数据响应 这部分是自己写的,其他的框架帮我们完成)

(4)HandlerAdapter 适配器 封装请求中的参数((4)–》(3))

2.springWeb层搭建

1.导入jar

<!--springweb--><dependency>    <groupId>org.springframework</groupId>    <artifactId>spring-webmvc</artifactId>    <version>5.2.2.RELEASE</version></dependency>

2.web.xml中配置 DispatcherServlet

<!--      配置DispatcherServlet(请求分发servservlet)  负责接收前端所有的请求 -->  <servlet>      <servlet-name>application</servlet-name>      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>     <!-- 配置读取spring配置文件-->      <init-param>          <param-name>contextConfigLocation</param-name>          <param-value>classpath:spring.xml</param-value>      </init-param>      <!-- 控制servlet创建 初始化的时间 -1第一次访问时创建 >=0是服务器启动时创建-->      <load-on-startup>0</load-on-startup>  </servlet><!--  请求映射-->  <servlet-mapping>      <servlet-name>application</servlet-name>      <url-pattern>/</url-pattern>  </servlet-mapping>

3.添加spring配置文件开启 SpringMVC 注解

<!--配置开启使用springweb中的注解-->
    <mvc:annotation-driven></mvc:annotation-driven>

4.创建定义自己的处理器

总结:1.用户发起请求 ip:端口/项目名/类地址/方法地址

所有请求都可以到达DispatcherServlet

2.DispatcherServlet请求分发 核心的SpringWeb底层用的就是一个servlet 接收用户所有的请求,并分发给对应的映射处理器,适配器

3.HandlerMapping 映射处理器,用来解析请求中的地址,有没有对应的处理器类 如果本次请求有对应的拦截器,会执行相应的拦截器

4.HandlerAdapter 处理适配器 封装请求中的参数

5.到达自己创建的处理器,接收参数 处理响应

springweb层的控制器类中如何使用

web 层六字方针: 接收 处理 响应

3.请求中的地址如何定义

@RestController 修饰控制器类

@RequestMapping(path = “/loginCtl”) 可以在类和方法上使用

在类上面使用,整个项目中必须是唯一的 ,不能重复

在方法上定义时,同一个类中地址必须是唯一的

可以使用path/value定义地址

  • @RequestMapping(path = “/test”,method = RequestMethod.POST)
    method定义那种请求可以访问此方法
  • @RequestMapping(path = “/test”) 没有定义请求方式get/post请求都可以访问
  • @GetMapping(path = “/test”) get请求
  • PostMapping(path = “/test”) post请求

4.如何接收请求中的数据

1.使用request对象接收 req.getparameter()

2.直接在参数列表中定义形参接收,还可以帮我们进行类型转换

3.请求中的键名称与形参名一致 直接接收;否则,通过注解标签进行绑定

5.直接使用对象接收

400 请求的数据类型有问题

lombok 自动生成set get方法

6.post请求中文乱码处理

SpringMVC 中已经为我们提供了这个过滤器,只需要在 web.xml 中配置好即可

<!--配置spring框架中提供的编码过滤器-->
<filter>   
 <filter-name>characterEncodingFilter</filter-name>    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
 <init-param>   
  <param-name>encoding</param-name>  
    <!--设置字符集编码-->   
  <param-value>UTF-8</param-value>
 </init-param>
</filter>
<filter-mapping>    
  	<filter-name>characterEncodingFilter</filter-name>    
  	<url-pattern>/*</url-pattern>
</filter-mapping>

7.Ajax 返回 JSON

控制中返回结果,由于使用@RestController,里面包含@ResponseBody的注解标签,所以方法返回结果默认是json格式,并将json字符串写入到响应体中。返回一个对象时,必须加入一个转json的第三方组件

<!-- 
https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
 -->
<dependency>    
<groupId>com.fasterxml.jackson.core</groupId>    
<artifactId>jackson-databind</artifactId>    
<version>2.13.3</version>
</dependency>

8.跨域问题

加入依赖 配置过滤器

9.拦截器

过滤器是JavaServlet规范中定义的,是当请求进入servlrt之前,可以对请求进行拦截,可以加入到一些逻辑中。

拦截器是和过滤器有区别的,拦截是spring框架中自己定义的功能,和过滤器位置不同

拦截器只拦截进入到自己控制器中的请求,其余的不拦截

拦截器(HandlerInterceptor)

10.总结

springweb

以前请求都是直接找到servlrt --> service -->doget()/gopost()

1.访问后端:定义了一个servlet映射地址,处理很多事情 通过mark传参,通过参数进行区分
2.在servlet中需要接收前端请求的数据,非常麻烦

springweb对后端三层架构中的web层进行封装.
spring是总管家,集成mybatis数据持久层框架,本身对事物进行管理提供web层的封装
提供了一个DispatcherServlet(请求分发控制器)
接收前端发送的所有请求
然后取调用HandlerMapping(映射处理器),解析请求中的地址(@RequestMapping(path=“/loginCtl”))
接着找到后可以经过对应的拦截器
再去通过HandlerApter(适配器,数据封装)找到自己定义的控制器。
在自己的控制器中处理,响应 直接可以响应json格式的数据