diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..485dee6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea diff --git a/docs/chapter01.md b/docs/chapter01.md new file mode 100644 index 0000000..900c8e7 --- /dev/null +++ b/docs/chapter01.md @@ -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监控系统性能。 + - 根据监控数据调整系统配置。 + +- **维护与升级** + - **软件维护周期** + - 定期检查和修复已知问题。 + - 实施新功能和改进。 + - **版本管理与发布策略** + - 使用语义版本控制。 + - 制定明确的发布计划和时间表。 + - **用户反馈与迭代改进** + - 收集用户反馈,评估用户体验。 + - 根据反馈进行迭代改进。 + \ No newline at end of file diff --git a/docs/chapter02.md b/docs/chapter02.md new file mode 100644 index 0000000..81fe9f8 --- /dev/null +++ b/docs/chapter02.md @@ -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¶m2=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引入了新的语义标签如`
`、`