- Web 服务器是一种计算机程序,它通过 HTTP 协议接收和响应客户端发送的请求。Web 服务器将 HTML、CSS、JavaScript 和其他资源文件发送给客户端,以便在浏览器中显示网站的内容。
- 它允许用户通过 Web 浏览器访问 Web 页面和其他 Web 资源。Web 服务器可以根据 HTTP 协议(HyperText Transfer Protocol)接收和处理来自 Web 浏览器的请求,并将响应返回给浏览器。
- 浏览器是客户端,web 服务器是服务器端。浏览器通过 HTTP 协议向 web 服务器发送请求,web 服务器接收请求并返回响应,通常是一个 HTML 页面。浏览器解析 HTML 页面并显示给用户。
-
Apache: Apache是一款功能强大的 Web 服务器,可以运行在多种操作系统上,支持多种协议(如 HTTP、HTTPS 等)。Apache 可以通过模块扩展功能,例如支持 PHP、Perl 等语言。
-
Tomcat: Tomcat是一个 Java Web 服务器,它是 Apache Software Foundation 的一个项目。Tomcat 主要用于部署 Java Servlet 和 JavaServer Pages(JSP)技术,支持 Java EE 规范。Tomcat 与 Apache 可以集成使用,共同提供 Web 服务。
-
Nginx: Nginx是一款高性能的 Web 服务器和反向代理服务器,它主要用于在服务器前端处理静态文件和 SSL 加密。Nginx 可以与 Tomcat 等后端服务器配合使用,提高 Web 应用的性能。
总结:Apache、Tomcat 和 Nginx 都是 Web 服务器,它们可以相互配合使用,根据需求部署在不同的位置。Apache 和 Tomcat 集成可以提供完整的 Java Web 服务;Nginx 作为反向代理服务器,可以提高 Web 应用的性能。
MVC架构
MVC 架构是一种软件设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。这种架构模式有助于分离关注点,提高代码的可重用性和灵活性。
- 模型(Model):负责处理应用程序中的数据和业务逻辑。它可以是数据表、对象或其他表示数据的方式。
- 视图(View):负责向用户显示模型中的数据。视图可以是 HTML 页面、文本文件或其他形式的可视化表示。
- 控制器(Controller):负责处理用户输入并与模型和视图进行交互。它可以根据用户的请求更新模型中的数据,并通知视图进行相应的更新。
MVC 架构的优点包括:
- 分离关注点:将应用程序的不同方面划分为独立的组件,有助于各个组件专注于自己的任务。
- 可重用性:每个组件都可以在其他应用程序中重复使用,提高了代码的复用率。
- 灵活性:MVC 架构可以根据需求进行调整和扩展,以满足不同的功能需求。
总之,MVC 架构是一种结构清晰、模块化程度高的软件设计模式,广泛应用于各种类型的应用程序。
Web 项目运行过程
-
客户端发起请求:当用户访问一个网页或点击一个链接时,客户端(如浏览器)会向 Web 服务器发起一个 HTTP 请求。
-
Web 服务器接收请求:Web 服务器接收到客户端的请求后,会根据请求的 URL 找到对应的网站目录和文件,然后将请求转发给对应的处理程序(如 Servlet、PHP 脚本等)。
-
处理请求:处理程序接收到请求后,会根据请求类型(如 GET、POST 等)执行相应的操作,如查询数据库、处理表单提交等,然后生成 HTML 页面或其他格式的响应。
-
生成响应:处理程序生成响应后,会将响应内容返回给 Web 服务器。Web 服务器会对响应进行封装,并生成一个 HTTP 响应报文,然后将其发送回客户端。
-
客户端接收响应:客户端接收到 HTTP 响应报文后,会对其进行解析,并根据响应内容呈现相应的页面或更新页面状态。
-
结束请求:客户端和服务器之间的 HTTP 请求和响应完成后,会关闭连接。
整个过程可以概括为:客户端发起请求 -> Web 服务器接收请求 -> 处理请求 -> 生成响应 -> 客户端接收响应 -> 结束请求。
负载均衡和反向代理
- 负载均衡(Load balancing)是一种将网络流量分配到多个计算资源上的技术,以实现更高的性能、可靠性、容错能力和安全性。负载均衡通常用于服务器集群、数据库集群和网络设备集群等场景,以提高系统的可用性和可扩展性。
- 反向代理(Reverse proxy)是一种网络代理服务,它位于客户端和目标服务器之间,充当客户端与目标服务器之间的中转站。反向代理的主要作用是接收客户端的请求,将其转发给目标服务器,然后将服务器返回的结果返回给客户端。反向代理可以提高服务器的安全性、性能和可扩展性,同时也可以隐藏服务器的真实 IP 地址和实现负载均衡等功能。常见的反向代理服务器有 Nginx、Apache 等。
持久化Java对象
- 持久化 Java 对象是指将 Java 对象的状态转换为一种可以保存到磁盘或数据库中的形式,以便在需要时可以重新读取和恢复。这样做可以避免在程序运行过程中丢失对象的状态信息。
JPA
- JPA(Javaa Persistence API)一种用于持久化 Java 对象到关系型数据库的标准API。它提供了一种规范,用于定义应该如何将 Java 对象映射到数据库表,以及如何在 Java 应用程序中保存和检索这些对象。JPA的实现可以是开源的,也可以是商业的,例如 Hibernate【一个开源的对象关系映射(ORM)框架,用于将 Java 对象与数据库表中的记录相关联。它提供了持久化、查询和事务管理等功能,使 Java 程序员可以更轻松地使用对象编程思维来操作数据库。】、EclipseLink 等。
web开发中,会使用哪些中间件
- 路由中间件(Router Middleware):用于处理URL路由和请求分发,将请求发送到相应的处理程序或控制器。
- 身份验证中间件(Authentication Middleware):用于验证用户身份,通常涉及用户登录、注册、会话管理等功能。
- 日志中间件(Logging Middleware):用于记录请求和响应的日志信息,方便开发者进行调试和错误追踪。
- 错误处理中间件(Error Handling Middleware):用于捕获和处理应用程序中的错误,返回适当的错误响应或执行相应的错误处理逻辑。
- 静态文件中间件(Static Files Middleware):用于处理静态文件(如CSS、JavaScript、图像等)的请求,提供静态文件的访问和缓存功能。
- 数据库中间件(Database Middleware):用于连接和操作数据库,执行数据库查询和更新操作。
- 缓存中间件(Caching Middleware):用于缓存经常访问的数据或页面,提高应用程序的性能和响应速度。
- 压缩中间件(Compression Middleware):用于对响应数据进行压缩,减少传输数据量,提高网络传输效率。