c语言编程笔录

首页 >   > 笔记大全

笔记大全

在Springboot项目中内嵌Tomcat时怎么使用start

更新时间:2023-11-15

第一段:为什么要在Springboot项目中内嵌Tomcat

Springboot是一种轻量级、简单易用的Java开发框架,它的出现使得Java开发变得更加高效和简单。然而,与其他基于Java的开发框架相同,Springboot也需要一个应用服务器来运行。在这里,我们推荐使用内嵌Tomcat作为Springboot的应用服务器。内嵌Tomcat有以下优势:

  • 无缝集成:内嵌Tomcat是Springboot的默认嵌入式web容器,使用会更加简便高效
  • 简单快捷:开发人员不需要安装繁琐的服务器软件,您可以直接在代码中启动Tomcat,启动速度更快
  • 高效稳定:与外部容器的性能和稳定性相比,内嵌Tomcat具有优势

第二段:使用内嵌Tomcat启动Springboot项目

在Springboot项目中,嵌入式Tomcat已默认引入,我们只需要编写启动类,并在这个类中通过SpringApplication.run方法启动整个应用即可。


package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

以上为启动类的代码示例,其核心部分为调用SpringApplication.run方法。在传入启动类本身以及main方法中传入的参数的情况下,该方法将自动扫描项目中包含的所有@Component注解类并启动嵌入式Tomcat。

第三段:使用内嵌Tomcat部署Springboot项目

在开发完Springboot项目后,我们需要将其部署到服务器上供用户使用。

首先,我们需要将项目打包成可执行jar包。在Springboot项目的pom.xml文件中,加入以下配置代码即可:



    
        
        
            org.springframework.boot
            spring-boot-maven-plugin
        
    
    

当配置好打包jar包的pom.xml后,我们在项目根目录上运行以下命令:


mvn package

打包成功后,项目的根目录下会生成一个名为xxx.jar的文件,其中xxx为项目名称。通过以下命令即可在服务器上启动Springboot应用:


java -jar xxx.jar

此时,嵌入式Tomcat已经成功启动了,并且应用服务器的默认端口为8080。

第四段:使用内嵌Tomcat部署静态资源

在部署静态资源时,我们需要将静态资源文件夹放在项目的根目录下(即与src同级)。在项目中编写静态资源文件访问方法如下:


@GetMapping("/static/{name}")
public void accessStaticResource(@PathVariable("name") String name, HttpServletResponse response) throws Exception {
    // 获取静态资源文件夹的绝对路径
    String staticPath = new File(System.getProperty("user.dir")).getAbsolutePath() + File.separator + "static" + File.separator;
    // 获取要访问的文件的路径
    String filePath = staticPath + name;
    // 根据文件路径获取文件
    File file = new File(filePath);
    // 判断文件是否存在,如果存在则以流的形式返回
    if (!file.exists()) {
        // 文件不存在,抛出404错误
        response.setStatus(HttpServletResponse.SC_NOT_FOUND);
        return;
    }
    try (InputStream inputStream = new FileInputStream(file);
         OutputStream outputStream = response.getOutputStream()) {
        byte[] data = new byte[1024];
        while (inputStream.read(data) != -1) {
            outputStream.write(data);
        }
        outputStream.flush();
    }
}

以上代码可以实现访问项目根目录下的all.js文件,返回文件的内容。访问方法为http://localhost:8080/static/all.js。其中,8080为应用服务器默认端口,而all.js是我们要访问的静态资源文件。