java-web/docs/chapter01.md
2024-09-05 14:46:38 +08:00

179 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 1. 概述
### 1.1 Web开发的基本概念 (了解)
#### 1.1.1 什么是Web应用
> Web App 是基于 Web 技术开发的应用程序用户可以通过浏览器访问和使用而无需下载和安装。Web App 可以在不同的设备和平台上运行无需针对不同的操作系统进行开发和维护具有较好的跨平台兼容性。Web App 通常使用 HTML、CSS、JavaScript 等 Web 技术进行开发,可以访问互联网上的各种资源和服务。
#### 1.1.2 Web App 的优点
- **跨平台兼容性好:** Web App 可以在不同的设备和平台上运行,无需针对不同的操作系统进行开发和维护,具有较好的跨平台兼容性。
- **开发成本低:** Web App 的开发成本相对较低,因为无需针对不同的操作系统进行开发和维护,可以使用 Web 技术进行开发。
- **维护成本低:** Web App 的维护成本相对较低,因为可以在服务器端进行维护和更新,无需对每个设备进行更新。
- **更新和发布灵活:** Web App 的更新和发布较为灵活,可以通过 Web 服务器进行发布和更新,无需通过应用商店进行审核和等待。
- **无需下载和安装:** Web App 可以通过浏览器直接访问和使用,无需下载和安装,使用较为方便。
- **易于扩展和集成:** Web App 可以轻松地集成和扩展各种 Web 服务和 API例如社交网络、在线支付、地图服务等。
#### 1.1.3 Web App 的缺点
- **性能和用户体验相对较差:** Web App 受限于浏览器的性能和功能,因此性能和用户体验相对较差,特别是在移动设备上。
- **依赖网络连接:** Web App 需要依赖网络连接进行访问和使用,如果网络连接不稳定或者断开,用户无法继续使用应用程序。
- **难以实现离线体验:** Web App 难以实现离线体验,因为需要依赖网络连接进行访问和使用。
- **安全性和隐私保护问题:** Web App 可能存在安全性和隐私保护问题,因为需要使用网络进行数据传输和处理。
- **受限于浏览器:** Web App 受限于浏览器的功能和规范,因此开发者需要考虑浏览器的兼容性和规范。
#### 1.1.4 web应用工作流
![](./resources/web-flow.png)
### 1.2 Web开发技术发展历史及趋势
#### 1.2.1 Web技术发展历程
- **参考资料:**
- [五分钟了解互联网Web技术发展史](https://cloud.tencent.com/developer/article/1808394)
- [Web开发技术发展历史](https://www.cnblogs.com/datapool/p/6218105.html)
#### 1.2.2 当前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 等。
#### 1.2.3 未来的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 开发环境搭建 (掌握)
#### 1.4.1 IntelliJ IDEA
- **IntelliJ IDEA的安装与配置**
- 下载IntelliJ IDEA Community Edition或Ultimate Edition。
- 安装并设置JDK路径。
- 配置IDEA设置如字体、颜色主题等。
- **创建Java Web项目**
- 使用New Project向导选择Java Web模板。
- 设置项目名称、位置和模块结构。
- 添加必要的依赖如Servlet API、Spring框架等。
- **配置项目依赖**
- 使用Gradle或Maven作为构建工具。
- 添加外部库和框架依赖。
#### 1.4.2 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`: 将本地更改推送到远程仓库。
- `git pull`: 从远程仓库拉取更改。
- **Gitee/Github账号注册与仓库创建**
- 注册账号并创建一个新的仓库。
- 设置仓库的描述、许可证和README文件。
- **git基本操作练习**
#### 1.4.3 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监控系统性能。
- 根据监控数据调整系统配置。
- **维护与升级**
- **软件维护周期**
- 定期检查和修复已知问题。
- 实施新功能和改进。
- **版本管理与发布策略**
- 使用语义版本控制。
- 制定明确的发布计划和时间表。
- **用户反馈与迭代改进**
- 收集用户反馈,评估用户体验。
- 根据反馈进行迭代改进。