springWEB搭建

概述

SpringWEB就是spring框架里得一个模块*
SpringWeb的前身是SpringMVC
springMVC介绍
在之前的后端三大架构:
Controller:

控制层, 包含了servlet, 对数据的接收, 处理, 响应

Model:

数据模型, dao, model

VIew:

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

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

在之前的的请求都是直接找到servlet-->service-->doGet/doPost
后端定义一个servlet的映射地址, 处理麻烦, 还要通过mark参数来对参数进行区分

目录

    • 概述
    • 一、搭建SpringWeb
    • 二、SpringMVC组件
    • 三、自定义的处理器
    • 四、POST请求的中文乱码问题
    • 五 、控制器返回结构
    • 六 、解决前后端的跨域问题
    • 七、过滤器

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里的映射控制器, DispatcherServletSpring他只是接收请求, 不知道交给哪个页面控制器来处理, 在选择指定的页面控制器,就交给了拦截器,随后就交给HandleMapping来做
●HandlerAdapter:在经过HandlerMapping处理之后, DispatcherServlet就获取到了处理器,但是处理器有多种, 为了方便调用, HandlerAdapter就将处理器包装成处理器适配器, HandlerAdapte调用真正的处理器功能处理方法, 完成功能处理, 返回一个ModelAndView对象(包含模型数据,逻辑视图名)

三、自定义的处理器

  1. 注解

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

可以使用value=""或者path=""都可以使用来定义对外访问地址

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

@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. 配置拦截器
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/23266.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java:mybatis-plus-generator-ui 基于Mybatis-Plus的代码自助生成器

引用官方文档上的简介&#xff1a; 提供交互式的Web UI用于生成兼容mybatis-plus框架的相关功能代码&#xff0c;包括Entity,Mapper,Mapper.xml,Service,Controller等 &#xff0c;可以自定义模板以及各类输出参数&#xff0c;也可通过SQL查询语句直接生成代码。 文档 githu…

安卓基础巩固(四):设计原则、安卓主流技术框架MVC/MVP/MVVM、设计模式

文章目录 架构设计为什么要进行技术框架的设计 六大设计原则一、单一职责原则二、开闭原则三、依赖倒置原则四、接口分离原则五、迪米特法则&#xff08;又称最小知道原则&#xff09;六、里氏替换原则案例诠释 安卓主流开发技术框架MVC模式MVP模式MVVMMVP模式详解 设计模式构造…

27 VueComponent 计算属性的实现

前言 这是最近的碰到的那个 和响应式相关的问题 特定的操作之后响应式对象不“响应“了 引起的一系列的文章 主要记录的是 vue 的相关实现机制 呵呵 理解本文需要 vue 的使用基础, js 的使用基础 测试用例 用例如下, 我们这里核心关注 counterPlus100 这个计算变量 问…

java 社区人口管理系统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 java 社区人口管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0…

白银实时价格应该在最适合的地方下注

小时候我们看战争片&#xff0c;总是发现主角们带兵打仗&#xff0c;战无不胜&#xff0c;偶尔有一场大的失利&#xff0c;但是总是能耐化险为夷&#xff0c;逢凶化吉&#xff0c;甚至最后成功反扑、反败为胜。后来小编一琢磨&#xff0c;发现&#xff0c;其实这些将才们打仗&a…

在 Visual Studio 2022 中使用 GitHub Copilot chat

本文通过实际应用场景和示例代码展示了 GitHub Copilot Chat 在 Visual Studio 2022 中的优势和特点。最后&#xff0c;鼓励读者在实际工作中尝试使用 Copilot Chat&#xff0c;以提升开发效率和代码质量。希望这些信息和经验能为你在使用GitHub Copilot时提供帮助和启发。 1. …

短信验证码

阿里云短信 1.1 介绍 短信服务&#xff08;Short Message Service&#xff09;由阿里云提供短信平台&#xff0c;调用API即可发送验证码、通知类和营销类短信&#xff1b;国内验证短信秒级触达&#xff0c;到达率最高可达99%。 官方网站&#xff1a;https://www.aliyun.com/…

【JavaSE】Java基础语法(十八):接口

文章目录 1. 接口的概述2. 接口的特点3. 接口的成员特点4. 类和接口的关系5. 抽象类和接口的关系 1. 接口的概述 接口就是一种公共的规范标准&#xff0c;只要符合规范标准&#xff0c;大家都可以通用。Java中接口存在的两个意义 用来定义规范用来做功能的拓展 2. 接口的特点…

听我一句劝,别去外包,干了五年,废了....

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入杭州某软件公司&#xff0c;干了接近5年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了5年的功能测试…

c++ 11标准模板(STL) std::map(二)

定义于头文件<map> template< class Key, class T, class Compare std::less<Key>, class Allocator std::allocator<std::pair<const Key, T> > > class map;(1)namespace pmr { template <class Key, class T, clas…

想劝大家别去外包,干了5年,彻底废了......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近5年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01; 而我已经在一个企业干了四…

提示msvcr120.dll丢失怎么办?由于找不到msvcr120.dll如何修复?

msvcr120.dll 是 Microsoft Visual C 文件中的一个重要组件。它是一种动态链接库&#xff0c;包含了很多函数&#xff0c;提供了许多基础的 C 运行时支持。这个库文件的主要功能是提供 C 应用程序的运行时环境&#xff0c;它是一些常用的 C 运行时库文件的集合。这些库包括了 m…

【Netty】Netty 程序引导类(九)

文章目录 前言一、引导程序类二、AbstractBootStrap 抽象类三、Bootstrap 类四、ServerBootstrap 类五、引导服务器5.1、 实例化引导程序类5.2、设置 EventLoopGroup5.3、指定 Channel 类型5.4、指定 ChannelHandler5.5、设置 Channel 选项5.6、绑定端口启动服务 六、引导客户端…

语法速通 uni-app随笔【uni-app】【微信小程序】【vue】

1、微信小程序 1.1、wx 小程序 工程目录 其中&#xff0c; pages目录/index目录【必有】&#xff1a; index.js 编写业务逻辑 【初始数据&#xff0c;生命周期函数】 index.json 编写配置 index.wxml 编写模板 【可理解为本页html】 index.wxss 【可理解为本页css】 1.2、wx…

cdn配置(超详细+图解+原理)

具体的详细配置在右侧目录翻到“三”&#xff0c;前面的一二是将原理 以腾讯云的cdn为例&#xff0c;其它家的大同小异 一、cdn作用和配置思路 &#xff08;一&#xff09;cdn作用 1.加速访问 cdn服务通常有多个节点缓存&#xff0c;用户可以就近获取&#xff0c;延迟较低 …

如何运行Node.js脚本及读取环境变量

目录 1、如何从CLI 运行Node.js 脚本 2、将字符串作为参数传递到节点&#xff0c;而不是文件路径 3、自动重新启动应用程序 4、如何从Node.js中读取环境变量 1、如何从CLI 运行Node.js 脚本 运行Node.js程序的通常方法是运行全局可用的Node命令&#xff08;一旦安装Node.js…

Linux---文本处理命令(grep、wc、管道符 |)

1. grep命令 grep命令能够在一个或多个文件中&#xff0c;搜索某一特定的字符模式&#xff08;也就是正则表达式&#xff09;&#xff0c;此模式可以 是单一的字符、字符串、单词或句子。 注意&#xff1a;在基本正则表达式中&#xff0c;如通配符 *、、{、|、( 和 )等&#…

蓝桥杯--挖地雷

没有白走的路&#xff0c;每一步都算数&#x1f388;&#x1f388;&#x1f388; 题目&#xff1a; 已知有很多的地窖&#xff0c;每一个地窖中又藏着很多的地雷&#xff0c;每个地窖之间都存在着相连性&#xff0c;但是不是任意的地窖都是相连的&#xff0c;要求我们找出一次能…

深度学习—目标检测标注数据集

深度学习之目标检测 PASCAL数据集 PASCAL VOC挑战赛&#xff08;The PASCAL Visual Object Classes&#xff09;是一个世界级的计算机视觉挑战赛&#xff0c;PASCAL全称&#xff1a;Pattern Analysis&#xff0c;Statical Modeling and Computational Learning&#xff0c;是…

native层函数没有导出时,如何获得相应函数地址?

前言 每次App重新运行后native函数加载的绝对地址是会变化的&#xff0c;唯一不变的是函数相对于基地址的偏移&#xff0c;因此我们可以在获取模块的基地址后加上固定的偏移地址获取相应函数的地址&#xff0c;Frida中也正好提供了这种方式&#xff1a;先通过Module.findBaseA…