课程内容c1 c2

This commit is contained in:
many2many 2024-08-06 21:38:19 +08:00
parent d3b5016840
commit 08b0b0d28c
13 changed files with 454 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.idea

179
docs/chapter01.md Normal file
View File

@ -0,0 +1,179 @@
## 1. Web应用开发概述
### 1.1 Web开发的基本概念 (了解)
#### 什么是Web应用
> Web App 是基于 Web 技术开发的应用程序用户可以通过浏览器访问和使用而无需下载和安装。Web App 可以在不同的设备和平台上运行无需针对不同的操作系统进行开发和维护具有较好的跨平台兼容性。Web App 通常使用 HTML、CSS、JavaScript 等 Web 技术进行开发,可以访问互联网上的各种资源和服务。
#### Web App 的优点
- **跨平台兼容性好:** Web App 可以在不同的设备和平台上运行,无需针对不同的操作系统进行开发和维护,具有较好的跨平台兼容性。
- **开发成本低:** Web App 的开发成本相对较低,因为无需针对不同的操作系统进行开发和维护,可以使用 Web 技术进行开发。
- **维护成本低:** Web App 的维护成本相对较低,因为可以在服务器端进行维护和更新,无需对每个设备进行更新。
- **更新和发布灵活:** Web App 的更新和发布较为灵活,可以通过 Web 服务器进行发布和更新,无需通过应用商店进行审核和等待。
- **无需下载和安装:** Web App 可以通过浏览器直接访问和使用,无需下载和安装,使用较为方便。
- **易于扩展和集成:** Web App 可以轻松地集成和扩展各种 Web 服务和 API例如社交网络、在线支付、地图服务等。
#### Web App 的缺点
- **性能和用户体验相对较差:** Web App 受限于浏览器的性能和功能,因此性能和用户体验相对较差,特别是在移动设备上。
- **依赖网络连接:** Web App 需要依赖网络连接进行访问和使用,如果网络连接不稳定或者断开,用户无法继续使用应用程序。
- **难以实现离线体验:** Web App 难以实现离线体验,因为需要依赖网络连接进行访问和使用。
- **安全性和隐私保护问题:** Web App 可能存在安全性和隐私保护问题,因为需要使用网络进行数据传输和处理。
- **受限于浏览器:** Web App 受限于浏览器的功能和规范,因此开发者需要考虑浏览器的兼容性和规范。
#### web应用工作流
![](./resources/web-flow.png)
### 1.2 Web开发技术发展历史及趋势
#### Web技术发展历程
- **参考资料:**
- [五分钟了解互联网Web技术发展史](https://cloud.tencent.com/developer/article/1808394)
- [Web开发技术发展历史](https://www.cnblogs.com/datapool/p/6218105.html)
#### 当前Web开发的主要技术栈
- **前端技术栈:**
- **HTML5** 提供了更丰富和语义化的标记,增强了多媒体支持。
- **CSS3** 支持更复杂的样式和动画效果,提高网页美观度。
- **JavaScript** 用于增加交互性和动态功能。
- **TypeScript** JavaScript的超集提供了静态类型检查和面向对象编程特性有助于构建大型应用程序。
- **前端构建工具:** 如Webpack、Gulp等用于自动化前端开发流程包括编译、压缩、测试等。
- **前端框架/库:** React、Vue 和 Angular 是最流行的框架,它们提供了一套完整的解决方案来构建用户界面。
- **后端技术栈:**
- **Java** 广泛应用于企业级应用开发Spring Boot 和 Spring Cloud 是流行的微服务架构框架。
- **Python** 常用于数据处理和科学计算领域Django 和 Flask 是常用的Web框架。
- **Node.js** 用于构建高性能的实时应用Express 是一个流行的服务器框架。
- **.Net** Microsoft的.NET Framework 和 .NET Core 提供了一个强大的平台来构建高性能Web应用和服务。
- **RESTful API设计** 提供了一种标准的方式来设计和实现API。
- **数据库技术:**
- **关系型数据库:** 如MySQL、PostgreSQL等适用于复杂查询和事务处理。
- **NoSQL数据库** 如MongoDB、Redis等适用于大数据量和高并发场景。
- **云数据库服务:** 如Amazon RDS、Google Cloud SQL等提供托管式的数据库服务。
- **工具及服务软件:**
- **服务器:** 例如 Apache、Nginx、Tomcat 等。
- **代码编辑器:** 例如 IntelliJ IDEA、Eclipse、VS Code 等。
- **调试工具:** 例如 Chrome DevTools、Firebug 等。
- **版本控制工具:** 例如 Git、SVN 等。
#### 未来的Web开发技术趋势预测
- **持续集成与部署CI/CD** 更加自动化的工作流程将会成为常态,以提高开发效率和软件质量。
- **微服务架构:** 微服务将继续流行,因为它提高了系统的可扩展性和可维护性。
- **容器化技术:** Docker 和 Kubernetes 等技术将更加普及,用于部署和管理应用。
- **无服务器架构Serverless** 减少运维负担,专注于业务逻辑的编写。
- **人工智能和机器学习:** AI 和 ML 将被更广泛地应用于Web应用中以增强用户体验和自动化后台任务。
- **隐私和安全:** 隐私保护技术和加密方法将成为开发过程中的重点。
### 1.3 什么是Java Web开发(了解)
> Java Web开发是指使用Java语言来构建和维护可以在Web浏览器上运行的应用程序的过程。这些应用程序通常由服务器端组件和客户端组件组成服务器端负责处理业务逻辑并提供数据给客户端而客户端则负责显示数据并允许用户与之交互。
- **Java Web开发的主要组成部分**
- **服务器端技术:** 包括Servlets、JSP (Java Server Pages)、JavaBeans、EJB (Enterprise JavaBeans)、Spring框架等。
- **客户端技术:** 主要是HTML、CSS和JavaScript用于构建用户界面; 前端框架如Angular、React、Vue.js等。
- **中间件:** 如Servlet容器例如Tomcat、应用服务器例如WildFly、GlassFish等。
- **数据库技术:** 用于存储和检索数据包括关系型数据库如MySQL、PostgreSQL和NoSQL数据库如MongoDB、Redis等。
- **Java Web应用的特点和优势**
- **可移植性:** Java Web应用可以轻松地在不同的操作系统上运行无需修改源代码。
- **平台无关性:** Java Web应用可以通过Java虚拟机JVM在任何支持Java的平台上运行。
- **安全性:** Java提供了强大的安全模型包括沙箱机制、权限管理和加密支持。
- **强大的生态系统:** Java拥有庞大的开发者社区和丰富的开源库这使得开发高质量的Web应用更加容易。
### 1.4 开发环境搭建 (掌握)
- **IntelliJ IDEA**
- **IntelliJ IDEA的安装与配置**
- 下载IntelliJ IDEA Community Edition或Ultimate Edition。
- 安装并设置JDK路径。
- 配置IDEA设置如字体、颜色主题等。
- **创建Java Web项目**
- 使用New Project向导选择Java Web模板。
- 设置项目名称、位置和模块结构。
- 添加必要的依赖如Servlet API、Spring框架等。
- **配置项目依赖**
- 使用Gradle或Maven作为构建工具。
- 添加外部库和框架依赖。
- **Git/Gitee/Github的使用(重点掌握)**
> 参考 [git(ppt)](./resources/javaweb%20-week-01-git.pptx)
>
> 更多参考[菜鸟教程](https://www.runoob.com/git/git-tutorial.html)
- **版本控制的概念**
- 版本控制系统是一种记录文件和目录更改的软件,以便可以恢复旧版本。
- **Git的基本命令**
- `git init`: 初始化一个新的本地仓库。
- `git clone`: 克隆一个远程仓库。
- `git add`: 将文件添加到暂存区。
- `git commit`: 提交更改到仓库。
- `git push`: 将本地更改推送到远程仓库。
- **Gitee/Github账号注册与仓库创建**
- 注册账号并创建一个新的仓库。
- 设置仓库的描述、许可证和README文件。
- **项目初始化与提交**
- 将本地文件添加到仓库并提交。
- 推送至远程仓库。
- **Markdown的使用掌握**
> 参考
>> [Markdown语法](https://www.markdownguide.org/basic-syntax/)
>> [Markdown 基本语法(中文)](https://markdown.com.cn/basic-syntax/)
- **Markdown语法简介**
- Markdown是一种轻量级的标记语言用于编写易于阅读的纯文本格式文档。
- 基本语法包括标题、列表、链接、图像等。
- **使用Markdown编辑器**
- 推荐使用IntelliJ IDEA、VS Code、Typora等编辑器。
- 集成实时预览功能方便查看Markdown文档的效果。
- **文档编写与格式化**
- 撰写清晰、简洁的文档,使用合适的标题层次结构。
- 插入代码片段、表格和其他元素以增强文档的可读性。
### 1.4 项目开发流程简单介绍(了解)
- **需求分析与设计**
- **用户需求调研**
- 与客户沟通明确项目目标。
- 收集用户故事和用例。
- **功能需求分析**
- 分析用户故事,确定功能需求。
- 列出关键特性和功能。
- **架构设计与技术选型**
- 设计系统的整体架构。
- 选择合适的技术栈和技术方案。
- **编码与调试**
- **代码编写规范**
- 遵循一致的命名规则和代码风格。
- 使用适当的注释。
- **单元测试与集成测试**
- 编写单元测试以验证函数的正确性。
- 执行集成测试以确保不同组件之间协同工作。
- **调试技巧**
- 使用断点和日志输出进行调试。
- 利用IDE的调试工具。
- **测试与发布**
- **自动化测试工具**
- 使用JUnit、TestNG等框架进行单元测试。
- 使用Selenium进行UI自动化测试。
- **部署流程**
- 使用持续集成/持续部署CI/CD工具如Jenkins、GitLab CI/CD。
- 配置自动构建、测试和部署管道。
- **监控与性能优化**
- 使用工具如Prometheus、Grafana监控系统性能。
- 根据监控数据调整系统配置。
- **维护与升级**
- **软件维护周期**
- 定期检查和修复已知问题。
- 实施新功能和改进。
- **版本管理与发布策略**
- 使用语义版本控制。
- 制定明确的发布计划和时间表。
- **用户反馈与迭代改进**
- 收集用户反馈,评估用户体验。
- 根据反馈进行迭代改进。

104
docs/chapter02.md Normal file
View File

@ -0,0 +1,104 @@
## 2. Java Web基础回顾和增强
### 2.1 HTTP协议(重点掌握)
推荐阅读 [《图解http》读书笔记](https://juejin.cn/post/6903526294806331400) [pdf下载](./resources/《图解http》读书笔记%20-%20掘金.pdf)
[PPT](./resources/HTTP协议-黑马.pptx)
#### 浏览器与Web服务器的工作流程
- **请求过程:** 用户在浏览器中输入URL地址后浏览器向服务器发送HTTP请求。
- **响应过程:** 服务器接收到请求后处理并返回HTTP响应给浏览器。
- **交互细节:** 包括DNS解析、建立TCP连接、发送HTTP请求、接收HTTP响应、关闭连接等步骤。
#### HTTP请求与响应结构
- **请求行:** 包含方法、URL、HTTP版本。
- **请求头:** 包含客户端信息、认证信息等。
- **请求体:** 包含POST请求的数据。
- **响应行:** 包含HTTP版本、状态码、状态消息。
- **响应头:** 包含服务器信息、缓存控制等。
- **响应体:** 包含服务器返回的数据。
#### URL
- **构成:** 协议、主机名、端口号、路径、查询字符串。
- **示例:** `https://example.com/path/to/resource?param1=value1&param2=value2`
#### HTTP方法
- **GET** 请求指定的页面信息并将其返回。
- **POST** 向指定资源提交数据进行处理请求(例如提交表单)。
- **PUT** 从客户端向服务器发送新的数据,并要求服务器覆盖原位置上的数据。
- **DELETE** 请求服务器删除指定的页面。
#### HTTP状态码
- **2xx 成功:** 请求已成功被服务器接收、理解,并接受。
- **200 OK** 请求已成功,请求所希望的响应头或数据体将随此响应返回。
- **3xx 重定向:** 需要客户端采取进一步的操作才能完成请求。
- **301 Moved Permanently** 请求的资源已被永久移动到新位置。
- **302 Found** 服务器目前从不同位置的资源响应请求,但请求者应继续使用原有位置来进行以后的请求。
- **4xx 客户端错误:** 请求包含语法错误或无法完成请求。
- **400 Bad Request** 服务器不理解请求的语法。
- **401 Unauthorized** 请求要求用户的身份认证。
- **403 Forbidden** 服务器理解请求客户端的请求,但是拒绝执行此请求。
- **404 Not Found** 请求失败,请求所希望得到的资源未被在服务器上发现。
- **5xx 服务器错误:** 服务器在处理请求的过程中发生了错误。
- **500 Internal Server Error** 服务器遇到某种不可预知的情况。
- **503 Service Unavailable** 由于临时的服务器维护或者过载,服务器当前无法处理请求。
#### Cookie和Session
- **Cookie**
- 存储在客户端的小型文本文件,用于跟踪用户状态。
- 可以设置有效期、路径、域名、安全标志等属性。
- **Session**
- 服务器端用来跟踪用户状态的一种机制。
- Session 通常使用Cookie来传递Session ID。
- 服务器通过Session ID来查找与特定用户相关的数据。
### 2.2 HTML/CSS/JavaScript基础
[PPT](./resources/网页开发基础-黑马.pptx)
#### HTML5基础知识 (掌握)
- **标签与属性:** HTML5引入了新的语义标签如`<header>`、`<nav>`、`<section>`、`<article>`等。
- **表单控件:** 新增了多种类型的输入字段,如日期选择器、电子邮件验证等。
- **媒体元素:** `<video>`和`<audio>`标签用于嵌入多媒体内容。
- **离线存储:** `localStorage`和`sessionStorage`提供了持久化的存储能力。
- **拖放API** 支持文件的拖放操作。
- **Canvas绘图** `<canvas>`标签用于绘制图形和动画。
#### CSS3样式和布局 (了解)
- **选择器:** 更强大的选择器,如属性选择器、伪类选择器等。
- **盒模型:** 支持`box-sizing`属性来控制元素的尺寸计算方式。
- **背景与边框:** 圆角边框、阴影、渐变背景等。
- **文字效果:** 文字阴影、多列布局等。
- **布局:** 弹性盒子Flexbox和网格布局Grid
- **动画与过渡:** 使用`transition`和`animation`属性创建平滑的视觉效果。
#### JavaScript基本语法和DOM操作掌握)
- **变量声明:** `var`、`let`、`const`。
- **数据类型:** 原始类型(如字符串、数字、布尔值)、复合类型(如数组、对象)。
- **条件语句:** `if`、`else if`、`switch`。
- **循环:** `for`、`while`。
- **函数:** 定义、调用、回调、闭包。
- **DOM操作** 查询节点、创建节点、修改节点、事件处理等。
#### 字符编码和字符集(了解)
[字符编码和字符集PPT](./resources/javaweb-week-02-chartset.pptx)
- **ASCII** 7位编码只能表示128个字符。
- **UTF-8** 基于Unicode的编码兼容ASCII广泛用于Web页面。
- **Unicode** 一种国际字符编码标准,支持世界上几乎所有的字符。
- **UTF-16** Unicode的另一种编码形式JavaScript内部使用UTF-16。
#### 认识TypeScript简单了解
[面向初学者的 TypeScript 完全指南](https://www.freecodecamp.org/chinese/news/learn-typescript-beginners-guide)
[pdf版下载](./resources/面向初学者的%20TypeScript%20完全指南.pdf)
- **TypeScript简介** TypeScript是JavaScript的一个超集它添加了静态类型检查。
- **类型系统:** TypeScript支持多种数据类型如`number`、`string`、`boolean`、`object`、`array`等。
- **接口与类:** TypeScript支持面向对象编程包括类、接口、继承、抽象类等。
- **装饰器:** 一种特殊类型的声明,可以修改类的行为。
- **模块与命名空间:** 用于组织代码结构,避免全局命名冲突。
- **工具与编译:** 使用`tsc`命令将TypeScript代码编译为JavaScript代码。

169
docs/index.md Normal file
View File

@ -0,0 +1,169 @@
## 1. [Web应用开发概述](./chapter01.md)
### 1.1 Web开发的基本概念(了解)
#### 什么是Web应用
#### Web App 的优点
#### Web App 的缺点
### 1.2 Web开发技术发展历史及趋势(了解)
#### Web技术发展历程
#### 当前Web开发的主要技术栈
#### 未来的Web开发技术趋势预测
### 1.3 什么是Java Web开发(了解)
### 1.4 开发环境搭建(掌握)
#### IntelliJ IDEA
#### Git/Gitee/Github的使用(重点掌握)
#### Markdown的使用
### 1.4 项目开发流程简单介绍(了解)
- 需求分析与设计
- 编码与调试
- 测试与发布
- 维护与升级
## 2. [Java Web基础回顾和增强](./chapter02.md)
### 2.1 HTTP协议(重点掌握)
#### 浏览器与Web服务器的工作流程
#### HTTP请求与响应结构
#### URL
#### HTTP方法
#### HTTP状态码
#### Cookie和Session
### 2.2 HTML/CSS/JavaScript基础
#### HTML5基础知识 (掌握)
#### CSS3样式和布局 (了解)
#### JavaScript基本语法和DOM操作掌握)
#### 字符编码和字符集(了解)
#### 认识TypeScript简单了解
### 3. **前端技术**
#### 3.1 前端开发技术趋势介绍
- 前端技术栈的演进
- 前端框架和库的最新趋势
#### 3.2 响应式设计与Bootstrap
- 响应式设计的基本概念
- Bootstrap框架的使用
#### 3.3 AJAX与异步请求处理
- XMLHttpRequest对象的使用
- Fetch API和Promise
- 使用jQuery进行AJAX调用
#### 3.4 JavaScript框架介绍
- Vue.js介绍
- React.js介绍
### 4. **基于Java语言的Web应用的后端开发技术**
#### 4.1 web应用的系统架构介绍
- 系统架构演进单体、c/s、b/s、微服务架构
- 服务器端渲染与客户端渲染
#### 4.2 MVC设计模式
- MVC模式的组成部分
- 视图层、业务逻辑层和数据访问层的职责划分
- 使用MVC模式的优点
#### 4.3 Servlet基础知识
- JavaBean技术
- Servlet接口和生命周期
- HTTP请求的处理流程
- 使用servlet完成简单应用
- Servlet容器的使用:Tomcat、Jetty
#### 4.4 后端模板引擎技术介绍
- JSP的介绍和示例
- Thymeleaf的介绍和示例
- Freemarker介绍
#### 4.6 流行的Java Web开发框架介绍
- Spring
- Micronaut
- Quarkus
### 5. **基于Spring框架的后端应用开发**
#### 5.1 Java基础增强
- 异常处理机制
- 注解的定义和使用
- Optional类的应用
- Stream API进行集合处理
#### 5.2 Spring框架简介
- Spring框架的历史和发展
- Spring的核心特性依赖注入DI和面向切面编程AOP
- Spring框架的主要模块Core Container, Data Access/Integration, Web, AOP, Instrumentation, Messaging, Test
- Spring框架的应用场景和优势
#### 5.3 Spring IoC容器
- Spring Bean的定义和生命周期
- XML和注解方式的Bean配置
- Bean的作用域和装配方式
- 使用Spring管理依赖关系
#### 5.4 Spring MVC
- MVC设计模式回顾
- 控制器Controller的设计原则
- 模型Model和视图View的使用
- 请求映射(@RequestMapping, @GetMapping, @PostMapping 等)
- 数据绑定和表单标签库
- 异常处理和错误页面配置
#### 5.5 Spring AOP
- AOP的基本概念
- 切点Pointcut、连接点Joinpoint、通知Advice等术语
- 使用AspectJ进行切面编程
#### 5.5 Spring事务管理
- 事务管理的基本概念
- Spring事务管理器
### 6. **数据库技术**
#### 6.1 JDBC编程
- JDBC API的基本使用
- 连接池的配置与管理
- SQL注入的预防措施
#### 6.2 ORM框架介绍
- ORM基本概念
- 常见ORM框架介绍JPA、Hibernate、MyBatis等
#### 6.3 NoSQL数据库介绍
- MongoDB介绍
- Redis介绍和使用
### 7. **项目实践**
#### 7.1 分组完成一个完整的Web应用项目
- 项目需求分析与设计
- 功能模块的划分与实现
- 团队合作与任务分配
#### 7.2 使用Git进行版本控制
- Git的基本命令
- 分支管理与合并
- 冲突解决策略
#### 7.3 单元测试与集成测试
- JUnit的基本用法
#### 7.4 部署与运维
- 应用程序的打包与部署
- 日志记录

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
docs/resources/web-flow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

View File

@ -0,0 +1 @@
# 第一章 练习任务