springWEB搭建

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: springWEB搭建

概述

SpringWEB就是spring框架里得一个模块 SpringWeb的前身是SpringMVC*

在之前的后端三大架构: 
Controller:
>控制层, 包含了servlet, 对数据的接收, 处理, 响应

Model:
>数据模型, dao, model

VIew:
>视图, jsp, 用于将数据添加到html中进行响应


工作流程: 主要是控制层接收到响应之后, 调取dao层将数据响应回来, 然后进行处理, 处理之后交给jsp, jsp随后将数据交给前端来进行显示, 现在我们省略了数据直接与前端进行交互, 省去了与jsp的交互 

```在之前的的请求都是直接找到servlet-->service-->doGet/doPost

后端定义一个servlet的映射地址, 处理麻烦, 还要通过mark参数来对参数进行区分

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

一、搭建SpringWeb

  1. 首先导jar包
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
  1. 在 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:application.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>
  1. 开启spring-mvc的注解
<mvc:annotation-driven></mvc:annotation-driven>

开注解
在这里插入图片描述

导入spring的配置文件
在这里插入图片描述

  1. 创建我们自己的处理器, 为类,方法定义地址

在这里插入图片描述

  1. 将ssm项目发布到tomcat中访问

二、SpringMVC组件

●DispatcherServlet,他是mvc里的总调度服务器(又叫请求分发控制器), 他底层是一个servlet,他就是SringMVC中的前端控制器
●HandlerMapping: 他是SpringMvc里的映射控制器, DispatcherServlet他只是接收请求, 不知道交给哪个页面控制器来处理, 在选择指定的页面控制器,就交给了拦截器,随后就交给HandleMapping来做
●HandlerAdapter:在经过HandlerMapping处理之后, DispatcherServlet就获取到了处理器,但是处理器有多种, 为了方便调用, HandlerAdapter就将处理器包装成处理器适配器, HandlerAdapte调用真正的处理器功能处理方法, 完成功能处理, 返回一个ModelAndView对象(包含模型数据,逻辑视图名)

三、自定义的处理器

  1. 注解

    @RestController 类似@Service 这些注解标签 表示此类是控制层类,并且会创建对象放进spring
    容容器里
    @RequestMapping(path = "/loginCtl") 用来为类和方法定义映射地址, 必须是整个项目里唯一的


@RequestMapping(path = "/loginCtl") 在方法上使用时, 还可以添加访问的类型

```java
@RequestMapping(path = "/loginCtl", method=ResquestMethod.POST)
//这样一来就只能是post请求方式来访问了 , 如果没有设置请求方式就都可以访问

对于为方法添加还有@GetMapping与@PostMapping两种

@GetMapping(path="映射地址"), 另一个同理

  1. 如何获取请求里的数据
    <1>可以使用request对象俩接收,
    req.getParameter("参数名")
    这里接收统统是String类型
    在这里插入图片描述
    注意在引入req,resp对象之前要导入jar包
    还要设置provided, 只在编译器时用到, 不打包
    在这里插入图片描述
    <2>可以直接在参数列表中定义形参接收
    此种方法可以帮我们直接左类型的转换
    在这里插入图片描述还可以使用@RequestParam(请求参数名来接收), 后面跟方法参数进行绑定

<3>直接使用对象来接收
当要保存,提交表单数量比较多, 可以将所有参数封装到一个对象里面, 通过请求来被对应的方法里的对象参数接收,封装成对象
参数名要和对象里的一样

对象类(封装参数)
在这里插入图片描述
请求:
在这里插入图片描述

要注意类型转化的问题: 如 Date类型
后端要在参数上进行转换
@DateTimeFormat(pattern = "yyyy-MM-dd")

如果不进行转换就会报400错误:
在这里插入图片描述

四、POST请求的中文乱码问题

以前在处理post请求中文乱码问题, 是用java里封装的类Filter来解决
现在spring框架里可以提供一个编码过滤器

在这里插入图片描述

五 、控制器返回结构

  1. @ResController标签
  2. 由于控制器使用了@ResController标签, 里面包含了@ResponseBody 的注解标签, 所以方法返回结果默认是json格式, 并将字符串写入到响应体中,
    在这里插入图片描述
  3. 返回对象时

返回一个对象时, 必须加入转化json的第三方组件
在这里插入图片描述
在maven里加入对应的组件jar包
在这里插入图片描述

六 、解决前后端的跨域问题

  1. 加入依赖
    在这里插入图片描述
  2. 在web.xml配置过滤器
    在这里插入图片描述

    七、拦截器

过滤器与拦截器功能类似, 但是有区别
过滤器是java Servlet里定义的, 他是请求进去servlet之前进行, 可以对请求进行拦截, 再做一些逻辑的处理
而拦截器是拦截进入到自己的控制器中的请求, 其余不拦截

请添加图片描述

拦截器就是在第4 步到第5步的时候进行拦截, 拦截准备进入到自己定义的控制器的请求

搭建拦截器:

  1. 首先创建一个类, 实现HandlerInterceptor接口

  2. 重写接口里的preHandler()
    在这里插入图片描述

  3. 配置拦截器
    在这里插入图片描述

相关文章
|
9月前
|
C++
BaGet服务之基础搭建(上)
BaGet服务之基础搭建
248 0
|
弹性计算 网络协议 Linux
阿里云搭建我的世界服务器
以阿里云ECS服务器作为frp内网穿透中转,搭建我的世界服务器。
3665 0
|
3天前
|
Kubernetes Linux 应用服务中间件
k8s快速搭建
k8s快速搭建
|
6月前
|
Kubernetes Unix API
k8s搭建 遇到的问题
k8s搭建 遇到的问题
214 0
|
9月前
|
存储 数据库 C++
BaGet服务之基础搭建(下)
BaGet服务之基础搭建(下)
323 0
|
12月前
|
消息中间件 JavaScript 小程序
废物利用,拿自己的旧电脑搭建个服务器吧!
废物利用,拿自己的旧电脑搭建个服务器吧!
html+css实战124-场景搭建
html+css实战124-场景搭建
333 0
html+css实战124-场景搭建
|
JavaScript Serverless
阿里云云开发之MidwayJs 环境搭建入门
阿里云云开发之MidwayJs 环境搭建入门
664 0
阿里云云开发之MidwayJs 环境搭建入门
|
Ubuntu 网络安全 开发工具
|
分布式计算 Java Hadoop
服务器的搭建
服务器的运行需要环境的完整存在,我们就需要选择选择镜像源,和下载所需要组件,以此来搭建Hadoop,需要下载对应版本的镜像组件,利用linux命令来配置文件,以此来实现组件的使用,但这个过程中难免会出现问题,所以对此有了下文中所描述的。
150 0