免费网站建设链接很长 知呼wordpress加广告位

web/2025/9/28 14:58:42/文章来源:
免费网站建设链接很长 知呼,wordpress加广告位,职业培训机构哪家最好,全球最大的磁力搜索引擎文章目录 [SpringBoot] 后端工程化1 需求2 开发流程3 RequestController 类#xff08;操作类#xff09;3.1 简单参数#xff08;形参名和请求参数名一致#xff09;3.2 简单参数#xff08;形参名和请求参数名不一致#xff09;3.3 复杂实体参数3.4 数组参数3.5 集合参… 文章目录 [SpringBoot] 后端工程化1 需求2 开发流程3 RequestController 类操作类3.1 简单参数形参名和请求参数名一致3.2 简单参数形参名和请求参数名不一致3.3 复杂实体参数3.4 数组参数3.5 集合参数3.6 时间参数3.7 json参数3.8 单个路径参数3.9 多个路径参数 4 RequestController 类查询类4.1 ResponseBody4.2 统一响应结果 5 分层解耦5.1 三层架构5.2 分层目录及代码5.2.1 数据访问层5.2.2 业务逻辑层5.2.3 控制层 5.3 分层解耦5.3.1 耦合问题5.3.2 解耦思路 5.4 IOC DI5.4.1 Bean的声明IOC5.4.2 组件扫描IOC5.4.3 DI [SpringBoot] 后端工程化 1 需求 需求基于SpringBoot的方式开发一个web应用浏览器发起请求“/hello”后给浏览器返回字符串 “Hello World ”。 2 开发流程 创建SpringBoot工程项目 第一步用 IDEA 基于Spring官方骨架创建SpringBoot工程。 第二步选择 SpringBoot 框架版本勾选web开发相关依赖。 定义RequestController类添加方法hello并添加注解 在主包名下创建 controller 包 pojo 包 package com.itheima.controller; import org.springframework.web.bind.annotation.*;RestController public class RequestController {RequestMapping(/hello)public String hello(){System.out.println(Hello World ~);return Hello World !;} } 测试运行 运行 SprintBootWebObjectApplication 类 3 RequestController 类操作类 作用接收前端的表单数据 3.1 简单参数形参名和请求参数名一致 前端 - 请求方式GET - URL: http://localhost:8080/simpleParam?namelisiage45后端 RestController public class RequestController {// 第1个请求参数 nameTom 参数名:name参数值:Tom// 第2个请求参数 age10 参数名:age , 参数值:10//springboot方式RequestMapping(/simpleParam)public String simpleParam(String name , Integer age ){//形参名和请求参数名保持一致System.out.println(name : age);return OK; //返回数据} }3.2 简单参数形参名和请求参数名不一致 前端 - 请求方式GET - URL: http://localhost:8080/simpleParam?namelisiage45后端 RestController public class RequestController {// 第1个请求参数 nameTom 参数名:name参数值:Tom// 第2个请求参数 age10 参数名:age , 参数值:10//springboot方式RequestMapping(/simpleParam)public String simpleParam(RequestParam(name name, required false) String username , Integer age ){// name:请求参数名required:参数是否必须System.out.println(username : age);return OK; //返回数据} }3.3 复杂实体参数 前端 - 请求方式GET - URL: http://localhost:8080/complexPojo?username李四age10address.province背景address.city上海后端 RestController public class RequestController { //springboot方式RequestMapping(/complexPojo)public String complexPojo(User user) {System.out.println(user);return ok;}User{private String username;private int age;private Address address;Get 和 Set 方法;ToString 方法;}Address{private String province;private String city;Get 和 Set 方法;ToString 方法;} }3.4 数组参数 前端 - 请求方式GET - URL: http://localhost:8080/arrayParam?hobbystringhobbyjavahobbypython后端 RestController public class RequestController {//springboot方式RequestMapping(/arrayParam)public String arrayParam(String[] hobby) {System.out.println(Arrays.toString(hobby));return ok,arrayParam;} }3.5 集合参数 前端 - 请求方式GET - URL: http://localhost:8080/listParam?hobbystringhobbyjavahobbypython后端 RestController public class RequestController {//springboot方式RequestMapping(/listParam)public String listParam(RequestParam ListString hobby) {System.out.println(hobby);return ok,listParam;} }3.6 时间参数 前端 - 请求方式GET - URL: http://localhost:8080/dateParam?date2023-02-09 12:08:09后端 RestController public class RequestController {//springboot方式RequestMapping(/dateParam)public String dateParam(DateTimeFormat(pattern yyyy-MM-dd HH:mm:ss) LocalDateTime date) {System.out.println(date);return ok,dateParam;} }3.7 json参数 前端 - 请求方式POST - URL: http://localhost:8080/jsonParam - 请求体 {username: lisi,age: 23,address: {province: beijing,city: 上海} }后端 RestController public class RequestController {// 第1个请求参数 nameTom 参数名:name参数值:Tom// 第2个请求参数 age10 参数名:age , 参数值:10//springboot方式RequestMapping(/jsonParam)public String jsonParam(RequestBody User user) {System.out.println(user);return ok,jsonParam;} }3.8 单个路径参数 前端 - 请求方式GET - URL: http://localhost:8080/path/1000后端 RestController public class RequestController {//springboot方式RequestMapping(/path/{id})public String pathParam(PathVariable Integer id) {System.out.println(id);return ok,pathParam;} }3.9 多个路径参数 前端 - 请求方式GET - URL: http://localhost:8080/path/1000/Lisi后端 RestController public class RequestController {//springboot方式RequestMapping(/path/{id}/{name})public String pathParam(PathVariable Integer id, PathVariable String name) {System.out.println(id);System.out.println(name);return ok,pathParam;} }4 RequestController 类查询类 4.1 ResponseBody 由于 RestController Controller ResponseBody 所以不用重复添加。 4.2 统一响应结果 定义在一个实体类 Result 来包含以上信息。代码如下 public class Result {private Integer code;//响应码1 代表成功; 0 代表失败private String msg; //响应码 描述字符串private Object data; //返回的数据public Result() { }public Result(Integer code, String msg, Object data) {this.code code;this.msg msg;this.data data;}public Integer getCode() {return code;}public void setCode(Integer code) {this.code code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg msg;}public Object getData() {return data;}public void setData(Object data) {this.data data;}//增删改 成功响应(不需要给前端返回数据)public static Result success(){return new Result(1,success,null);}//查询 成功响应(把查询结果做为返回数据响应给前端)public static Result success(Object data){return new Result(1,success,data);}//失败响应public static Result error(String msg){return new Result(0,msg,null);} }5 分层解耦 5.1 三层架构 请求处理、响应数据Controller控制层。负责接收页面的请求给页面响应数据。逻辑处理Service业务逻辑层。负责业务逻辑处理的代码。数据访问Dao数据访问层(Data Access Object)也称为持久层。负责业务数据的维护操作包括增、删、改、查等操作。 5.2 分层目录及代码 5.2.1 数据访问层 负责数据的访问操作包含数据的增、删、改、查 数据访问接口 //数据访问层接口制定标准 public interface EmpDao {//获取员工列表数据public ListEmp listEmp(); }数据访问实现类 //数据访问实现类 public class EmpDaoA implements EmpDao {Overridepublic ListEmp listEmp() {//1. 加载并解析emp.xmlString file this.getClass().getClassLoader().getResource(emp.xml).getFile();System.out.println(file);ListEmp empList XmlParserUtils.parse(file, Emp.class);return empList;} }5.2.2 业务逻辑层 处理具体的业务逻辑 业务接口 //业务逻辑接口制定业务标准 public interface EmpService {//获取员工列表public ListEmp listEmp(); }业务实现类 //业务逻辑实现类按照业务标准实现 public class EmpServiceA implements EmpService {//dao层对象private EmpDao empDao new EmpDaoA();Overridepublic ListEmp listEmp() {//1. 调用dao, 获取数据ListEmp empList empDao.listEmp();//2. 对数据进行转换处理 - gender, jobempList.stream().forEach(emp - {//处理 gender 1: 男, 2: 女String gender emp.getGender();if(1.equals(gender)){emp.setGender(男);}else if(2.equals(gender)){emp.setGender(女);}//处理job - 1: 讲师, 2: 班主任 , 3: 就业指导String job emp.getJob();if(1.equals(job)){emp.setJob(讲师);}else if(2.equals(job)){emp.setJob(班主任);}else if(3.equals(job)){emp.setJob(就业指导);}});return empList;} }5.2.3 控制层 接收前端发送的请求对请求进行处理并响应数据 RestController public class EmpController {//业务层对象private EmpService empService new EmpServiceA();RequestMapping(/listEmp)public Result list(){//1. 调用service层, 获取数据ListEmp empList empService.listEmp();//3. 响应数据return Result.success(empList);} }5.3 分层解耦 5.3.1 耦合问题 内聚软件中各个功能模块内部的功能联系。 耦合衡量软件中各个层/模块之间的依赖、关联的程度。 软件设计原则高内聚低耦合。 高内聚一个模块中的代码各个代码块之间关系越紧密则内聚性越高。 低耦合软件中各个层、模块之间的依赖相互关联性越低则耦合度越低。 5.3.2 解耦思路 解决思路 提供一个容器容器中存储一些对象(例EmpService对象)controller程序从容器中获取EmpService类型的对象 解耦操作 控制反转[ Inversion Of Control ]简称IOC。对象的创建控制权由程序自身转移到外部容器这种思想称为控制反转。 对象的创建权由程序员主动创建转移到容器(由容器创建、管理对象)。这个容器称为IOC容器或Spring容器 依赖注入[ Dependency Injection ]简称DI。容器为应用程序提供运行时所依赖的资源称之为依赖注入。 程序运行时需要某个资源此时容器就为其提供这个资源。 例EmpController程序运行时需要EmpService对象Spring容器就为其提供并注入EmpService对象 5.4 IOC DI 5.4.1 Bean的声明IOC ICO 容器管理IOC控制反转就是将对象的控制权交给Spring的IOC容器由IOC容器创建及管理对象。IOC容器创建的对象称为bean对象。 把某个对象交给IOC容器管理需要在类上添加一个注解Component 注解说明位置Component声明bean的基础注解全部类通用注解除控制类ControllerComponent的衍生注解标注在控制器类上ServiceComponent的衍生注解标注在业务逻辑类上RepositoryComponent的衍生注解标注在数据访问类上由于与mybatis整合用的少 注 RestController Controller ResponseBody声明bean的时候可以通过value属性指定bean的名字如果没有指定默认为类名首字母小写。使用以上四个注解都可以声明bean但是在springboot集成web开发中声明控制器bean只能用Controller。 5.4.2 组件扫描IOC Bean 想要生效还需要被组件扫描。 // 使用四大注解声明的 Bean要想生效还需要被组件扫描注解 ComponentScan 扫描 ComponentScan(dao, com.Jiacheng) SpringBootApplication public class SprintBootWebObjectApplication {public static void main(String[] args) {SpringApplication.run(SprintBootWebObjectApplication.class, args);} }注不推荐组件扫描按照 SprintBoot 项目结构创建目录即可 5.4.3 DI 依赖注入IOC容器要为应用程序去提供运行时所依赖的资源而资源指的就是对象。 // 依赖注入Autowired注解按照类型进行自动装配。 Autowired private EmpService empService;依赖冲突在 IOC 容器中存在多个相同类型的 Bean 对象程序运行会报错。 注解说明位置Autowired按照类型自动装配 Bean 对象类内Primary让当前类的 Bean 生效类上Qualifier(“serviceA”)指定注入的 Bean 对象搭配Autowired类内Resource(name “serviceB”)按照 Bean的名称进行注入类内 // 1.Autowired 注入 Autowired private EmpService empService;// 2.Primary 注入 Primary public class EmpServiceA implements EmpService {}// 3.Qualifier() 注入指定当前要注入的bean对象 Autowired Qualifier(empServiceA) private EmpService empService;// 4.Resource() 注入 Resource(name empServiceB) private EmpService empService;面试题 Autowird 与 Resource的区别 Autowired 是spring框架提供的注解而Resource是JDK提供的注Autowired 默认是按照类型注入而Resource是按照名称注入

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

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

相关文章

音乐设计网站推荐河南工程招标网站

现代城市作为一个复杂系统,牵一发而动全身,城市化进程中产生新的矛盾和社会问题都会影响整个城市系统的正常运转。智慧城市是应对这些问题的策略之一。城市工作要树立系统思维,从构成城市诸多要素、结构、功能等方面入手,系统推进…

网站seo优化技术入门wordpress 点赞分享

在windows环境下修改pip镜像源的方法(以python3为例) 1.在windows文件管理器中,输入 %APPDATA% 2.会定位到一个新的目录下,在该目录下新建pip文件夹,然后到pip文件夹里面去新建个pip.ini文件 3.在新建的pip.ini文件中输入以下内容,搞定 [glob…

响应式网站 分辨率正规的创业商机网

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 优质视频课程:AAOS车载系统+AOSP…

SEO案例网站建设wordpress调用当前分类名称

在JDK6及之前,使用永久代来实现方法区,字符串常量池(StringTable)是在永久代(方法区)中的,但是方法区的回收效率不高,在Full GC时才会回收。 在JDK7中,将字符串常量池转移到了堆中,分配在年轻代和老年代中。…

荥阳郑州网站建设在自己的网站上怎么做淘宝客

目录 Web APIAPI 简介函数 API 的使用基于 API 实现一些功能 Web API 1. Web API & API API 简介 1. 作为开发中的一组工具,系统预先定义的函数(方法),函数 1. 函数具有独立性 2. 方法是属于某个对象,某个对象的…

网站建设制作 南京公司wordpress 激活

文章目录 连连看小游戏:用Python Tkinter打造的精彩游戏体验游戏简介技术背景MainWindow类:职责:方法:Point类: 主执行部分:完整代码:总结: 连连看小游戏:用Python Tkinter打造的精彩游戏体验 在丰富多彩的游戏世界中&#xff0c…

唐山网站设计最专业的微网站开发

类  /  对象 【《快学Scala》笔记】 一、类 1、Scala中的类是公有可见性的,且多个类可以包含在同一个源文件中; 1 class Counter{ 2 private var value 0  //类成员变量必须初始化,否则报错 3 4 def increment(){ //类中的…

如何给网站添加搜索关键字论坛网站建设用工具软件

概述 根据硬件摩尔定律,硬件成本随时间越来越低,性能较之前越来越高,尤其是随着pcie全闪灯普及,理论上作为云服务的基础设施,存储应该越来越便宜。然而,购置商用sds产品的成本却一直居高不下,越…

忘记网站后台用户名好动词做的网站能行吗

联合体 联合体的创建 联合体的关键字是union union S {char a;int i; };除了关键字和结构体不一样之外,联合体的创建语法形式和结构体的很相似,如果不熟悉结构体的创建,可以看一下我上一篇的博客关于结构体知识的详解。 联合体的特点 联合…

单页网站源码下载水墨背景风格企业网站模板

参考链接: hooks:pre_get_sources_script 功能简介 hooks:pre_get_sources_script 是gitlab CICD中的一个功能,该功能可以指定在克隆 Git 仓库和任何子模块之前要在执行器上执行的某些命令。例如: 调整 Git 配置导出跟踪变量 下来简单给…

网站开发人员工具下载视频html在线编辑

简介 之前的文章我们讲了count排序,但是count排序有个限制,因为count数组是有限的,如果数组中的元素范围过大,使用count排序是不现实的,其时间复杂度会膨胀。 而解决大范围的元素排序的办法就是基数排序。 基数排序…

我想创建一个网站外国教程网站有哪些

JavaScript中有很多用于操作数组的内置函数。以下是一些常用的数组函数: 1. Array.prototype.push(): 向数组末尾添加一个或多个元素,并返回新数组的长度。 2. Array.prototype.pop(): 删除并返回数组的最后一个元素。 3. Array.prototype.unshift(): 向…

陕西企业网站建设哪家好如何做阿里巴巴网站

EBSE专题连载共分为“五个”篇章。此文为该连载系列的“第四”篇章,在之前的“篇章(三)”中已经结合具体研究实践阐述了“步骤二,通过系统调研确定改进方案”等内容。那么,在本篇章(四)中&#…

怎么建立企业网站平台网站建设项目进度表

个人记录 Gitee创建账号 以KS进销存系统为例,下载到本地电脑解压。 新建私有仓库 仓库名称:ks-vue3,选择‘私有’ 本地配置 下载安装git配置git 第一次配置可以在本地目录右键【Open Git Bash here】输入【Git 全局设置】再输入【创…

2015百度竞价单页面网站模板源码设计中国铁路保险网站

目录 一.ChatGPT的发展历程 二.Attention is all you need 三.对于GPT-4的智能水平评估 四.大语言模型的技术演化 1.从符号主义到连接主义 2.特征工程 2.1数据探索 2.2数据清洗 2.3数据预处理 2.3.1无量纲化 2.3.1.1标准化 2.3.1.2区间缩放法 2.3.1.3标准化与归一…

国内做优秀的农业信息网站金属材料东莞网站建设

字符串类的charAt() 方法可返回指定位置的字符。 stringObject.charAt(index)从键盘输入获取了一个字符串,将其数据类型转换为字符型。 Scanner scan new Scanner(System.in); String str scan.next(); char ca str.charAt(0);示例: import java.u…

长春网站建设公司哪个好专业建站培训

树莓派2代的Model B采用Broadcom BCM2836 900MHz的四核SoC,1GB内存,是新一代开拓者,兼容1代B。相比之下,树莓派2的性能比1代提升6倍,内存翻了一番。Raspberry Pi 2不仅能跑全系列ARM GNU/Linux发行版,而且支…

ps网站首页效果图实例创意营销策划案例

C 实现 定义以下三个类; 狼类(Wolf):成员变量姓名:stringName,成员变量爪子锋利度:intShape,成员函数:voidPrintStateO,按照姓名、爪子锋利度格式输出两个成员变量的值。←人类(Human):成员变量姓名:stringName,成员变量智力:intIntell,成员函…

高埗做网站做h5的网站页面设计

终于搞定了Jmeter跨线程组之间传递参数,这样就不用每次发送请求B之前,都需要同时发送一下登录接口(因为同一个线程组下的请求是同时发送的),只需要发送一次登录请求,请求B直接用登录请求的参数即可,直到登录接口的参数…

网站微营销公司哪家好网站找谁做

Alibaba分布式事务组件Seata实战 事务 本地事务 对于操作单一数据库的场景下的事务,ACIO特性是数据库直接支持的 分布式事务 在分布式情况下,需要的操作资源分布在多个资源服务上,而应用需要保证对于多个资源服务器的数据操作要么全部成…