什么是框架?为什么要学框架?
一、什么是框架
框架是整个或部分应用的可重用设计,是可定制化的应用骨架。它可以帮开发人员简化开发过程,提高开发效率。
项目里有一部分代码:和业务无关,而又不得不写的代码==>框架
项目里剩下的部分代码:实现业务功能需要的逻辑代码
简而言之,框架是一个应用系统的半成品,开发人员在框架的基础上,根据业务需求开发功能。即:别人搭台,你唱戏。
二、为什么要学框架
三、框架优点展示(SpringBoot VS Servlet)
1. 无需配置 Tomcat ,点击 “ 运行 ” 按钮就可以运行项目, Spring Boot 内置了 Web 容器(可直接运行)。2. 快速添加外部 jar 包。3. 快速发布项目(使用 java -jar 方式就可以发布)。4. 对象自动装配。5. ......
3.1 Servlet 项目开发
3.1.1 创建项目
3.1.2 添加引用
打开 https://mvnrepository.com 搜索 servlet 添加框架应用到 pom.xml 中,如下图所示:
PS:其中还需要注意使用的版本号
在项目中右键添加“源代码”文件夹,如下图所示:
3.1.3 添加业务代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"
metadata-complete="true">
<servlet>
<servlet-name>user</servlet-name>
<servlet-class>UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>user</servlet-name>
<url-pattern>/user</url-pattern>
</servlet-mapping>
</web-app> public class User {
private Integer id;
private String name;
private Integer age;
private String password;
// 其他属性...
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return String.format("{id:%d,name:%s,age:%d,password:%s}",
id,name,age,password);
}
} import java.io.IOException;
public class UserServlet extends javax.servlet.http.HttpServlet {
protected void doPost(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response) throws
javax.servlet.ServletException, IOException {
this.doGet(request,response);
}
protected void doGet(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response) throws
javax.servlet.ServletException, IOException {
User user = new User();
user.setId(Integer.parseInt(request.getParameter("id")));
user.setName(request.getParameter("name"));
user.setAge(Integer.parseInt(request.getParameter("age")));
user.setPassword(request.getParameter("password"));
// 获取其他字段.....
System.out.println(user.toString());
response.setContentType("text/html");
response.getWriter().println(user.toString());
}
} 3.1.4 运行项目(配置tomcat)

1. 添加外部 jar 不方便,容易出错,比如添加了一个不匹配的外部 jar 版本;2. 运行和调试的时候需要配置 tomcat 不方便;3. 发布不方便, servlet 项目必须依靠外置的 tomcat (外置的 web 容器)运行。4. 路由配置不方便,一个访问地址对应一个 Servlet 类。
3.2 SpringBoot 项目开发
3.2.1 创建并添加引用
选择 SpringBoot 版本和添加外部引用:
3.2.2 添加代码并运行程序
import lombok.Data;
@Data
public class User {
private Integer id;
private String name;
private Integer age;
private String password;
} import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/user")
@RestController
public class UserController {
@RequestMapping("/add")
public String add(User user){
return user.toString();
}
}
3.2.3 发布程序
使用 jar -jar xxx.jar 直接发布程序:

3.2.4 SpringBoot VS Servlet
四、怎么学框架?
- 先从基础框架 Spring 开始(工具箱)
- Spring Boot 快速开发 Spring 脚手架
- MyBatis 快速操作数据库
- 其他:日志、事务、拦截器....
四、框架学习中的难点
相关文章:
什么是框架?为什么要学框架?
一、什么是框架 框架是整个或部分应用的可重用设计,是可定制化的应用骨架。它可以帮开发人员简化开发过程,提高开发效率。 项目里有一部分代码:和业务无关,而又不得不写的代码>框架 项目里剩下的部分代码:实现业务…...
什么是 Sass?
Sass 介绍 什么是 Sass? 官方标语 世界上最成熟、最稳定、最强大的专业级 CSS 扩展语言。怎么理解这句话呢?我们平时写的 CSS 代码可以理解为静态样式语言,而 Scss 就是动态样式语言,何为动态?就是让你写 CSS 跟写 …...
Kotlin~Memento备忘录模式
概念 备忘录模式是一种行为型设计模式,用于捕获和存储对象的内部状态,并在需要时将对象恢复到之前的状态。 备忘录模式允许在不暴露对象内部实现细节的情况下,对对象进行状态的保存和恢复。 角色介绍 Originator:原发器&#x…...
单链表的多语言表达:C++、Java、Python、Go、Rust
单链表 是一种链式数据结构,由一个头节点和一些指向下一个节点的指针组成。每个节点包含一个数据元素和指向下一个节点的指针。头节点没有数据,只用于表示链表的开始位置。 单链表的主要操作包括: 添加元素:在链表的头部添加新…...
微信小程序 background-image直接设置本地图片路径,编辑器正常显示,真机运行不显示解决方法
项目场景 微信小程序,设置background-image直接设置本地图片路径。 问题描述 编辑器正常显示,真机运行不显示 原因分析 background-image只能用网络url或者base64图片编码。 解决方案 1、将本地图片转为网络url后设置到background-image上 例如&…...
SQLite Studio 连接 SQLite数据库
1、在SQLite中创建数据库和表 1.1、按WINR,打开控制台,然后把指引到我们的SQLite的安装路径,输入D:,切换到D盘,cd 地址,切换到具体文件夹,输入“sqlite3”,启动服务 1.2、创建数据库…...
【业务功能篇58】Springboot + Spring Security 权限管理 【中篇】
4.2.3 认证 4.2.3.1 什么是认证(Authentication) 通俗地讲就是验证当前用户的身份,证明“你是你自己”(比如:你每天上下班打卡,都需要通过指纹打卡,当你的指纹和系统里录入的指纹相匹配时&…...
Docker挂载目录失败问题解决
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
css中隐藏页面中某一个元素有什么方法?
我们可以使用css的z-index属性,将元素的-index去给它设置一个负值,使它隐藏在其他元素的后面。使用css样式进行隐藏我们可以使用display这个属性。(1)使用display:none完全进行隐藏元素,并且不占据空间也不会影响页面布…...
Unity 多语言问题C#篇
DateTime.ToString()不同语言环境问题 问题描述:PlayerPrefs.SetString("timeKey", DateTime.Now.ToString());切换系统语言后DateTime.Parse(PlayerPrefs.GetString("timeKey"));报错FormatException: String was not recognized as a valid D…...
深度学习和神经网络
人工神经网络分为两个阶段: 1 :接收来自其他n个神经元传递过来的信号,这些输入信号通过与相应的权重进行 加权求和传递给下个阶段。(预激活阶段) 2:把预激活的加权结果传递给激活函数 sum :加权 f:激活…...
在CSDN学Golang云原生(Kubernetes Volume)
一,Volume 与 configMap Kubernetes 中的 Volume 和 ConfigMap 都是 Kubernetes 中常用的资源对象。它们可以为容器提供持久化存储和配置文件等。 Volume 可以将容器内部的文件系统挂载到宿主机上,也可以将多个容器间共享一个 Volume,并且 …...
第十五章 友元 异常和其他
RTTI RTTI是什么 RTTI是运行阶段类型识别,通过运行时类型识别,程序能够使用基类的指针或者引用来检查这些指针或者引用所指向的对象的实际派生类型。 RTTI的三个元素 dynamic_cast运算符 dynamic_cast概念: dynamic_cast运算符能够将基…...
制作DBC文件
DBC文件是CAN通讯的密码本,Matlab的SimuLink中常用DBC作为CAN通讯的解析桥梁 制作DBC文件,内容是转速、位置&…...
【1.1】Java微服务:初识微服务
✅作者简介:大家好,我是 Meteors., 向往着更加简洁高效的代码写法与编程方式,持续分享Java技术内容。 🍎个人主页:Meteors.的博客 💞当前专栏: 微服务 ✨特色专栏: 知识分享 &#x…...
数据结构--串、数组、广义表
这里写目录标题 串定义案例引用串的类型定义以及存储结构抽象类型定义存储结构(顺序表较为常用)顺序存储结构链式存储结构 串的模式匹配算法(查找主串中是否有某个字串)BF算法KMP算法设计思想对字串的回溯进行了优化代码对next【j】进行优化 数组类型一维…...
白银挑战——链表高频面试算法题
算法通关村第一关–链表白银挑战笔记 开始时间:2023年7月18日14:39:36 链表 Java中定义一个链表 class ListNode {public int val;public ListNode next;ListNode(int x) {val x;next null;}}1、四种方法解决两个链表第一个公共子节点 解释一下什么是公共节点 如…...
海外腾讯云账号:腾讯云高性能计算平台 THPC
高性能计算平台(TencentCloud High Performance Computing,THPC)是一款腾讯云自研的高性能计算资源管理服务,集成腾讯云上的计算、存储、网络等产品资源,并整合 HPC 专用作业管理调度、集群管理等软件,向用…...
eclipse 最新版没有navigator视图如何解决
使用project exploere视图可以显示类似navigator视图 1.显示project exploere视图 window---->show view --->project exploere 2.project exploere视图转换为类似navigator视图 第一步:点击视图右上角三个点或者倒三角,点击fiters and custom…...
Zynq-Linux移植学习笔记之62- PL挂载复旦微flash
1、背景介绍 现在为了全国产化需要,之前所有的进口flash全部要换成国产flash 2、复旦微flash型号 其中EFM25QU256和EFM25QL256对标winbond的w25q256 nor flash 3、FPGA设置 复旦微flash只支持单线模式,当使用PL侧的IP核访问时,需要设置模式…...
OpenClaw跨平台同步:Qwen3.5-9B维护多设备代码仓库
OpenClaw跨平台同步:Qwen3.5-9B维护多设备代码仓库 1. 多设备开发的痛点与解决方案 作为一名自由职业开发者,我经常需要在不同设备间切换工作——家里的台式机、咖啡馆的笔记本、客户现场的平板。最让我头疼的是代码版本管理:在A设备修改的…...
基于Qwen3-VL-8B-Instruct-GGUF的C++高性能推理服务开发
基于Qwen3-VL-8B-Instruct-GGUF的C高性能推理服务开发 如果你正在寻找一种方法,把强大的多模态AI模型集成到自己的应用里,同时还要保证高性能、低延迟,那么用C来开发推理服务是个不错的选择。今天咱们就来聊聊,怎么用C为Qwen3-VL…...
万象视界灵坛实操手册:使用Prometheus+Grafana监控CLIP推理延迟、GPU利用率、QPS指标
万象视界灵坛实操手册:使用PrometheusGrafana监控CLIP推理延迟、GPU利用率、QPS指标 1. 监控系统概述 在现代AI应用部署中,实时监控系统性能指标是确保服务稳定运行的关键。对于万象视界灵坛这样的多模态智能感知平台,我们需要重点关注三个…...
intv_ai_mk11惊艳效果展示:Llama中型模型在中文解释说明任务中的表现
intv_ai_mk11惊艳效果展示:Llama中型模型在中文解释说明任务中的表现 1. 模型核心能力概览 intv_ai_mk11作为基于Llama架构的中等规模文本生成模型,在中文解释说明任务中展现出令人印象深刻的能力。这个开箱即用的解决方案特别适合需要清晰、准确表达的…...
假芯片识别与防范:工程师实战指南
1. 假芯片泛滥:半导体行业的隐秘危机最近在调试一块电路板时,我发现一个奇怪的现象:明明使用的是同型号的MCU,但部分板子的功耗异常偏高。经过一周的排查,最终发现问题出在芯片上——我们采购到了一批"套牌"…...
3步搞定飞书文档批量导出:告别手动复制粘贴的终极解决方案
3步搞定飞书文档批量导出:告别手动复制粘贴的终极解决方案 【免费下载链接】feishu-doc-export 飞书文档导出服务 项目地址: https://gitcode.com/gh_mirrors/fe/feishu-doc-export 还在为飞书文档的迁移备份而烦恼吗?每次需要导出几十上百个文档…...
OpenClaw飞书机器人实战:Qwen2.5-VL-7B多模态对话集成
OpenClaw飞书机器人实战:Qwen2.5-VL-7B多模态对话集成 1. 为什么选择OpenClaw飞书Qwen2.5-VL组合 去年我在团队内部尝试搭建智能助手时,发现现成的SaaS工具要么功能受限,要么需要将敏感数据上传到第三方服务器。直到遇到OpenClaw这个开源框…...
基于机器学习算法的亚马逊用户评论情感分析研究:深入探讨随机森林与决策树模型的应用及其实验评估
《基于随机森林和决策树的亚马逊用户评论情感分析研究》深入探讨了利用机器学习技术对亚马逊用户评论数据进行情感分析的方法,旨在为电商企业提供更精准的用户反馈处理工具,以辅助产品优化和服务改进 通过采用决策树模型和随机森林模型这两种不同的机器学…...
基于Matlab的多自由度轴承静刚度计算之旅
基于Matlab的多自由度轴承静刚度计算 因分析静态下刚度结果,仅考虑重力作用,未考虑离心力的作用 深沟球轴承和圆锥轴承基本参数包括滚珠数量、滚珠直径、中称直径、曲率和材料参数 程序已调通,可直接运行在机械工程领域,深入了解轴…...
电源防反接电路设计与工程实践
1. 电源防反接电路的必要性在工业自动化和嵌入式系统设计中,电源接反是一个常见但危害极大的问题。不同于消费电子产品使用标准化接口,许多工业设备需要现场接线,操作人员稍有不慎就可能接错电源极性。我曾参与过一个煤矿监控系统的项目&…...
