JavaWeb开发01--Maven-Web入门-请求响应-分层解耦

一、Maven

1.maven概述

Apache Maven是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建。

根据提供的插件实现很多功能

maven的作用

管理和构建java项目的工具

依赖管理:可以直接在pom.xml文件中修改描述信息就可以得到相应Jar包

统一项目管理:让不同IDE的格式都一样可以在不同软件上打开

项目构建:可以一键实现很多操作

2.依赖

①依赖配置

https://mvnrepository.com/

②依赖传递

③依赖范围

④生命周期

每个生命周期有不同阶段,但只需要关注5个阶段就可以

同一套生命周期阶段是有顺序的

二、Web入门

1.SpringBoot入门

从SpringBoot开始,贯穿始终


2.HTTP协议

请求数据的格式,返回数据的格式

①请求数据格式:

常见请求头:

请求体是POST请求独有的,会将请求的参数放入请求体中,而Get直接放在请求行,格式是会请求行那写的格式(请求行体现就是网址那地方,请求体要打开F12开发者工具才能看到)

②响应格式

常见响应码:

③协议解析

步骤:监听指定端口,若响应就开启线程执行处理请求,使用IO流读取HTTP请求并发送数据,根据请求行请求头输出前端响应的数据。

3.Tomcat

简介:

如何部署:把文件夹直接放到Tomcatwebapps目录下

三、请求响应

Tomcat会将HTTP协议请求中的信息封装到HttpServleRequest这个对象中去
TomcatHttp会用ServleReques对象来响应数据

我们需要关注的是Countroller中的程序,获取请求参数,设置响应数据

1.请求

①简单参数

要保证参数名和形参变量名相同,如果不同:

注意使用这个注解后,,required默认为true,就必须传这个参数,不传就报错

②实体参数

当传递的简单参数过多,就得使用实体参数,实体中成员变量名必须一致。

复杂实体,传递中包含实体,就得按照层次一一对应

③数组集合参数

传递的一个值有多个就直接请求多个用&连接。
如果使用数组接收,数组名只要与变量名一致就行。
如果使用集合接受,名字一致还需有@RequestParam注解

④日期参数

⑤JSON参数

JSON需要使用POST的请求方式,把数据放进请求体中,并且设置为JSON,JSON中所有的KEY要用双引号

需要加注解,RequestBody会将JSON中的数据封装到实体对象中去

⑥路径参数

请求方式:

这里的id是路径参数,需要注解PathVariable就会将路径参数绑定给方法形参id

多个路径参数请求与接收方式:

2.响应

若返回的是一个对象是一个集合,会将其转为JSON格式再转出去,并放在响应体中

由于响应数据各式各样,所以为了统一使用Result实体对象

这个类包含有参无参构造器,以及静态方法sucess和defeat,这两个方法直接返回的是result对象,便于直接构造result对象。

剩余两个类似

案例:

用户请求

四、分层解耦

1.三层架构

controller层接收请求响应数据,调用了service对进行逻辑处理,获取数据时调用了dao层查询数据,再返回给service,service处理后返回给controller数据,contoller再响应数据。

2.分层解耦

高内聚:例如与员工相关的就只在与员工处理中执行
低耦合:就是模块间尽量少的调用

耦合的意思是,我service更改了一个,在controller中也要进行相应修改

解耦合:将对象交给容器,程序需要调用的时候就从容器中去寻找

3.IOC&DI入门

对于第一步,需要被调用的类交给容器,就只需要在service和dao类前加@Component注解成为了容器中的bean,对于要调用类的地方要加上@Autowired注解,程序在运行时会提供该类型的bean对象,并赋值给该变量

要切换对象的时候就将被切换的对象上的注解注释掉,再对要切换的对象加上注释就行。

4.IOC详解

Component一般不使用除非时不属于这三个层
对于controller层不需要注释,因为原本的RestController就包含了Controller注释和ResponseBody

Bean组件扫描

SpringBoot启动类中的注解就包含了组件扫描注解,但是只扫描所在包和子包

5.DI详解

如果有多同类型的类都注解了component,存在多个同类型的bean就会出现错误

我觉得primary好,不用修改controller程序

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解MD5算法:原理、应用与安全

title: 深入理解MD5算法:原理、应用与安全 date: 2024/4/11 20:55:57 updated: 2024/4/11 20:55:57 tags: MD5算法数据安全哈希函数摘要算法安全漏洞SHA算法密码学 第一章:引言 导言 在当今数字化时代,数据安全和完整性变得至关重要。消息…

【Leetcode每日一题】 动态规划 - 下降路径最小和(难度⭐⭐)(55)

1. 题目解析 题目链接:931. 下降路径最小和 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了. 2.算法原理 对于这类路径类问题,通常我们首先需要分析状态表示以及状态转移的过程。特别地,本题涉及…

The C programming language (second edition,KR) exercise(CHAPTER 3)

E x c e r c i s e 3 − 1 Excercise\quad 3-1 Excercise3−1:输出结果如图1所示,这里故意让二分搜索算法去寻找一个在数组中不存在在的数,然后去看两种二分搜索算法分别所花费的时间的大小,为了使得所花费的时间更具有可分辨性&a…

【HTML】制作一个简单的线性动画

目录 前言 HTML部分 CSS部分 JS部分 效果图 总结 前言 无需多言,本文将详细介绍一段HTML代码,具体内容如下: 开始 首先新建文件夹,创建一个文本文档,两个文件夹,其中HTML的文件名改为[index.html]&am…

面试经典算法系列之二叉树1 -- 从前序与中序遍历序列构造二叉树

面试经典算法16 - 从前序与中序遍历序列构造二叉树 LeetCode.105 公众号:阿Q技术站 问题描述 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根…

VUE typescript 调用stompjs[Rabbit MQ]

npm拉下来最新的2.3.9版本&#xff0c;发现一些原来Js代码已经不能用了。顺便解读了下最新定义的内容 // <reference types"node" />export const VERSIONS: {V1_0: string;V1_1: string;V1_2: string;supportedVersions: () > string[]; };export class C…

airtest-ios真机搭建实践

首先阅读4 ios connection - Airtest Project Docs 在Windows环境下搭建Airtest对iOS真机进行自动化测试的过程相对复杂&#xff0c;因为iOS的自动化测试通常需要依赖Mac OS系统&#xff0c;但理论上借助一些工具和服务&#xff0c;Windows用户也可以间接完成部分工作。下面是…

前端对接fastGPT流式数据+打字机效果

首先在对接api时 参数要设置stream: true, const data {chatId: abc,stream: true,//这里true返回流式数据detail: false,variables: {uid: sfdsdf,name: zhaoyunyao,},messages: [{ content: text, role: user }]}; 不要用axios发请求 不然处理不了流式数据 我这里使用fetch …

PairAug:增强图像-文本对对放射学有什么用?

论文链接 代码链接GitHub - YtongXie/PairAug: [CVPR2024] PairAug: What Can Augmented Image-Text Pairs Do for Radiology? 发表于CVPR2024 机构 1) 澳大利亚机器学习研究所(AIML)&#xff0c;澳大利亚阿德莱德大学 2) 西北工业大学计算机科学与工程学院 3) 西北工业…

【简明图文教程】Node.js的下载、安装、环境配置及测试

文章目录 前言下载Node.js安装Node.js配置Node.js配置环境变量测试后言 前言 本教程适用于小白第一次从零开始进行Node.js的下载、安装、环境配置及测试。 如果你之前已经安装过了Node.js或删除掉了Node.js想重新安装&#xff0c;需要先参考以下博客进行处理后&#xff0c;再根…

渗透测试实战——第一站

仅供交流学习使用&#xff0c;请勿用于非法用途 前言&#xff1a;刚学了sql注入&#xff0c;只听理论总感觉没啥用&#xff0c;今天花了一半个多小时&#xff0c;去尝试寻找有漏洞的网站&#xff0c;最终找到了一个&#xff1b;实践是检验真理的唯一标准。 我是通过黑客常用语法…

牛客 NC36 在两个长度相等的排序数组中找到上中位数【中等 模拟 Java,Go,PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/6fbe70f3a51d44fa9395cfc49694404f 思路 直接模拟2个数组有顺序放到一个数组中&#xff0c;然后返回中间的数参考答案java import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 pu…

深入剖析UDP反射放大攻击原理及其有效防护策略

引言 随着互联网的飞速发展和业务复杂性的提升&#xff0c;网络安全问题日益凸显&#xff0c;其中分布式拒绝服务&#xff08;DDoS&#xff09;攻击成为危害最为严重的一类网络威胁之一。UDP反射放大攻击作为一种高效的DDoS手段&#xff0c;因其攻击成本低廉、威力巨大&#x…

IDEA中无法保存设置 Cannot Save Settings

确定原因: 在IDEA中父工程不应该存在有子工程的相关东西 首先,这是我的DCYJ项目(观察右侧的Content Root) 其次,这是我的EAPOFode项目(观察右侧的Content Root爆红处) 最后我将DCYJ项目右侧的Content Root全部删掉

关于部署ELK和EFLKD的相关知识

文章目录 一、ELK日志分析系统1、ELK简介1.2 ElasticSearch1.3 Logstash1.4 Kibana&#xff08;展示数据可视化界面&#xff09;1.5 Filebeat 2、使用ELK的原因3、完整日志系统的基本特征4、ELK的工作原理 二、部署ELK日志分析系统1、服务器配置2、关闭防火墙3、ELK ElasticSea…

ASUS华硕ROG幻16Air笔记本电脑GU605M原装出厂Win11系统工厂包下载,带有ASUSRecovery一键重置还原

适用型号&#xff1a;GU605MI、GU605MY、GU605MZ、GU605MV、GU605MU 链接&#xff1a;https://pan.baidu.com/s/1YBmZZbTKpIu883jYCS9KfA?pwd9jd4 提取码&#xff1a;9jd4 华硕原厂Windows11系统带有ASUS RECOVERY恢复功能、自带所有驱动、出厂主题壁纸、系统属性联机支持…

Java后端搭建流程

目录 一、后端开发准备工作 1.下载 2.安装jdk &#xff0c;配置JAVA-HOME path 3.启动Tomcat 4.访问ip和端口 二、创建web项目 1.新建一个项目 2.发布web应用到服务器 &#xff08;1&#xff09;对LoginServlet继承HttpServlet &#xff08;2&#xff09;重写父类方法…

如何让视频流媒体平台免受网络攻击

在各国&#xff0c;流媒体服务已越来越受到大众的欢迎。有统计表明&#xff0c;目前视频流已占网络整体流量的80%以上。不过如您所见&#xff0c;近年来&#xff0c;数字威胁的不断增加&#xff0c;也让网络攻击逐年递增。单个视频用户受到的危险&#xff0c;往往会危及到整个服…

Vue 项目build打包发布到giteepages ,首页正常显示,其他路由页面报错404的解决方法

直接上解决方法&#xff1a; 打包之后dist上传之后&#xff0c;还要新创一个.spa文件&#xff0c;注意&#xff01;是 .spa 有个. 点&#xff0c;如下图 一般这样就可以开始部署了&#xff0c;然后开启giteepages服务。如果出现了首页正常显示&#xff0c;其他页面显示…

全新华为MateBook X Pro发布,将Ultra9放入980g超轻薄机身

2024年4月11日&#xff0c;在华为鸿蒙生态春季沟通会上全新的华为MateBook X Pro正式发布。该机以美学设计、创新科技以及智慧体验&#xff0c;追求重新定义Pro、重新定义旗舰&#xff0c;将颠覆消费者对传统轻薄本的认知。 华为MateBook X Pro追求极致轻薄与强大性能的完美结合…