本文主要是介绍前后端项目部署到服务器后,用户访问浏览器时,前后端如何运行的整个流程,前端以React为例,后端以SpringBoot为例
本文部分内容手打,存在问题的地方请各位指正。
通常需要遵循以下步骤:
- 构建React项目
- 部署React项目
- 构建Spring Boot项目
- 部署Spring Boot项目
- 解决跨域问题
- 前后端交互
- 用户访问
一、构建React项目
前端项目采用React框架为例,常见的React项目一般使用npm run build或yarn build命令来构建项目(Windows下使用cmd命令提示符:对应的项目的目录下使用),构建完成后会生成一个build文件夹或者dist文件夹,这个目录下就是生成优化后的项目的打包的静态文件(如HTML、CSS、JavaScript等)。
二、部署React项目
将构建后的静态文件部署到Web服务器上,如Nginx或Apache。这些服务器负责提供静态文件服务,确保用户能够通过浏览器访问到React应用的页面。
Web服务器,也称为网站服务器,是指驻留于因特网上某种类型计算机的程序。这些程序可以处理来自浏览器等Web客户端的请求,并返回相应的响应。Web服务器的作用主要是提供网上信息浏览服务,响应终端的服务请求,并进行处理。同时,它还具有存储的功能,可以存储大量的信息,供用户访问和下载。
Web服务器的主要功能包括:
1)响应并处理终端的服务请求:
用户通过Web浏览器或其他HTTP客户端发送请求时,Web服务器会接收并解析这些请求,然后根据请求的内容和相关配置执行相应的操作,如从文件系统中获取请求的文件、执行动态脚本、处理数据库请求等。
2)存储功能:
Web服务器通常具有充足的存储空间,可以存储大量的信息,包括网页、图像、CSS和JavaScript文件等,供用户访问和下载。
常见的Web服务器软件有以下几种:
Apache HTTP Server:Apache是目前最流行的Web服务器之一,具有跨平台、高可靠性、高性能、模块化设计、开源等优势。它支持各种操作系统,包括Windows、Linux和Mac等,广泛应用于各类网站的开发和部署。
Nginx:Nginx是一款轻量级的Web服务器,具有高性能、高并发、低内存消耗、可扩展性好等优势。它特别适用于处理高流量的网站,如大型门户网站、电子商务网站等。
配置Web服务器以提供静态文件服务,并确保能够正确响应React应用的路由请求。
三、构建Spring Boot项目
使用Maven或Gradle构建Spring Boot项目,并生成可执行的JAR或WAR文件。确保Spring Boot应用中的API端点与React前端代码中定义的请求路径相匹配。
四、部署Spring Boot项目
将生成的JAR或WAR文件部署到应用服务器上,如Tomcat、Jetty或直接在服务器上运行JAR文件。配置服务器以运行Spring Boot应用,并确保应用的端口(默认为8080)是开放的。
Tomcat:Tomcat是一款用于Java应用程序的Web服务器,具有跨平台、开源、易于扩展等优势。它主要用于Java Web应用程序的开发和部署,如Servlet、JSP等。
五、解决跨域问题
在React与Spring Boot项目之间的前后端交互中可能会遇到跨域问题,跨域问题为什么会出现?
如果React应用运行在端口3000上,而Spring Boot后端服务运行在端口8080上,那么直接从React应用发送Ajax请求到Spring Boot后端就会遇到跨域问题。
总的来说:跨域指的是在一个域名下的网页去请求另一个域名下的资源时,由于浏览器的同源策略限制,导致请求被阻止。
有多种办法解决,以下是其中两种:
1)部署在同一域名和端口下:
如果可能的话,将前端和后端的项目部署在同一个域名和端口下。这是最直接的解决方式,因为同源策略(Same-Origin Policy)不会阻止同一域名和端口下的请求。
2)在Spring Boot后端配置CORS(跨来源资源共享):
在Spring Boot后端中配置CORS允许来自React应用的请求访问。可以通过在Spring Boot的配置类中添加CORS相关的注解或配置实现。
例如,可以使用@CrossOrigin注解在Controller层允许跨域请求,或者使用WebMvcConfigurer接口自定义CORS配置。
3)使用代理服务器:
在开发阶段,可以通过配置代理服务器来解决跨域问题。代理服务器可以接收React应用的请求,并转发给Spring Boot后端,然后将响应返回给React应用。这样,React应用的请求和响应都通过代理服务器进行,避免了浏览器的同源策略限制。在Webpack的开发服务器中,可以通过配置proxy字段来实现代理。
六、前后端交互
当React应用需要发送API请求时,它会通过配置的API端点向后端Spring Boot应用发送请求。Spring Boot应用会处理这些请求,并返回相应的数据。
七、用户访问
当用户通过浏览器访问React应用时,Web服务器会提供静态文件,并根据前端路由规则处理页面导航。
当React应用需要发送API请求时,它会向配置的API端点发送请求与后端应用进行通信,这些请求会由Spring Boot应用处理并返回数据。
八、用户访问的整个流程
[用户浏览器] (用户访问)
|
V
[Web服务器 (如Nginx)]
|
| (静态文件服务)
| (API请求代理)
V
[React应用 (静态文件)]
|
| (前端路由处理)
| (API请求)
V
[Spring Boot应用]
|
| (处理API请求)
| (返回数据)
V
[Web服务器]
|
V
[用户浏览器] (显示数据)